服务端
创建服务端共享目录
配置NFSv4服务器时,一个好的做法是使用全局NFS根目录,并将实际目录绑定到共享挂载点。
一般使用/srv/nfs4目录作为NFS根目录。
sudo mount --bind /var/www /srv/nfs4/www
重启后自动绑定目录
sudo vim /etc/fstab
添加绑定信息
/var/www /srv/nfs4/www none bind 0 0
导出服务端文件系统
sudo vim /etc/exports
添加共享配置信息
/srv/nfs4 192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/www 192.168.33.110(rw,sync,no_subtree_check)
常用选项说明:
fsid=0
定义NFS根目录/srv/nfs4
- 仅允许来自
192.168.33.0/24
子网的客户端对此NFS访问权限 - crossmnt选项是必需的,它用于共享目录和导出子目录
/srv/nfs4/www
目录,只允许192.168.33.0/24
网段的客户端有读的权限,并且仅允许IP地址是192.168.33.110
的客户端具有读和写权限*
表示所有网段
sync
选项告诉NFS在恢复之前将更改写入磁盘。- 默认启用
root_squash
选项,防止从客户端对已挂载的共享具有root权限。它将映射rootUID和GID到nobody/nogroup UID/GID。- 为了使客户端计算机能够访问,NFS希望客户端的用户和组ID与服务器的用户和组ID匹配。另一种选择是使用NFSv4 idmapping功能,将用户和组ID转换为名称。
- 使用
no_all_squash,no_root_squash
关闭
例子:
/srv/nfs *(rw,sync,no_subtree_check,crossmnt,fsid=0,no_all_squash,no_root_squash)
/srv/nfs/www *(rw,async,no_all_squash,no_subtree_check,no_root_squash)
使配置生效:
sudo exportfs -ra
sudo exportfs -v
客户端
客户端挂载NFS文件系统
sudo mkdir -p /srv/www
sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www
挂载NFS v4版本的文件系统时,可以省略NFS根目录,因此你可以使用/www,而不是/srv/nfs4/www挂载NFS共享目录。
查看是否挂载成功:
df -h
自动挂载需要修改/etc/fstab
文件,与上文服务端的自动挂载相同配置方法
客户端卸载NFS文件系统
sudo umount /srv/www
同时不要忘记删除/etc/fstab
文件中的自动挂载点