nfs_mount
挂载 NFS 共享目录到本地
补充说明
nfs_mount 指通过 mount -t nfs 将远程 NFS 服务端的共享目录挂载到本地。NFS 是 Linux 原生支持的分布式文件系统,挂载后如同操作本地目录,适用于跨 Linux 主机的文件共享场景。
安装
安装 NFS 客户端
# Debian / Ubuntu
sudo apt-get update && sudo apt-get install nfs-common
# RHEL / CentOS / Rocky / AlmaLinux
sudo yum install nfs-utils
# Fedora
sudo dnf install nfs-utils
# openSUSE
sudo zypper install nfs-client
# Arch Linux
sudo pacman -S nfs-utils
查看远程共享
挂载前先查看 NFS 服务器上可用的共享目录:
showmount -e <服务器IP>
示例:
showmount -e 10.10.10.251
输出示例:
Export list for 10.10.10.251:
/fs/1000/nfs *
手动挂载
1. 创建挂载目录:
sudo mkdir -pm 755 /mnt/nfs_share
2. 挂载 NFS 共享:
sudo mount -t nfs -o rw <服务器IP>:/<共享路径> /mnt/nfs_share
示例:
sudo mount -t nfs -o rw 10.10.10.251:/fs/1000/nfs /mnt/nfs_share
3. 验证挂载:
df -hT | grep nfs
ls /mnt/nfs_share
挂载选项
| 选项 | 说明 |
|---|---|
rw |
读写挂载 |
ro |
只读挂载 |
hard |
服务端无响应时持续重试(默认,避免数据丢失) |
soft |
超时后返回错误,不持续重试 |
intr |
允许中断挂起的 NFS 请求 |
timeo=<秒> |
请求超时时间(默认 0.7 秒) |
retrans=<次数> |
最大重试次数(默认 3 次) |
vers=<版本> |
指定 NFS 协议版本:4.2、4.1、4、3 |
noatime |
不更新文件访问时间,提升性能 |
卸载
sudo umount /mnt/nfs_share
开机自动挂载
方法一:通过 /etc/fstab 挂载
# 备份 fstab
sudo cp /etc/fstab /etc/fstab.bak
# 追加挂载条目
echo '<服务器IP>:/<共享路径> /mnt/nfs_share nfs nofail,x-systemd.device-timeout=15s 0 0' | sudo tee -a /etc/fstab
参数说明:
| 参数 | 说明 |
|---|---|
nofail |
挂载失败不阻塞系统启动 |
x-systemd.device-timeout=15s |
网络设备超时时间,避免启动时长时间等待 |
示例:
10.10.10.251:/fs/1000/nfs /mnt/nfs_share nfs nofail,x-systemd.device-timeout=15s 0 0
测试 fstab 挂载:
sudo mount -a
df -hT | grep nfs
方法二:使用 systemd 服务自启
1. 创建挂载脚本:
sudo tee /root/nfs-mount.sh <<'EOF'
#!/bin/bash
SERVER="<服务器IP>"
SHARE="<共享路径>"
MOUNT="/mnt/nfs_share"
mkdir -p "$MOUNT"
mount -t nfs -o rw "$SERVER:$SHARE" "$MOUNT" && \
logger -t nfs-mount "挂载成功 $SERVER:$SHARE → $MOUNT" || \
logger -t nfs-mount "挂载失败 $SERVER:$SHARE"
EOF
sudo chmod +x /root/nfs-mount.sh
2. 创建 systemd 服务:
sudo tee /etc/systemd/system/nfs-mount.service <<'EOF'
[Unit]
Description=NFS Share Mount
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/root/nfs-mount.sh
User=root
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
3. 启用服务:
sudo systemctl daemon-reload
sudo systemctl enable --now nfs-mount.service
sudo systemctl status nfs-mount.service
常见问题
挂载超时
# 确认 NFS 服务器可达
ping <服务器IP>
# 确认共享列表可查看
showmount -e <服务器IP>
# 手动指定版本重试
sudo mount -t nfs -o vers=4.2 <服务器IP>:/<共享路径> /mnt/nfs_share
权限拒绝
# 确保服务端 exports 中使用了 no_root_squash 或正确映射了用户
# 查看服务端配置
防火墙阻挡
NFS 需要放行以下端口:
111/tcp 111/udp— rpcbind2049/tcp— nfsd