You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu 17.10升级后NFS挂载失败求助(17.04及更早版本正常)

解决Ubuntu 17.10 NFS挂载"access denied"问题

我来帮你排查这个困扰的NFS问题——Ubuntu 17.10在NFS默认配置上有不少变化,哪怕你没手动改配置,这些默认调整也可能导致挂载失败。我们一步步来定位问题:

1. 优先检查防火墙规则

Ubuntu 17.10默认启用的ufw防火墙,大概率是这个环节出了问题。升级后防火墙规则可能被重置,NFS相关端口没开放:

  • 在NFS服务器上执行以下命令开放必要端口:
    sudo ufw allow nfs
    sudo ufw allow mountd
    sudo ufw allow rpc-bind
    sudo ufw reload
    
  • sudo ufw status确认规则是否已经生效,确保上述服务的端口都是允许状态。

2. 排查NFSv4的配置差异

你客户端fstab里指定了nfsvers=4,但Ubuntu 17.10对NFSv4的默认配置和17.04有区别:

  • 检查NFS版本支持:在服务器上执行sudo cat /proc/fs/nfsd/versions,确认输出里有+4(或更高版本)的标识,说明NFSv4已启用。
  • 同步idmapd域名配置:NFSv4依赖idmapd做用户映射,服务器和客户端的/etc/idmapd.conf里的Domain必须一致:
    1. 编辑服务器端的/etc/idmapd.conf,找到Domain行,改成统一的值(比如localdomain):
      Domain = localdomain
      
    2. 客户端也同步修改这个配置,然后两边都重启服务:
      sudo systemctl restart nfs-idmapd
      
  • NFSv4伪根目录设置:如果上面的步骤没用,试试把共享目录挂载到NFSv4默认的伪根/srv/nfs下:
    sudo mkdir -p /srv/nfs/www
    sudo mount --bind /var/www /srv/nfs/www
    
    然后修改/etc/exports,改成:
    /srv/nfs 178.62.77.174(rw,sync,no_root_squash,no_subtree_check)
    
    重新导出并重启服务:sudo exportfs -a && sudo systemctl restart nfs-kernel-server,客户端挂载路径改成46.101.44.101:/www试试。

3. 验证exports配置正确性

有时候看似正确的exports配置其实有语法问题,或者客户端IP不匹配:

  • sudo exportfs -v检查服务器的导出状态,确认/var/www确实是导出给178.62.77.174的,且权限参数正确。
  • 确认客户端当前的公网/内网IP确实是178.62.77.174,如果是动态IP,建议用子网掩码(比如178.62.77.0/24)来指定允许的范围,避免IP变化导致权限被拒。

4. 降级到NFSv3测试(快速定位问题)

如果NFSv4的排查陷入僵局,先试试用NFSv3挂载,确认基本共享功能正常:

  • 临时挂载测试:
    sudo mount -t nfs -o nfsvers=3 46.101.44.101:/var/www /mnt/nfs/test/www
    
  • 如果挂载成功,说明问题确实出在NFSv4的配置上,回到第2步继续调整;如果还是失败,那就要检查服务器端的NFS服务状态、文件系统权限等基础问题。

5. 检查NFS服务运行状态

最后确认服务器端所有NFS相关服务都正常运行:

sudo systemctl status nfs-kernel-server
sudo systemctl status nfs-idmapd
sudo systemctl status rpcbind

如果有服务未启动,先启动并设置开机自启:

sudo systemctl start [服务名]
sudo systemctl enable [服务名]

内容的提问来源于stack exchange,提问作者ShadeBlack

火山引擎 最新活动