Debian12上安装NFS服务器和客户端

什么是NFS?

网络文件系统NFS可以让机器像在本地挂载磁盘分区一样挂载远程机器上的磁盘分区。它可以通过网络快速、无缝地共享文件。

准备工作

准备3台虚拟机

操作系统 IP 角色
Debian12 172.16.126.130 服务端
Debian12 172.16.126.131 客户端
Debian12 172.16.126.132 客户端

服务端

注意⚠️: 以下安装NFC服务器操作,只需要在服务端服务器(172.16.126.130)操作。

安装

更新软件包列表

1
apt update

安装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
sudo vim /etc/exports
1
2
# 允许访问该共享的客户端 IP 范围(这里表示 172.16.126.0 网段的所有主机)
/nfs 172.16.126.0/24(rw,sync,fsid=0,root_squash,no_subtree_check)

导出共享目录

1
sudo exportfs -ra

重启并查看

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

创建目标挂载目录

1
sudo mkdir -p /nfs

手动挂载共享目录

这个命令会将172.16.126.130上的/nfs目录挂载到本地的/nfs目录

1
sudo mount -t nfs 172.16.126.130:/nfs /nfs

验证挂载
执行以下命令来验证挂载是否成功

1
df -Th

以上手动挂载的方式,重启后会失效,下面通过/etc/fstab设置永久挂载。

设置永久挂载

1
sudo vim /etc/fstab

在文件最后添加一行

1
172.16.126.130:/nfs /nfs nfs defaults 0 0

重新挂载

1
2
sudo systemctl daemon-reload 
sudo mount -a

此时可以尝试重启客户端机器看看是否可以自动挂载成功

验证

1
sudo df -Th

df.png

使用

在任意一台机器上的/nfs文件夹下进行文件操作,都会同步到其他机器上

  1. 在客户端机器172.16.126.131写入文件

    1
    echo "hello nfs" > /nfs/hello.txt
  2. 在客户端机器172.16.126.132读取文件

    1
    2
    ls /nfs
    cat /nfs/hello.txt

卸载NFS挂载

1
2
3
sudo umount /nfs
sudo umount -f /nfs
-f: 强制卸载