服务端
IP:10.10.0.1
安装 NFS 服务
yum install -y nfs-utils rpcbind
nfs-utils包提供了NFS服务器程序和相应的管理工具
rpc则是能够获得nfs服务器端的端口号等信息
检查是否启动了rpcbind服务并监听着 111端口
netstat -tunlp | grep 111
创建共享目录
在服务器端创建 /nfs 目录
mkdir /nfs
编写配置文件
vim /etc/exports
#[任意主机所有权限]
/nfs *(rw,sync,insecure,no_subtree_check,no_root_squash)
启动 NFS 服务
systemctl start nfs
设置开机启动
systemctl enable rpcbind.service
systemctl enable nfs-server.service
常用命令工具
#在安装 NFS 服务器时,已包含常用的命令行工具,无需额外安装
#显示已经 mount 到本机 NFS 目录的客户端机器
sudo showmount -e localhost
#将配置文件中的目录全部重新 export 一次,无需重启服务
sudo exportfs -rv
#查看 NFS 的运行状态
sudo nfsstat
#查看 rpc 执行信息,可以用于检测 rpc 运行情况
sudo rpcinfo
客户端
IP: 10.10.0.2
在客户端机器安装nfs-utils和rpcbind包
yum install -y nfs-utils rpcbind
设置开机启动
systemctl enable rpcbind.service
创建本地挂载目录
mkdir -p /data-ext/nfs
查看 NFS 服务器上的共享目录
showmount -e 10.10.0.1 #服务端IP
问题:clnt_create: RPC: Port mapper failure - Timed out
挂载共享目录
mount -t nfs 10.10.0.1:/nfs /data-ext/nfs
问题:mount.nfs: Connection timed out
3.解决问题
nfs服务端防火墙策略配置
问题
客户端无法进行showmount及挂载操作
原因分析
nfs服务端未开放相关服务组件访问端口
查看服务端rpc状态信息,其中mountd 和nlockmgr 服务启动端口不固定
rpcinfo -p
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 35305 status
100024 1 tcp 39682 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 59811 nlockmgr
100021 3 udp 59811 nlockmgr
100021 4 udp 59811 nlockmgr
100021 1 tcp 34641 nlockmgr
100021 3 tcp 34641 nlockmgr
100021 4 tcp 34641 nlockmgr
确认nfs相关服务组件及端口占用如下
服务名称 |
端口名称 |
协议名称 |
备注 |
nfs |
2049 |
tcp/udp |
端口固定 |
portmapper |
111 |
tcp/udp |
端口固定 |
mountd |
20048 |
tcp/udp |
端口不固定,需人为修改固定 |
nlockmgr |
34641/59811 |
tcp/udp |
端口不固定,需人为修改固定 |
更改相关服务为固定端口
更改mountd 服务端口为20048
echo "mountd 20048/tcp" >> /etc/services
echo "mountd 20048/udp" >> /etc/services
更改nlockmgr 服务端口为42315
echo "fs.nfs.nlm_udpport=42315" >> /etc/sysctl.conf
echo "fs.nfs.nlm_tcpport=42315" >> /etc/sysctl.conf
sysctl -p
结论:nlockmgr服务端口更新没有效果,可能与源地址设置有关,有带验证
问题解决
服务端防火墙开放2049 、111 、20048 、59811、34641 端口
端口 |
协议 |
源地址 |
111 |
tcp/udp |
0.0.0.0/0 |
2049 |
tcp/udp |
0.0.0.0/0 |
20048 |
tcp/udp |
0.0.0.0/0 |
59811 |
udp |
0.0.0.0/0 |
34641 |
tcp |
0.0.0.0/0 |
重新挂载
mount -t nfs 10.10.0.1:/nfs /data-ext/nfs
showmount -e 10.10.0.1
查看客户端挂载信息
df -h
10.10.0.1:/nfs 40G 6.1G 32G 17% /data-ext/nfs