day35-NFS优化及优缺点

day35-NFS优化及优缺点,第1张

all_squash 不管客户端什么用户,到服务端都是nfsnobobody

anonuid=匿名用户的UID

anongid=匿名用户的GID

当多个NFS客户端访问服务器端的读写文件时,需要具有以下几个权限。

客户端挂载深入

优化参数

文件系统只读故障/包括/fstab故障

方法:救援模式修复

单用户 mount -o remount,rw /

NFS服务器出问题时候,客户端重启依然能够启动,可以使用下列两种方法

defaults,soft

defaults,hard,intr

内核优化c6

cat >>/etc/sysctl.conf<<EOF

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

EOF

sysctl -p命令生效

□ 简单,容易上手,容易掌握。

□ NFS 文件系统内数据是在文件系统之上的,即数据是能够看得见的。

□ 部署快速,维护简单方便,且可控,满足需求就是最好的。

□ 可靠,从软件层面上看,数据可靠性高,经久耐用。数据是在文件系统之上的。

□ 服务非常稳定。

□ 存在单点故障,如果NFS Server宕机了,所有客户端都不能访问共享目录。这个在后期

会通过负载均衡及高可用方案弥补。

□ 在大数据高并发的场合,NFS效率,性能有限(2千万/日以下PV的网站不是瓶颈,除非

网站网站架构设计太差)。

□ 客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般(用于内网则问题

不大)。

□ NFS数据是明文的,NFS本身不对数据完整性进行验证。

□ 多台客户机器挂载一个NFS服务器时,连接管理维护麻烦(耦合度高)。尤其当NFS服务

端出问题后,所有NFS客户端都处于挂掉状态(测试环境可使用autofs自动挂载解决,

正式环境可修复NFS服务或强制卸载)。

□ 涉及了同步(实时等待)和异步(解耦)的概念,NFS服务器端和客户端相对来说就是

耦合度有些高。网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职

责就是为程序及架构解耦,让网站的扩展性变得更好。

应用建议:

对于大中小型网站(参考2000万/日PV以下)线上应用,都有用武之地。门户网站也会有应用,生产场景应该多将数据的访问往前推,即尽量将静态存储里的资源通过CDN或缓存服务器提供服务,如果没有缓存或架构不好,存储服务器数量再多也是扛不住压力的,而且用户体验会很差。

showmount 命令说明

showmount命令一般用于从NFS客户端检查NFS服务器端共享目录的情况。

五一节办公室要停电,机房虽有UPS,但也支撑不了8小时。

因生产环境有业务系统挂了办公室机房的NAS存储,故需要进行迁移,步骤记录如下:

先闲谈下技术-----------------------

NFS和samba的区别

samba是混合型网络中的共享服务,windows服务器可建samba服务,linux服务器也可建samba服务

nfs只面向unix、linux间的共享,linux服务器可建nfs服务(winodws系统也可以挂载nfs,就是有点不稳定)

NFS服务器上的操作--------------------------

nfs服务器操作系统版本:

[root@c7110 ~]# more /etc/system-release

CentOS Linux release 7.9.2009 (Core)

nfs服务器安装nfs服务

[root@c7110 ~]# yum -y install nfs-utils rpcbind

创建nfs目录,并授权

[root@c7110 ~]# mkdir /opt/nfs-test

[root@c7110 ~]# chmod 777 /opt/nfs-test

编辑nfs服务配置文件

[root@c7110 ~]# vi /etc/exports

内容如下:

/opt/nfs-test *(rw,root_squash,all_squash,sync)

重新加载nfs配置:

[root@c7110 ~]# exportfs -r

nfs服务设置开机启动

[root@c7110 ~]# systemctl enable rpcbind

[root@c7110 ~]# systemctl enable nfs

[root@c7110 ~]# systemctl enable nfs-lock

[root@c7110 ~]# systemctl enable nfs-idmap

启动nfs服务

[root@c7110 ~]# systemctl start rpcbind

[root@c7110 ~]# systemctl start nfs

[root@c7110 ~]# systemctl start nfs-lock

[root@c7110 ~]# systemctl start nfs-idmap

查看nfs服务启动后,所监听的端口信息:

[root@c7110 ~]# rpcinfo -p

linux服务器服务器上操作-------------------------------

业务服务器安装nfs软件客户端

[root@c7111 ~]# yum -y install nfs-utils

建立一个挂载目录

[root@c7111 ~]# mkdir /opt/test-m

挂载nfs服务器共享出来的目录

