NFS 就是 Network FileSystem 的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

分为NFS服务器和NFS客户端

本示例演示一台NFS服务器(192.168.1.10)和一台NFS客户端(192.168.1.20)的配置和挂载

一、服务端配置

1.安装NFS软件yum install -y nfs-utils

2.编辑exports(/etc/exports)文件/data/ 192.168.1.0/24(ro,fsid=0)

fsid=0表示将/data/目录包装成根目录

3.选项说明ro:共享目录只读;

rw:共享目录可读可写;

all_squash:所有访问用户都映射为匿名用户或用户组;

no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;

root_squash(默认):将来访的root用户映射为匿名用户或用户组;

no_root_squash:来访的root用户保持root帐号权限;

anonuid=:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);

anongid=:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);

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

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

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

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

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

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

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

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

4.启动NFS服务

先设置开机启动:(先启动rpcbind服务):systemctl enable rpcbind.service

systemctl enable nfs-server.service

然后手动启动rpcbind和nfs服务:systemctl start rpcbind.service

systemctl start nfs-server.service

查看是否启动NFS服务:exportfs

显示:/data/ 192.168.1.0/24

注意:如果已经启动NFS服务器,修改配置文件后需要使用exportfs -r命令生效最新配置

4.NFS相关命令exportfs

不重启nfs服务应用更新,相关选项如下:

-a 全部挂载或卸载 /etc/exports中的内容

-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab

-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)

-v 在export的时候,将详细的信息输出到屏幕上。

nfsstat

查看NFS的运行状态。

rpcinfo

查看rpc服务注册情况。

相关选项:

-p 显示所有的端口与程序信息。

示例:

rpcinfo -p localhost  #列出本机的RPC注册状况。

showmount

查询nfs共享目录信息,相关选项如下:

-a 显示已经于客户端连接上的目录信息

-e IP或者hostname 显示此IP地址分享出来的目录

示例:

showmount -e localhost  #查询本机nfs共享目录情况

showmount -a localhost  #查询本机共享目录连接情况

二、客户配置

1.安装NFS软件yum install -y nfs-utils

2.启动NFS服务

先设置开机启动:(不需要nfs-server.service):systemctl enable rpcbind.service

然后手动启动rpcbind服务:systemctl start rpcbind.service

3.检查是否可以挂载NFS服务(showmount -e nfs服务器的IP)showmount -e 192.168.1.10

这个时候一般是报错:clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

原因是服务端没开放端口,解决方法如下:(给192.168.1.20开放相关端口)

iptables -I INPUT -p tcp -s 192.168.1.20 --dport 111 -j ACCEPT
iptables -I INPUT -p udp -s 192.168.1.20 --dport 111 -j ACCEPT
iptables -I INPUT -p tcp -s 192.168.1.20 --dport 2049 -j ACCEPT
iptables -I INPUT -p udp -s 192.168.1.20 --dport 2049 -j ACCEPT
iptables -I INPUT -p tcp -s 192.168.1.20 --dport 20000:60000 -j ACCEPT
iptables -I INPUT -p udp -s 192.168.1.20 --dport 20000:60000 -j ACCEPT
注意:还有一种情况是服务端端口被占用了,也要注意下
通道建立完毕:showmount -e 192.168.1.10
Export list for 192.168.1.10:
/data/ 192.168.1.0/24
4.挂载NFS(请根据实际需要设置)cd /home && mkdir /data
mount -t nfs 192.168.1.10:/data/ /home/data/
5.查看挂载情况df -h
#可以看到192.168.1.10:/data/相应记录表示挂载成功