插件窝 干货文章 一文精通 Linux 配置 NFS 文件共享

一文精通 Linux 配置 NFS 文件共享

NFS sudo 配置 挂载 918    来源:    2025-05-13

Linux NFS 文件共享配置指南

一、NFS 简介

NFS (Network File System) 是一种分布式文件系统协议,允许网络中的计算机之间共享文件和目录。它最初由 Sun Microsystems 开发,现已成为 Unix/Linux 系统间文件共享的标准协议。

NFS 主要特点:

  • 透明访问远程文件系统
  • 支持 Unix 文件权限模型
  • 高性能(特别是 NFSv4+)
  • 易于配置和管理

二、NFS 服务端配置

1. 安装 NFS 服务器软件

在大多数 Linux 发行版上:

# Ubuntu/Debian
sudo apt update
sudo apt install nfs-kernel-server

# CentOS/RHEL
sudo yum install nfs-utils

2. 创建共享目录

sudo mkdir -p /shared/nfs
sudo chown nobody:nogroup /shared/nfs  # 设置适当权限

3. 配置导出目录

编辑 /etc/exports 文件:

sudo nano /etc/exports

添加如下内容(根据需求调整):

/shared/nfs 192.168.1.0/24(rw,sync,no_subtree_check)

常用选项说明: - rw:读写权限 - ro:只读权限 - sync:同步写入(更安全但性能略低) - async:异步写入(性能更好但风险更高) - no_subtree_check:禁用子树检查(提高性能) - root_squash:将 root 用户映射为匿名用户(默认) - no_root_squash:允许 root 用户保持特权(安全风险)

4. 应用配置

sudo exportfs -a  # 重新导出所有共享
sudo systemctl restart nfs-kernel-server  # 重启服务

# 查看当前导出的共享
sudo exportfs -v

5. 防火墙配置

# Ubuntu/Debian
sudo ufw allow from 192.168.1.0/24 to any port nfs

# CentOS/RHEL
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

三、NFS 客户端配置

1. 安装客户端软件

# Ubuntu/Debian
sudo apt install nfs-common

# CentOS/RHEL
sudo yum install nfs-utils

2. 创建挂载点

sudo mkdir -p /mnt/nfs

3. 手动挂载 NFS 共享

sudo mount -t nfs server_ip:/shared/nfs /mnt/nfs

4. 自动挂载(通过 /etc/fstab)

编辑 /etc/fstab 文件:

server_ip:/shared/nfs  /mnt/nfs  nfs  defaults  0  0

然后执行:

sudo mount -a

5. 验证挂载

df -h
mount | grep nfs

四、高级配置

1. 限制客户端访问

/etc/exports 中使用 IP 或网络范围:

/shared/nfs 192.168.1.100(rw) 192.168.1.0/24(ro)

2. 用户映射配置

编辑 /etc/idmapd.conf 确保客户端和服务器有相同的域名设置:

[General]
Domain = yourdomain.com

3. NFSv4 专用配置

对于纯 NFSv4 环境,可以简化配置:

/shared/nfs /shared/nfs gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)

4. 性能调优

  • 增加 NFS 线程数(编辑 /etc/default/nfs-kernel-server):

    RPCNFSDCOUNT=16
    
  • 调整读写大小(客户端挂载选项):

    mount -t nfs -o rsize=65536,wsize=65536 server:/share /mnt
    

五、常见问题排查

1. 连接被拒绝

  • 检查服务是否运行:sudo systemctl status nfs-server
  • 检查防火墙设置
  • 验证端口是否开放:rpcinfo -p server_ip

2. 权限问题

  • 确保共享目录权限正确
  • 检查 /etc/exports 中的权限设置
  • 查看日志:tail -f /var/log/syslogjournalctl -u nfs-server

3. 挂载缓慢

  • 尝试添加 nolock 选项:mount -t nfs -o nolock server:/share /mnt
  • 检查 DNS 解析,尝试使用 IP 地址而非主机名

4. NFSv4 挂载失败

  • 确保客户端和服务器都支持 NFSv4
  • 检查 /etc/default/nfs-common 中的 NEED_IDMAPD=yes

六、安全最佳实践

  1. 限制访问范围:只允许必要的网络或 IP 访问 NFS 共享
  2. 使用防火墙:限制对 NFS 端口的访问
  3. 避免 no_root_squash:除非绝对必要,否则不要使用此选项
  4. 考虑使用 Kerberos:对于高安全环境,配置 NFSv4 与 Kerberos 集成
  5. 定期更新:保持 NFS 服务器和客户端软件最新
  6. 监控日志:定期检查 NFS 相关日志以发现异常活动

通过以上配置,您应该能够在 Linux 系统上成功设置和使用 NFS 文件共享服务。根据实际需求调整配置参数,以获得最佳的性能和安全性平衡。