[root@c7111 ~]# mount -t nfs 10.x.x.10:/opt/nfs-test /opt/test-m/

查看下已挂载的nfs

[root@c7111 ~]# df -h

Filesystem Size Used Avail Use% Mounted on

devtmpfs 1.5G 0 1.5G 0% /dev

tmpfs 1.5G 0 1.5G 0% /dev/shm

tmpfs 1.5G 8.8M 1.5G 1% /run

tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup

/dev/mapper/centos-root 97G 2.3G 95G 3% /

/dev/sda1 1014M 171M 844M 17% /boot

tmpfs 297M 0 297M 0% /run/user/0

10.x.x.6:/opt/nfs-test 97G 4.1G 93G 5% /opt/test-m

经测试,数据可读可写,证明nas服务没有问题,于是进行数据同步,数据同步用rsync命令。

rsync -avp gdsz@10.87.5.6::nas_6 /mnt/guidang/ --password-file=/root/rsync_pass --bwlimit=100000

数据同步完,通知研发进行挂载切换。研发同事在测试时,发现文件属性中的uid及gid与原来的不一致,有些担心,于是又小完善了一下NFS服务。

编辑nfs服务配置文件

[root@c7110 ~]# vi /etc/exports

内容如下:

/opt/nfs-test *(no_all_squash,anonuid=600,anongid=600)

重新加载nfs配置:

[root@c7110 ~]# exportfs -r

NFS(Network File System),网络文件存储系统,它最早是由 Sun 公司开发的,也是 FreeBSD 支持的文件系统中的一个,它允许网络中的计算机之间通过TCP/IP 网络共享资源。通过 NFS 协议,我们本地 NFS 的客户端应用可以透明的读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机,不同的操作系统可以共享存储的服务。

NFS 在文件传送或信息传送过程中依赖 RPC(Remote Procedure Call)协议,即远程过程调用,NFS的各项功能都必须向 RPC 来注册,如此一来 RPC 才能了解 NFS 这服务的各项功能 Port,PID,NFS 在服务器所监听的 IP 等,而客户端才能透过 RPC 的询问找到正确对应的端口,所以 NFS 必须要有 RPC 存在是才能成功的提供服务,简单的理解二者关系:NFS 是一个文件存储系统,而 RPC 是负责信息的传输。

通过上面的简介,我们知道 NFS 服务需要依赖 RPC 服务,所以这里 NFS 服务端需要安装 rpcbind 和 nfs-utils ,客户端只需要安装 nfs-utils 即可,由于我们选用 CentOS 系统,所以可以使用 yum 快速的安装。

然后安装 NFS 服务

另:Ubuntu 16.04 安装命令

我们在服务端创建一个共享目录 /data/share ,作为客户端挂载在远端入口,然后设置权限

然后,修改 NFS 配置文件 /etx/exports

说明一下,这里配置后边有很多参数,每个参数有不同的含义,具体可以参考下边。此处,我配置了将 /data/share 文件目录设置为允许IP为 192.168.0.0/24 区间的客户端挂载。然后,如果客户端IP不在该区间也想要挂载的话,可以设置IP区间更大或者设置为 * 即允许所有客户端挂载,例如: /home *(ro, sync,insecure,no_root_squash) 设置 /home 目录允许所有客户端只读挂载。

接下来,我们先启动 RPC 服务

我们发现,启动了 NFS 服务后,RPC 注册的端口列表明显增多。现在服务端都启动起来了,在服务端看下是否正确加载了设置的 /etc/exports 配置

最后,在另一台Linux虚拟机上测试一下,是否能够正确挂载。首先,我们可以在客户端查看下NFS服务端设置可共享的目录信息

然后,在客户端创建挂载目录/share

最后,挂载远端目录到本地 /share 目录

可以看到,可以正确将远端 NFS 目录挂载到本地。注意:挂载点 /share 目录必须已经存在,而且目录中没有文件或子目录

最后,我们在 NFS 服务端 /data/share 目录下创建一个文件,看下客户端能否正确读取并修改

都可以了,这里因为上面设置了 NFS 远端目录权限为 rw 拥有读写权限,如果设置为 ro ,那么客户端只能读取,不能写入。根据实际应用场景合理配置。

NFS 默认使用 UDP协议进行挂载,为了提供 NFS 的稳定性,可以使用 TCP 协议挂载,那么客户端挂载命令如下:

最后,卸载命令


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/717491.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-08
下一篇2023-08-08

发表评论

登录后才能评论

评论列表(0条)

    保存