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配置选项

  1. rw 读写
  2. ro 只读
  3. sync 同步模式,内存数据实时写入磁盘
  4. async 非同步模式
  5. no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
  6. root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
  7. all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
  8. 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 服务器的文件系统到本机 - AIUAI

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/
Last modification:May 8th, 2022 at 01:14 pm