NFS通过网络挂载,让不同的机器、操作系统可以共享彼此的文件.
1. 服务器端
[1] - 安装 NFS 服务
sudo apt install nfs-kernel-server
在 Ubuntu 20.04 上,NFS 版本 2 被禁用。版本 3 和 4 已启用。可以通过运行以下命令来验证 :
sudo cat /proc/fs/nfsd/versions
#-2 +3 +4 +4.1 +4.2
NFS 服务器配置在 /etc/default/nfs-kernel-server
和 /etc/default/nfs-common
文件中. 大多数情况,默认设置就可以.
查看 NFS 服务
sudo systemctl status nfs-server.service
sudo systemctl restart nfs-server.service
查看NFS服务端口
NFS启动时会随机启动多个端口并向RPC
注册,为了方便配置防火墙,需要固定NFS服务端口。
# 使用rpcinfo -P会发现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
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049
100003 3 udp 2049 nfs
100227 3 udp 2049
100021 1 udp 56266 nlockmgr
100021 3 udp 56266 nlockmgr
100021 4 udp 56266 nlockmgr
100021 1 tcp 39591 nlockmgr
100021 3 tcp 39591 nlockmgr
100021 4 tcp 39591 nlockmgr
'''
[2] - 创建共享目录
mkdir /nfs/share
[3] - 修改配置文件
vim /etc/exports
#[任意主机所有权限]
/nfs/share *(rw,sync,insecure,no_subtree_check,no_root_squash)
NFS配置选项
- rw 读写
- ro 只读
- sync 同步模式,内存数据实时写入磁盘
- async 非同步模式
- no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
- root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
- all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
- anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
[4] - 重启 NFS 服务
sudo service nfs-kernel-server restart
sudo systemctl restart nfs-server.service
[5] - 常用命令工具
#在安装 NFS 服务器时,已包含常用的命令行工具,无需额外安装
#显示已经 mount 到本机 NFS 目录的客户端机器
sudo showmount -e localhost
#将配置文件中的目录全部重新 export 一次,无需重启服务
sudo exportfs -rv
#查看 NFS 的运行状态
sudo nfsstat
#查看 rpc 执行信息,可以用于检测 rpc 运行情况
sudo rpcinfo
2. 客户端
Ubuntu 挂载 NFS 服务器的文件系统
[1] - 安装 NFS 客户端:
sudo apt-get install nfs-common
[2] - 在本机新建目录,用于挂载 NFS 服务器文件夹,如:
sudo mkdir /nfsdata
[3] - 假设服务器 IP 地址为:192.168.1.107,可以使用 showmount
命令查看服务器上所共享的文件目录:
showmount -e 192.168.1.107
[4] - 假设服务器所共享的文件目录为 /data/
,使用mount
进行挂载:
sudo mount -t nfs 192.168.1.107:/data/ /nfsdata/
即可将服务器中的文件目录 /data
挂载到本机/nfsdata/
目录.
[5] - 查看客户端挂载信息
df -h
[6] - 卸载所挂载的文件目录:
sudo umount /nfsdata/