挂载点变更本身不自动更新服务依赖路径,需手动检查并修改服务配置、脚本及应用配置中硬编码的旧路径,同时调整systemd依赖关系与fstab选项,最后验证并保留回滚能力。
直接改挂载点本身不改变依赖路径,但若服务配置、脚本或二进制程序硬编码了旧路径(比如写死 /mnt/nas),那挂载点一变,服务就会报“文件不存在”“Permission denied”或启动失败。真正要更新的是服务对路径的引用方式,而不是让系统自动“同步”依赖。
别盲目修改。先查清楚谁在用:
ExecStart、WorkingDirectory、Environment= 里是否含旧路径路径不是“依赖库”,而是服务运行时的输入位置。修改分三类场景:
/etc/systemd/system/xxx.service(覆盖默认),修改 ExecStart= 中的路径参数,或加 Environment="DATA_DIR=/mnt/new_path" 并在命令中用 $DATA_DIR
/mnt/old 替换为 /mnt/new;建议用变量封装,例如 DATA_ROOT="/mnt/new_path"
挂载点变更后,服务能否拉起,取决于它启动时机是否晚于新挂载完成:
After=local-fs.target(本地文件系统就绪)或更精准的 After=media-new_path.mount(如果为新挂载点单独写了 .mount unit)x-systemd.automount 或 _netdev,nofail,防止开机卡住;同时在服务 unit 中加 Wants=remote-fs.target
mount -a 后立即启动服务——它不保证设备已 ready;用 systemctl daemon-reload && systemctl restart 服务名 才能触发真实依赖链重评估改完别直接上线: