You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置NFS服务器在部分挂载点挂载失败时仍启动并提供可用挂载点服务?

如何配置NFS服务器在部分挂载点挂载失败时仍启动并提供可用挂载点服务?

我遇到过类似的问题,其实核心是systemd的依赖关系在搞鬼——默认情况下NFS服务会绑定到你导出的挂载点对应的systemd挂载单元上,只要其中一个挂载失败,整个NFS服务就启动不了。下面是我亲测有效的解决步骤:

1. 修改fstab挂载选项,让硬盘挂载失败不阻塞服务启动

首先要调整外部硬盘的挂载参数,告诉systemd即使硬盘挂载失败,也不要标记该挂载单元为失败,避免牵连NFS服务:
打开你的/etc/fstab,把两个硬盘的挂载行修改为:

/dev/disk/by-uuid/06b24834-a749-4d93-b0d5-a6da71eaf224 /verbatim ext4 defaults,x-systemd.nofail,x-systemd.mount-timeout=10 0 1
/dev/disk/by-uuid/d7dbea69-0332-4d12-b905-b9a116e28422 /sandisk ext4 defaults,x-systemd.nofail,x-systemd.mount-timeout=10 0 1
  • x-systemd.nofail:这个参数让systemd忽略该挂载的失败,不会因为它启动失败就阻止依赖它的服务启动
  • x-systemd.mount-timeout=10:设置挂载超时时间为10秒,避免系统启动时在未连接的硬盘上等待太久

2. 确保挂载点目录始终存在

NFS需要导出的目录必须存在,哪怕硬盘没挂载。你可以提前手动创建这些目录(系统挂载时其实也会自动创建,但手动创建更稳妥):

sudo mkdir -p /verbatim /sandisk
sudo chmod 755 /verbatim /sandisk

这样即使硬盘没挂载,NFS也能导出这个空目录(你可以在空目录里放个README文件提示用户该存储不可用)。

3. 调整NFS服务的systemd依赖,解除对挂载单元的绑定

默认情况下,systemd会自动为nfs-server.service添加对这些挂载单元的依赖,我们需要覆盖这个设置:

  • 先创建nfs-server服务的drop-in配置目录:
sudo mkdir -p /etc/systemd/system/nfs-server.service.d
  • 创建配置文件override.conf:
sudo nano /etc/systemd/system/nfs-server.service.d/override.conf
  • 在文件中写入以下内容:
[Unit]
Wants=
After=network.target rpcbind.target

这个配置会清空默认的Wants依赖,只保留NFS启动必需的网络和rpcbind服务,让NFS服务不再等待挂载单元。

4. 重新加载配置并重启服务

最后,让systemd读取新的配置,然后重启NFS服务:

sudo systemctl daemon-reload
sudo systemctl restart nfs-server.service

这样设置后,即使其中一块硬盘没挂载,NFS服务也能正常启动,并且会导出已经成功挂载的硬盘目录。如果之后你插上了未挂载的硬盘,systemd会自动完成挂载,此时你只需要手动重新加载NFS导出列表即可:

sudo exportfs -r

备注:内容来源于stack exchange,提问作者bagratte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:24:34