CentOS 7 NFS服务器和客户端设置


systemctl 服务管理,设置和管理服务略有不同。以下是为了提供Mac OS X客户端访问Linux NFS输出的卷实现数据备份的记录,NFS服务器设置见本文,Mac OS X挂载Linux的NFS输出见Mac OS X 挂载Linux卷(NFS)


设置Linux服务端

/data

mount /dev/sdb1 /data

在Paralles Desktop虚拟机运行的是CentOS 7操作系统,使用以下命令安装 NFS 支持

yum install nfs-utils nfs-utils-lib

设置nfs相关服务在操作系统启动时启动

systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap

启动nfs服务

systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap

/etc/exports

/data    10.211.55.0/24(rw,sync,no_root_squash,no_subtree_check)

/data – 共享目录

10.211.55.0/24 – 允许访问NFS的客户端IP地址段

rw – 允许对共享目录进行读写

sync – 实时同步共享目录

no_root_squash – 允许root访问

no_all_squash - 允许用户授权

no_subtree_check - 如果卷的一部分被输出,从客户端发出请求文件的一个常规的调用子目录检查验证卷的相应部分。如果是整个卷输出,禁止这个检查可以加速传输。

no_subtree_check - If only part of a volume is exported, a routine called subtree checking verifies that a file that is requested from the client is in the appropriate part of the volume. If the entire volume is exported, disabling this check will speed up transfers. Setting Up an NFS Server

NFS客户端挂载



yum install nfs-utils nfs-utils-lib




-t nfs

mount -t nfs  10.211.55.9:/data /data

/etc/fstab

10.211.55.9:/data    /data  nfs auto,rw,vers=3,hard,intr,tcp,rsize=32768,wsize=32768      0   0

在centos 7 的系统下面,可能会发生重启后无法mount 这个nfs的情况

解决办法:

1. 修改 /etc/rc.d/rc.local 的权限,增加执行权限

2. 在/etc/rc.d/rc.local下面 增加这样的一句语句

mount -a


-a的参数含义是:

-a, –all mount all filesystems mentioned in fstab

然后在客户端简单使用以下命令就可以挂载

mount /data

通过防火墙挂载NFS服务

在生产环境,可能会因为安全需求在NFS服务器和客户端之间部署防火墙。此时,NFS客户端挂载的时候会有如下输出报错

mount.nfs: Connection timed out

参考 Running NFS Behind a Firewall 设置防火墙允许访问NFS服务器的服务端口,注意,需要配置NFS服务使用固定端口。

MOUNTD_PORT=port
# Controls which TCP and UDP port mountd (rpc.mountd) uses.

STATD_PORT=port
# Controls which TCP and UDP port status (rpc.statd) uses.

LOCKD_TCPPORT=port
# Controls which TCP port nlockmgr (lockd) uses.

LOCKD_UDPPORT=port
# Controls which UDP port nlockmgr (lockd) uses.

/etc/sysconfig/nfs

# TCP port rpc.lockd should listen on.
LOCKD_TCPPORT=32803
# UDP port rpc.lockd should listen on.
LOCKD_UDPPORT=32769

MOUNTD_PORT=892
STATD_PORT=662

可以在Linux NFS服务器上执行以下命令获得NFS端口信息

rpcinfo -p

需要允许以下端口

NFS的TCP和UDP端口2049

rpcbind/sunrpc的TCP和UDP端口111

MOUNTD_PORT STATD_PORT LOCKD_TCPPORT LOCKD_UDPPORT

program vers proto   port  service
100000    4   tcp    111  portmapper
100000    3   tcp    111  portmapper
100000    2   tcp    111  portmapper
100000    4   udp    111  portmapper
100000    3   udp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  54305  status
100024    1   tcp  55604  status
100005    1   udp  20048  mountd
100005    1   tcp  20048  mountd
100005    2   udp  20048  mountd
100005    2   tcp  20048  mountd
100005    3   udp  20048  mountd
100005    3   tcp  20048  mountd
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100227    3   tcp   2049  nfs_acl
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100227    3   udp   2049  nfs_acl
100021    1   udp  32769  nlockmgr
100021    3   udp  32769  nlockmgr
100021    4   udp  32769  nlockmgr
100021    1   tcp  32803  nlockmgr
100021    3   tcp  32803  nlockmgr
100021    4   tcp  32803  nlockmgr
100011    1   udp    875  rquotad
100011    2   udp    875  rquotad
100011    1   tcp    875  rquotad
100011    2   tcp    875  rquotad

在 Linux NFS 服务器上使用以下命令开启iptables防火墙允许访问以上端口

firewall-cmd --permanent --add-port=2049/tcp
firewall-cmd --permanent --add-port=2049/udp
firewall-cmd --permanent --add-port=111/tcp
firewall-cmd --permanent --add-port=111/udp
firewall-cmd --permanent --add-port=892/tcp
firewall-cmd --permanent --add-port=892/udp
firewall-cmd --permanent --add-port=662/tcp
firewall-cmd --permanent --add-port=662/udp
firewall-cmd --permanent --add-port=32803/tcp
firewall-cmd --permanent --add-port=32769/udp

在 Linux NFS 服务器上使用以下命令重新加载防火墙规则

firewall-cmd --reload

不过,我实测还是存在访问问题,以后再验证

http://blog.huatai.me/2014/10/14/CentOS-7-NFS-Server-and-Client-Setup/