fs.may_detach_mounts

生效的内核版本

  1. 红帽企业 Linux 7.2 及更高版本(低版本内核可能也支持该参数,但未经过测试)

  2. 麒麟操作系统 V10 版本不支持(sysctl -a | grep fs.may_detach_mounts 不会有任何输出)

参数说明

该参数用于控制是否允许卸载挂载点时,强制分离(detach)被卸载的文件系统。默认值为 0,表示不允许强制分离挂载点。

  • 0:不允许强制分离挂载点

  • 1:允许强制分离挂载点

这个参数在现代云原生环境中至关重要,主要为了解决一个经典问题:Pod 被删除后,其挂载的 Volume 无法被成功卸载,导致后续 Pod(尤其是使用相同存储的 StatefulSet)调度失败。 当 Pod 被删除时,如果其挂载的 Volume 仍然被占用(例如,某些进程仍在访问该 Volume),默认情况下,内核会阻止卸载操作,从而导致 Volume 无法被释放和重新使用。 通过将 fs.may_detach_mounts 设置为 1,内核允许在卸载挂载点时强制分离文件系统,即使它们仍然被占用。 这意味着即使有进程正在访问该 Volume,内核也会允许卸载操作成功完成,从而释放 Volume 供后续 Pod 使用。

配置方法

可以通过以下命令临时修改该参数:

sudo sysctl -w fs.may_detach_mounts=1

# 要永久修改该参数,可以将以下行添加到 `/etc/sysctl.conf` 文件中:
fs.may_detach_mounts=1