1. 安装nfs和rpcbind

yum install nfs-utils rpcbind
一般默认都有安装, 如果已安装可以跳过

2. 创建服务端共享目录

# 创建目录
mkdir -p /www/share_files
# 配置权限
chmod -R 777 /www/share_files

这里的/www/share_files就是服务端分享出来的目录

3. 配置nfs的配置文件

vi /etc/exports
文件中配置一行:

# /www/share_files 表示共享目录
# 192.168.1.4改成自己的IP
# (rw,sync,no_root_squash) 表示权限
/www/share_files 192.168.1.4(rw,sync,no_root_squash)

权限可选值参考:

rw:read-write,可读写; 注意,仅仅这里设置成读写客户端还是不能正常写入,还要正确地设置共享目录的权限,参考问题7
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。

4. 刷新配置

exportfs -r

5. 启动nfs和rpcbind服务

# 查看服务状态
systemctl status rpcbind
systemctl status nfs-server

# 启动服务
systemctl restart rpcbind
systemctl restart nfs-server

# 设置开机自启
systemctl enable rpcbind 
systemctl enable restart

6. 检测服务器的nfs状态

服务端检查:
showmount -e

[root@iZxe4Z share_files]# showmount -e
Export list for iZgw839moiwhkboospwxe4Z:
/www/share_files *

客户端检查:
showmount -e 192.168.1.4

[root@ip-192.168.1.3 centos]# showmount -e 192.168.1.4
Export list for 192.168.1.4:
/www/share_files *

7. 挂载服务端的共享目录

# 192.168.1.4:/www/share_files 服务端IP:目录
# /www/jump_share_files 客户端目录
mount -t nfs 192.168.1.4:/www/share_files /www/jump_share_files

常见问题

挂载失败

失败场景一:

第7步中如果挂载出现错误提示:clnt_create: RPC: Program not registered

[centos@ip-192.168.1.3 ~]$ showmount -e 192.168.1.4
clnt_create: RPC: Program not registered

解决办法:

  1. 在服务器上先停止rpcbind,
    systemctl stop rpcbind
  2. 然后在停止nfs
    systemctl stop nfs
  3. 最后在重启rpcbind和nfs,一定要按顺序启动和停止

    systemctl start rpcbind
    systemctl start nfs

失败场景二:

第7步中如果挂载出现错误提示:mount.nfs: access denied by server while mounting 192.168.1.4:/www/share_files

查看具体失败原因:
cat /var/log/messages | grep mount

Sep 23 17:52:20 iZj6cdspheuw91fen9pcvrZ rpc.mountd[20419]: refused mount request from 192.168.1.4 for /www/share_files (/www/share_files): unmatched host

解决办法:
重复第三步vi /etc/exports , 将IP改为*
/www/share_files *(rw,sync,no_root_squash)


YYGP
25 声望11 粉丝

写BUG