Network File System(NFS) 是操作系统通过网络共享文件夹和文件的服务。NFS客户端通过挂载(mount)的方式将NFS服务端的共享文件夹挂载到自己的操作系统上,NFS客户端上的用户和程序就能像访问本地磁盘内容一样访问NFS服务端所共享的文件夹。和NFS功能类似的还有samba服务。
NFS可以提供以下好处:
现有linux server一台IP:192.168.10.103。linux desktop一台IP:192.168.10.102。
现在准备在server上共享目录/mnt/share,在desktop上将server共享目录挂载到本地目录/mnt/local。
// ubuntu/debian
apt install nfs-kernel-server rpcbind nfs-common
// centos
yum install nfs-utils rpcbind安装完成后,建议配置成开机自动启动:
// ubuntu/debian
systemctl enable rpcbind
systemctl enable nfs-kernel-server
// centos
systemctl enable rpcbind
systemctl enable nfs当安装完nfs服务端程序后,可以通过编辑/etc/exports文件来配置共享的目录。
配置的格式是:共享的目录 主机名或IP或IP段(参数,参数)
其中参数是可选的,当不指定参数时,NFS将使用默认选项:sync,ro,root_squash,no_delay。
常见参数:
当主机名或IP为空时,则代表共享给任意客户机。
将同一目录共享给不同客户机,但需要设置不同权限时,可以这样设置:
共享的目录 主机名或IP或IP段(参数,参数) 主机名或IP或IP段(参数,参数)这里假设我们要将/mnt/share目录共享给192.168.10.0/24IP段,可以这样设置:
/mnt/share 192.168.10.0/24(rw,sync,all_squash,root_squash)当配置完成后,需要让NFS重新加载配置文件,可以使用exportfs命令。
exportfs命令
exportfs -arv当设置并重新加载配置文件后,可以使用showmount -e确定配置是否生效。
shoumount命令
showmount -e
或
showmount -e localhost
当NFS服务端配置完成后,就可以在客户端进行操作了。
// ubuntu/debian
apt install nfs-common
// centos
yum install nfs-utils我们可以使用showmount命令查看目前可用的NFS服务端列表。
showmount -e 192.168.10.103
找到共享的目录后,使用mount命令挂载目录到本地。
mount -t nfs 192.168.10.103:/mnt/share /mnt/local挂载完成后,使用df -h命令查看挂载情况

最后,可以使用umount /mnt/local卸载已经挂载的目录。
如果需要开机挂载nfs目录,不建议使用修改/etc/fstab来实现开机挂载。这样做不仅会导致开机速度变慢,并且也不会挂载成功。
具体原因是开机时,系统还没有完成network服务启动,所以nfs服务不能正常使用。
使用/etc/rc.d/rc.local可以解决上述问题:
sleep 5;mount -t nfs 192.168.10.103:/mnt/share /mnt/localautofs是一个可以根据需要自动挂载目录的工具。它会在用户或程序尝试访问需要挂载的目录时,自动挂载目录。
安装
// ubuntu/debian
apt install autofs
// centos
yum install autofs设置开机启动
systemctl enable autofs安装完成后,修改/etc/auto.master文件:
/mnt /etc/auto.nfs --timeout=60其中/mnt是要挂载的本地目录的父目录,例如需要挂载/mnt/local1和/mnt/local2,如果在这里配置了/mnt,则在/etc/auto.nfs中只用配置local1和local2就可以了。
/etc/auto.nfs是NSF挂载配置文件。
--timeout=60 是指在多少秒没有访问后,自动卸载。
接下来配置/etc/auto.nfs:
local -fstype=nfs,rw 192.168.10.101:/mnt/share他的含义是,如果用户或程序试图访问/mnt/local文件夹,就自动挂载192.168.10.101:/mnt/shareNFS目录到该文件夹上。
完成上述配置后,重启autofs服务。
systemctl restart autofs配置完成后,需要使用ls /mnt/local或cd /mnt/local才能激活autofs的自动挂载动作。
NFS服务搭建需要注意的点如下。
exportfs -arv命令加载配置。autofs来挂载,autofs需要设置开机启动。如果有可能,尽可能设置访问超时时间,这样可以增加磁盘使用寿命。