【NAS】NFS深入实践

NFS-NetworkFileSystem的缩写,NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。NFS server也可以看作是一个FILE SERVER,它可以让你的PC通过网络将远端得NFS SERVER共享出来的档案MOUNT到自己的系统中,在CLIENT看来使用NFS的远端文件就象是在使用本地文件一样。

 

1.1   系统环境

操作系统:

CentOS 7.2 1511

软件版本:

samba-4.2.3-10.el7.x86_64.rpm;rpcbind-0.2.0-32.el7.x86_64

Samba Server IP:

192.168.192.91

防火墙已关闭/iptables:

Firewall is notrunning.

SELINUX=disabled

 

1.2   软件安装

在可以联网的机器上使用yum工具安装,如果未联网,则挂载系统光盘进行安装。

[root@node2 ~]# yum install nfs-util rpcbind

有依赖关系的包将自动安装上去。

若未配置yum源,直接将安装光盘解压,从Packages目录下获取nfs-util和rpcbind安装包,在安装过程中,缺少哪个rpm包,则查找并安装之(相关的rpm包均在Packages目录下)。

 

1.3   服务管理

1.3.1    NFS服务

NFS服务可用通过systemctl来管理。

1. 服务启动

[root@node1 ~]# systemctl start nfs-server

[root@node1 ~]#

2. 服务停止

[root@node1 ~]# systemctl stop nfs-server

[root@node1 ~]#

3. 服务重启

[root@node1 ~]# systemctl restart nfs-server

[root@node1 ~]#

4.查看服务状态

[root@node1 ~]# systemctl status nfs-server

● nfs-server.service - NFS server and services

   Loaded:loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset:disabled)

   Active:inactive (dead)

[root@node1 ~]#

 

5. 设置服务开机启动

[root@node1 ~]# systemctl enable nfs-server

[root@node1 ~]#

6. 取消服务开机启动

[root@node1 ~]# systemctl disable nfs-server

[root@node1 ~]#

 

如何验证rpc是否支持NFS

[root@node1 ~]# rpcinfo -u localhost nfs

rpcinfo: RPC: Program not registered

program 100003 is not available

[root@node1 ~]# systemctl start nfs

[root@node1 ~]# rpcinfo -u localhost nfs

program 100003 version 3 ready and waiting

program 100003 version 4 ready and waiting

[root@node1 ~]#

 

 

 

1.4   配置文件

NFS服务的配置文件为/etc/export

1.4.1    参数解析

NFS主要有3类选项:

1.4.1.1     访问权限选项

设置输出目录只读:ro

设置输出目录读写:rw

 

1.4.1.2     用户映射选项

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash:与all_squash取反(默认设置);

root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash:与rootsquash取反;

anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

 

1.4.1.3     其它选项

secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

insecure:允许客户端从大于1024的tcp/ip端口连接服务器;

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);

no_wdelay:若有写操作则立即执行,应与sync配合使用;

subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

 

1.4.2      配置文件

配置文件正确性检查:

[root@node1 ~]# cat /etc/exports

/mnt/mypceph *(rw,sync,no_root_squash,fsid=2)

 

1.5   客户段命令与参数解析

客户端为192.168.192.92,node2

1.5.1    客查询命令showmount

showmout命令对于NFS的操作和查错有很大的帮助,showmount的用法 :

[root@node0 ~]# showmount -h

Usage: showmount [-adehv]

      [--all] [--directories] [--exports]

      [--no-headers] [--help] [--version] [host]

[root@node0 ~]#

-a :这个参数是一般在NFSSERVER上使用,是用来显示已经mount上本机nfs目录的cline机器。 

-e :显示指定的NFSSERVER上export出来的目录。 

例如:

[root@node2 ~]# showmount -e 192.168.192.91

Export list for 192.168.192.91:

/mnt/test *

[root@node2 ~]#

 

1.5.2    挂载NFS共享目录

挂载命令格式为:

mount -t nfs [-o<参数>] <hostname/IP>:/export_dir_path /mountpoint

实例:

[root@node2 ~]# mount -t nfs -o nolock 192.168.192.91:/mnt/nfsshare/mnt/test/

mount nfs的其它可选参数: 

hard: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到mount上。 

soft:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。 例如:

[root@node2 ~]# mount -t nfs -o nolock,hard192.168.192.91:/mnt/nfsshare /mnt/test/

对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。

rsize/wsize: 文件传输尺寸设定:V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响 

bg:在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度) 

fg:和bg正好相反,是默认的参数 

nfsvers=n:设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER3 

mountport:设定mount的端口 

port:根据server端export出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定 

timeo=n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。 

intr : 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。 

udp:使用udp作为nfs的传输协议(NFS V2只支持UDP) 

tcp:使用tcp作为nfs的传输协议

namlen=n:设定远程服务器所允许的最长文件名。这个值的默认是255 

acregmin=n:设定最小的在文件更新之前cache时间,默认是3 

acregmax=n:设定最大的在文件更新之前cache时间,默认是60 

acdirmin=n:设定最小的在目录更新之前cache时间,默认是30 

acdirmax=n:设定最大的在目录更新之前cache时间,默认是60 

actimeo=n:将acregmin、acregmax、acdirmin、acdirmax设定为同一个数值,默认是没有启用。

retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutes 

noac:关闭cache机制。

同时使用多个参数的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs 

请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页