共计 3040 个字符,预计需要花费 8 分钟才能阅读完成。
NFS 是古老的协议了,到了 Linux 不断更新和完善,从以前只支持 UDP,现在支持 TCP,现在到了 V4 版本。不过还是不安全,最大的毛病就是不需要身份认证,也只建议在内网用一下。
NFS 一方是服务方,一方是客户端。
客户端使用需要启用 portmap 服务(service portmap start),不然不能接入,有很多文章说需要启用 NFS 相关的服务,其实作为客户端是不必的,portmap 作为 RPC 接入服务就可以了。而到了 CentOS6,portmap 就没有了,而变成了 rpcbind,默认是开启的,就不需要再麻烦处理了。
服务器端默认是安装了,但是没有启用。
无论是 portmap 还是 rpcbind 都在网络上监听 UDP 和 TCP 的 111 端口
NFS 监听在 UDP 和 TCP 的 2049 端口,还有些动态的下面在细说。
它的共享目录配置文件在 /etc/exports,服务配置文件在 /etc/sysconfig/nfs
共享目录
/var/tmp/share 172.26.1.0/24(rw,no_all_squash)
一般就是目录位置和许可 IP 地址范围加(),括号里规定了读写 rw 还是只读 ro,
是规定了服务器和客户端里 Linux 用户的映射关系,no_all_squash 是映射用户和组的关系,但不包括 root,all_squash 映射到匿名组以及匿名用户,就是所谓的 nfsnobody,如果客户端没有安装 NFS,那么它的所有者和组就是 65534,其实 nfsnobody 就是 65534,如果启用 NFS 服务就会建立起组,就会自动映射出组的名字,其实最本质的就是组的以及用户的数字号码,比如 root 用户就是 0,root 组也是 0。root_squash 是把 root 映射为匿名,no_root_squash 是 root 映射为 root,还有 anonuid=xxx,anongid=xxx 映射为指定的用户和组,xxx 就是用户和组的数字号码。
其它一些参数基本上用不上。比如:sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;async:将数据先保存在内存缓冲区中,必要时才写入磁盘。
服务配置文件
这个文件一般是不进行配置,默认就可以了。
但是当启用了防火墙 iptable 就不得不配置了。
通过抓包可以看到,nfs 的连接过程不仅仅需要 111 和 2049 端口,还有些动态的端口,这些动态的端口在每次重启动 nfs 服务都会变化,iptable 防火墙看可没有那么智能可以动态的打开端口,这时候就需要固化监听的端口了。
编辑 /etc/sysconfig/nfs 文件
RQUOTAD_PORT=875
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
我没改端口号,就是把 #去掉了。
重启服务
netstat -lpn | grep -v unix
tcp 0 0.0.0.0:892 0.0.0.0:* LISTEN 3959/rpc.mountd
tcp 0 0.0.0.0:875 0.0.0.0:* LISTEN 3954/rpc.rquotad
tcp 0 0 0.0.0.0:32803 0.0.0.0:* LISTEN –
udp 0 0 0.0.0.0:32769 0.0.0.0:* –
然后当然是配置防火墙,把这些端口加上了。
cat /etc/sysconfig/iptables
-A INPUT -p udp -m udp –dport 111 -j ACCEPT
-A INPUT -p udp -m udp –dport 32769 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 32803 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 892 -j ACCEPT
-A INPUT -p udp -m udp –dport 892 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 875 -j ACCEPT
-A INPUT -p udp -m udp –dport 875 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 2049 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 111 -j ACCEPT
服务器端
查看状态命令
nfsstat
查看配置
exportfs
查看 RPC 情况
rpcinfo -p
查看目前已经连进本机的情况
showmount -a
客户端
临时建立命令
mount 172.26.1.73:/var/tmp/share /home/shenxu/source
172.26.1.73 服务器 IP
/var/tmp/share 服务器共享的目录
/home/shenxu/source 映射到本地的目录
长期建立映射,编辑 /etc/fstab,添加下面一行
172.26.1.73:/var/tmp/share /home/shenxu/source nfs defaults 0 0
另外有些时候用 showmount - a 能看到根本没有的连接,是以前连接的痕迹,重启也还有。虽然没啥影响,但是我们追求完美,Linux 基本上都是以文件形式存在的,那么这个重启以后还有,肯定是存在硬盘上的某个文件,它就是 /var/lib/nfs/rmtab,清空需要清的项目就好。
————————————– 分割线 ————————————–
Ubuntu 12.04 安装 NFS server http://www.linuxidc.com/Linux/2012-09/70728.htm
NFS 服务器安装配置实现 Ubuntu 12.04 与 ARM 文件共享 http://www.linuxidc.com/Linux/2012-10/73159.htm
Ubuntu 搭建 nfs 服务器 http://www.linuxidc.com/Linux/2012-10/71930.htm
文件服务器 NFS 配置详解 http://www.linuxidc.com/Linux/2013-06/86542.htm
Ubuntu 下搭建 NFS 网络文件系统服务器 http://www.linuxidc.com/Linux/2013-07/87367.htm
Heartbeat_ldirector+LB+NFS 实现 HA 及 LB、文件共享 http://www.linuxidc.com/Linux/2013-06/85292.htm
CentOS 5.5 配置 NFS 服务器教程 http://www.linuxidc.com/Linux/2013-03/81737.htm
Ubuntu 12.10 下 NFS 的安装使用 http://www.linuxidc.com/Linux/2013-03/80478.htm
————————————– 分割线 ————————————–
更多 CentOS 相关信息见CentOS 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=14
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-07/120562.htm