站内公告:

我们的虚拟社区正式开通了

Main Menu

Linux 环境下 NFS 服务安装及配置

作者 virtual, 2023-1月-06 02:29 下午

« 上一篇主题 - 下一篇主题 »

virtual

服务端:

确认是否安装
rpm -qa nfs-utils rpcbind

安装:
yum install -y nfs-utils rpcbind

服务端开机启动
systemctl start rpcbind
systemctl enable rpcbind
 
systemctl start nfs-server
systemctl enable nfs-server

配置

vim /etc/exports
 /mnt/share 172.18.0.0/16(rw,sync,insecure,no_subtree_check,no_root_squash)

常用选项:

  • rw 表示允许读写
  • ro 表示为只读
  • sync 表示同步写入到内存与硬盘中
  • no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash),如果不加那么客户端无法在里面编辑或写入文件,因为默认以nfsnobody的权限
  • root_squash 表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户
  • 其它常用选项:
  • all_squash 所有访问用户都映射为匿名用户或用户组
  • async 将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据
  • subtree_check(默认) 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
  • no_subtree_check 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
举例:
其中客户机地址可以是主机名 ID 地址、网段地址,允许使用 "*" "?" 通配符;权限选项中的 rw 表示允许读写(ro为只读),sync表示同步写入,no_root_squash表示当客户机以 root 身份访问时赋予本地 root 权限(默认是root_squash,将为 nfsnobody 用户降权对待)。

当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格隔指定多个"客户机(权限选项)"即可。
例如,以下操作将 /var/ftp/public 目录共享给两个客户机,并分别给予只读、读写权限。


#启动服务 
service rpcbind start
 
sudo service nfs-server restart
sudo service nfs-server status

查看:
rpcinfo -p localhost
 
showmount -e 10.xx.xx.xx

# 客户端
yum install -y nfs-utils
showmount -e 172.18.0.13
mkdir -p /mnt/share
mount 172.18.0.13:/mnt/share /mnt/share -o proto=tcp -o nolock
df -h | grep 172.18.0.13

udp:

mount 172.18.0.13:/mnt/share /mnt/share
umount /mnt/share

fstab自动挂载设置
修改 /etc/fstab 配置文件,加入 NFS 共享目录的挂载设置(文件系统类型为nfs)。
挂载参数建议添加_netdev(设备需要网络)
若添加 soft、intr 参数可以实现软挂载,允许在网络中断时放弃挂载。这样客户机就可以在每次开机后自动挂载 NFS 共享资源了。

vim /etc/fstab

192.168.109.11:/opt/web /var/www/html           nfs     default,_netdev 0 0