1、NFS 介绍
NFS 是 Network FileSystem 的缩写,顾名思义就是网络文件存储系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。通过 NFS,我们本地 NFS 的客户端应用可以透明地读写位于服务端 NFS 服务器上的文件,就像访问本地文件一样方便。简单的理解,NFS 就是可以透过网络,让不同的主机、不同的操作系统可以共享存储的服务。
2、安装NFS服务
# 服务端
apt install nfs-kernel-server
# 客户端
apt install nfs-common
3、NFS配置
//修改 nfs 配置文件,添加nfs映射目录和相关权限
sudo vi /etc/exports
/* 挂载目录 允许挂载的客户端IP,
/* *表示允许所有客户端挂载 挂载配置 */
/home/richard/rootfs *(rw,sync,all_squash,no_subtree_check)
//重新加载配置
sudo exportfs -av
exporting *:/home/richard/rootfs
如下示例:将 /data/share 文件目录设置为允许 IP 为该 192.168.178.0/24 区间的客户端挂载,当然,如果客户端 IP 不在该区间也想要挂载的话,可以设置 IP 区间更大或者设置为 * 即允许所有客户端挂载,例如:/home/richard/rootfs *(ro,sync,insecure,no_root_squash) 设置 /home/richard/rootfs 目录允许所有客户端只读挂载。
4、启动 RPC 服务。
service rpcbind start
或
systemctl start rpcbind.service
查看 NFS 服务项 rpc 服务器注册的端口列表
rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
注意:此时我们还没有启动 NFS 服务,只监听了 111 端口,接着我们来启动 NFS 服务,再来看下注册的端口列表。
5、启动 NFS 服务
service nfs start
# 或者使用如下命令亦可
systemctl start nfs.service
启动 NFS 服务后 rpc 服务已经启用了对 NFS 的端口映射列表
rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 33745 status
100024 1 tcp 36980 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 38960 nlockmgr
100021 3 udp 38960 nlockmgr
100021 4 udp 38960 nlockmgr
100021 1 tcp 38362 nlockmgr
100021 3 tcp 38362 nlockmgr
100021 4 tcp 38362 nlockmgr
在服务端看下是否正确加载了设置的 /etc/exports 配置:
$ showmount -e localhost
Export list for localhost:
/home/recall/fileshop 192.168.1.11
nfs测试
sudo mount -t nfs localhost:home/richard/rootfs /mnt
mount.nfs: access denied by server while mounting localhost:home/richard/rootfs
错误原因:由于限定了IP范围,不能使用localhost,应该使用IP地址,将localhost改用IP地址之后挂载正常