Network File System (NFS)
网络文件系统:可以把网络上的某个资源做为本地硬盘来使用的一种系统。
该服务主要依赖于:nfsd、mountd以及rpcbind
- nfsd: 接收 NFS 客户端发起的请求
- mountd: 处理由nfsd接收的请潮州
- rpcbind: 允许客户端发现当前的 NFS 服务端口
服务端配置
编辑/etc/rc.conf
并加入以下配置:
rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"
mountd_enable="YES"
如果使用的是zfs,则应该创建数据集,比如: zfs create yzpool/data/hosts/20pro
而不是直接创建文件夹。
接着编辑/etc/exports
,配置文件服务内容:
/yzpool/hosts/20pro -maproot=root 192.168.1.20
上述配置实现了: 可将本地/yzpool/hosts/20pro
映射给192.168.1.20客户端。且当192.168.1.20客户端中的root权限等同于本机的root权限。
然后我们重启一下服务器,以及上面的服务全部生效。
如果编辑过/etc/exports
文件,则需要执行:/etc/rc.d/mountd reload
。
最后执行:showmount -e localhost
查看是否生效。还没搞清楚具体的原因,增加新配置后在客户端挂载出现Stale NFS file handle
错误,该错误往往是由于过期的handle造成的,最终通过重启nfs服务解决。下次再出现该错误时,尝试重启nfs服务。
客户端配置
debian
客户端操作系统以debian11为例,该客户机的 IP 地址为在服务端设置的192.168.1.20
首先我们安装nfs客户端应用:
# sudo apt install nfs-common
然后创建一个挂载点,比如我创建一个位于根路径下的yz做为持载点:
# sudo mkdir /yz
最后我们完成挂载:
# sudo mount -t nfs 192.168.1.2:/yzpool/hosts/20pro /yz
如果我们希望在系统启动的时候同步进行挂载,则需要编辑/etc/fstab
文件来完成。
192.168.1.2:/yzpool/hosts/20pro /yz nfs rw 0 0
然后重新启动服务器进行测试。
当挂载出现问题时,可以查看服务器的日志信息: tail -n 50 /var/log/messages
来查看具体的报错信息。
ubuntu
# sudo apt install nfs-common
$ sudo mount -t nfs 192.168.10.2:/mnt/yzpool/hosts/10.13 /bak
freebsd
启动nfs客户端服务。
% su
# echo 'nfs_client_enable="YES"' >> /etc/rc.conf
# echo 'nfs_client_flags="-n 4"' >> /etc/rc.conf
# nfsiod -n 4
挂载:
% su
# mkdir /mengyunzhi
# mount -t nfs -o vers=4 192.168.1.2:/yzpool/data/hosts/21switchgear /mengyunzhi
最后编辑/etc/fstab
:
192.168.1.2:/yzpool/data/hosts/21switchgear /mengyunzhi nfs rw,vers=4 0 0
然后使用mount -a
进行挂载测试.
locked 锁定
有些应用程序(比如mysql)需要一个锁定的操作,rpc.lockd
能够提供这个功能。值得注意的是:客户端和服务端都需要配置这个功能。
服务端(FreeBSD)
在文件/etc/rc.conf
中增加
rpc_lockd_enable="YES"
rpc_statd_enable="YES"
然后使用以下命令启动服务:
# /etc/rc.d/lockd start
# 以下是启动statd的,在刚刚启动lockd时会自动启动它
# /etc/rc.d/statd start
此时在客户端应用lock操作时,便不会发生无法锁定文件的错误了。
其它
dir client1 (options) [client2(options)...]
详解:
ro / rw
: a) ro: 只读 b) rw: 写入加读取sync / async :
a) sync: 服务端应答完上次请求后,才会应答下次请求; b) async: 异应应答。wdelay / no_wdelay
a) wdelay服务器预测是连续请求时,将延迟提交上次的写请求(提升写入效率,数据断电易丢失)no_all_squash / all_squash
a) no_all_squash: 不改变客户端的
参考文档
https://vitux.com/debian-nfs-mount/
https://www.thegeekdiary.com/mount-nfs-access-denied-by-serve...
https://docs.freebsd.org/doc/5.5-RELEASE/usr/share/doc/handbo...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。