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/24
IP段,可以这样设置:
/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/local
autofs是一个可以根据需要自动挂载目录的工具。它会在用户或程序尝试访问需要挂载的目录时,自动挂载目录。
安装
// 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/share
NFS目录到该文件夹上。
完成上述配置后,重启autofs
服务。
systemctl restart autofs
配置完成后,需要使用ls /mnt/local
或cd /mnt/local
才能激活autofs
的自动挂载动作。
NFS服务搭建需要注意的点如下。
exportfs -arv
命令加载配置。autofs
来挂载,autofs
需要设置开机启动。如果有可能,尽可能设置访问超时时间,这样可以增加磁盘使用寿命。