随机
Enter 搜索 ↑↓ 切换 Esc 清空

nfs_server

命令

NFS 服务端配置

nfs_server

NFS 服务端配置

补充说明

nfs_server 即 Network File System 服务端,允许 Linux 系统将本地目录通过网络共享给其他客户端,客户端通过 mount -t nfs 挂载后如同访问本地目录。NFS 适用于 Linux 之间的文件共享,性能优于 SMB/CIFS。

安装

安装 NFS 服务端

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

# RHEL / CentOS / Rocky / AlmaLinux
sudo yum install nfs-utils

# Fedora
sudo dnf install nfs-utils

# openSUSE
sudo zypper install nfs-kernel-server

# Arch Linux
sudo pacman -S nfs-utils

启动并设置自启动

sudo systemctl enable nfs-server    # 设置开机自启
sudo systemctl start nfs-server     # 启动服务
sudo systemctl status nfs-server    # 查看服务状态

Debian/Ubuntu 上服务名可能为 nfs-kernel-server,可用 sudo systemctl start nfs-kernel-server

配置共享目录

1. 创建共享目录:

sudo mkdir -pm 755 /mnt/nfs_share

2. 编辑 exports 配置文件:

sudo tee /etc/exports <<'EOF'
/mnt/nfs_share *(rw,fsid=0,no_subtree_check,no_root_squash,insecure,sync)
EOF

共享规则格式:

<共享目录> <允许客户端>(<选项>)
客户端写法 说明
* 所有主机
192.168.1.0/24 指定网段
192.168.1.100 指定 IP
*.example.com 指定域名

3. 重新加载 exports 配置:

sudo exportfs -a

exportfs -a 导出所有共享目录;exportfs -r 重新读取 exports 文件并更新;exportfs -ra 清理后重建导出表。

选项说明

选项 说明
rw 读写权限(ro 为只读)
sync 同步写入,数据稳定但速度慢
async 异步写入,速度更快但可能丢数据
no_subtree_check 禁用子树检查,提高稳定性
no_root_squash 客户端 root 保持 root 权限
root_squash 客户端 root 映射为匿名用户(默认)
insecure 允许客户端使用非保留端口连接
fsid=0 设置文件系统 ID,根目录需用 fsid=0

查看共享与 IP

sudo showmount -e localhost
hostname -I | awk '{print $1}'

防火墙配置

# firewalld(RHEL/CentOS/Fedora)
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --reload

# ufw(Debian/Ubuntu)
sudo ufw allow nfs

NFS 依赖 rpcbind(端口 111)和 nfs 服务(端口 2049),以及 mountdrquotad 等动态端口。使用 --add-service=nfs 会自动放行相关端口。

如果使用 iptables 单独管理,需要放行:

  • 111/tcp 111/udp — rpcbind
  • 2049/tcp 2049/udp — nfsd
  • 4000-4003/tcp — mountd(需在 /etc/nfs.conf 中固定端口)