什么是NFS?
网络文件系统NFS可以让机器像在本地挂载磁盘分区一样挂载远程机器上的磁盘分区。它可以通过网络快速、无缝地共享文件。
准备工作
准备3台虚拟机
操作系统 |
IP |
角色 |
Debian12 |
172.16.126.130 |
服务端 |
Debian12 |
172.16.126.131 |
客户端 |
Debian12 |
172.16.126.132 |
客户端 |
服务端
注意⚠️: 以下安装NFC服务器操作,只需要在服务端服务器(172.16.126.130)操作。
安装
更新软件包列表
安装NFS服务器包和客户端软件包
1
| apt install nfs-kernel-server nfs-common -y
|
检查NFS服务器状态
执行以下 systemctl 命令来验证 nfs-server 服务并确保该服务已启用并正在运行
1 2
| sudo systemctl is-enabled nfs-server sudo systemctl status nfs-server
|
管理
之后,您可以使用以下命令来启动、重新启动和停止 nf-server 服务
1 2 3
| sudo systemctl start nfs-server sudo systemctl restart nfs-server sudo systemctl stop nfs-server
|
配置NFS
配置NFS服务器
1
| sudo vim /etc/default/nfs-common
|
修改内容
1 2
| NEED_STATD="no" NEED_IDMAPD="yes"
|
禁用 NFSv2 和 NFSv3
1
| sudo vim /etc/default/nfs-kernel-server
|
1 2 3 4
| # 添加 RPCNFSDOPTS="-N 2 -N 3" # 修改 RPCMOUNTDOPTS="--manage-gids -N 2 -N 3"
|
重启NFS服务
1
| sudo systemctl restart nfs-server
|
配置防火墙
1
| sudo ufw allow from 172.16.126.0/24 to any port nfs
|
1 2
| sudo ufw reload sudo ufw status
|
导出文件系统
创建共享目录
1 2
| sudo mkdir -p /nfs sudo chmod 777 /nfs
|
配置NFS导出
1 2
| # 允许访问该共享的客户端 IP 范围(这里表示 172.16.126.0 网段的所有主机) /nfs 172.16.126.0/24(rw,sync,fsid=0,root_squash,no_subtree_check)
|
导出共享目录
重启并查看
1 2 3
| sudo systemctl restart nfs-server sudo systemctl status nfs-server sudo showmount --exports
|
客户端
注意⚠️: 以下设置客户端操作,只需要在客户端服务器(172.16.126.131,172.16.126.132)操作。
- 在 Debian 和 Ubuntu 上安装 NFS 客户端 在基于 Debian 的发行版中,包含挂载 NFS 文件系统的软件包名是:
nfs-common
。
- 在 CentOS 和 Fedora 上安装 NFS 客户端 在 Red Hat 和它的衍生版本上安装
nfs-utils
包: sudo yum install nfs-utils
安装NFS客户端包
1 2
| sudo apt update sudo apt install nfs-common -y
|
创建目标挂载目录
手动挂载共享目录
这个命令会将172.16.126.130上的/nfs目录挂载到本地的/nfs目录
1
| sudo mount -t nfs 172.16.126.130:/nfs /nfs
|
验证挂载
执行以下命令来验证挂载是否成功
以上手动挂载的方式,重启后会失效,下面通过/etc/fstab设置永久挂载。
设置永久挂载
在文件最后添加一行
1
| 172.16.126.130:/nfs /nfs nfs defaults 0 0
|
重新挂载
1 2
| sudo systemctl daemon-reload sudo mount -a
|
此时可以尝试重启客户端机器看看是否可以自动挂载成功
验证

使用
在任意一台机器上的/nfs文件夹下进行文件操作,都会同步到其他机器上
在客户端机器172.16.126.131写入文件
1
| echo "hello nfs" > /nfs/hello.txt
|
在客户端机器172.16.126.132读取文件
1 2
| ls /nfs cat /nfs/hello.txt
|
卸载NFS挂载
1 2 3
| sudo umount /nfs sudo umount -f /nfs -f: 强制卸载
|