Centos7 搭建 NFS 服务器

NFS 服务器安装

  • 安装 NFS 服务器
1
sudo yum install -y nfs-utils
  • 创建共享目录
1
2
3
4
5
6
7
8
# 创建目录
sudo mkdir -p /data/nfs

# 目录授权(设置 777 权限是为了方便测试使用,生产环境请设置更严格的权限)
sudo chmod -R 777 /data/nfs

# 递归修改目录的所有者和用户组为 NFS 默认的匿名用户
sudo chown -R nfsnobody:nfsnobody /data/nfs
  • 配置 NFS 共享目录
1
2
# 编辑配置文件,在文件中添加如下一行内容
sudo vim /etc/exports
1
/data/nfs  *(rw,sync,no_root_squash)
参数含义
*允许所有客户端访问(可改为指定网段,如 192.168.1.0/24
rw允许读写
sync同步写入磁盘(更安全)
no_root_squash允许客户端的 root 用户拥有 root 权限
  • 设置 NFS 服务开机自动启动
1
2
3
4
5
# 设置 rpcbind 服务开机自动启动(NFS 依赖的 RPC 服务)
sudo systemctl enable rpcbind

# 设置 NFS 服务开机自动启动
sudo systemctl enable nfs-server
  • 启动 NFS 服务
1
2
3
4
5
# 立即启动 rpcbind 服务
sudo systemctl start rpcbind

# 立即启动 NFS 服务
sudo systemctl start nfs-server
  • 查看 NFS 服务的运行状态
1
2
3
4
5
# 查看 rpcbind 服务的运行状态
sudo systemctl status rpcbind

# 查看 NFS 服务的运行状态
sudo systemctl status nfs-server
  • 开放防火墙端口,NFS 的常用端口是 2049(nfsd) 和 111(rpcbind)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看防火墙的运行状态(如何没有启用防火墙,则可以不开放防火墙端口)
sudo systemctl status firewalld

# 永久放行 NFS 服务端口
sudo firewall-cmd --permanent --add-service=nfs

# 永久放行 mountd 服务端口(NFS 挂载管理服务)
sudo firewall-cmd --permanent --add-service=mountd

# 永久放行 rpc-bind 服务端口(RPC 端口映射服务)
sudo firewall-cmd --permanent --add-service=rpc-bind

# 重新加载防火墙配置,使上述规则生效
sudo firewall-cmd --reload
  • 验证 NFS 服务是否正常运行
1
2
# 验证 NFS 服务是否正常运行,输出示例如下
sudo exportfs -v
1
/data/nfs     	<world>(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

NFS 客户端挂载

在另一台 Linux 服务器上,通过 NFS 客户端挂载 NFS 服务器的共享目录后,双方即可实现文件同步,NFS 客户端对共享目录中的任何读写操作都会实时反映到 NFS 服务器上。

  • 安装 NFS 客户端
1
sudo yum install -y nfs-utils
  • 客户端挂载 NFS 共享目录
1
2
3
4
5
# 创建共享目录
sudo mkdir -p /mnt/nfs

# 挂载共享目录(请自行更改 NFS 服务器的 IP 地址)
sudo mount -t nfs 192.168.56.112:/data/nfs /mnt/nfs
  • 客户端验证 NFS 共享目录的挂载
1
2
# 查看文件系统的磁盘空间使用情况,输出示例如下
df -h | grep nfs
1
192.168.56.112:/data/nfs   40G   14G   27G   34% /mnt/nfs
  • 客户端开机自动挂载 NFS 共享目录(可选步骤)
1
2
# 编辑系统配置文件,在文件末尾添加如下一行内容(请自行更改 NFS 服务器的 IP 地址)
sudo vim /etc/fstab
1
192.168.56.112:/data/nfs  /mnt/nfs  nfs  defaults  0  0
  • 若客户端希望取消挂载 NFS 共享目录,可以执行以下命令
1
2
3
4
5
6
7
8
# 取消挂载
sudo umount /mnt/nfs

# 或者指定远程路径(请自行更改 NFS 服务器的 IP 地址)
sudo umount 192.168.56.112:/data/nfs

# 如果普通卸载失败,可使用强制参数
sudo umount -f /mnt/nfs

提示

NFS 客户端在挂载的 NFS 共享目录(如 /mnt/nfs)中进行的任何文件创建、修改或删除操作,都会实时同步到 NFS 服务器上的对应共享目录(如 /data/nfs)中。