我的一位同事将错误的卷安装到目录中,然后将正确的卷安装到同一目录中。有没有办法在不接触“正确”卷的情况下卸载这个“不正确”卷?
这是这种情况的可重现示例:
$ dd if=/dev/zero of=file-a bs=1M count=1
$ mkfs.ext4 file-a
$ dd if=/dev/zero of=file-b bs=1M count=1
$ mkfs.ext4 file-b
$ mkdir target
$ sudo mount -o loop file-a target
$ sudo mount -o loop file-b target
以下是执行这些命令后的情况:
$ findmnt
TARGET SOURCE FSTYPE OPTIONS
/ /dev/xxx ext4
└─/home/user/test-umount/target /dev/loop1 ext4 rw,relatime
└─/home/user/test-umount/target /dev/loop2 ext4 rw,relatime
所以我们想在/dev/loop1
这里卸载设备,但保持/dev/loop2
安装到target
.
这样做umount target
将卸载第二个卷,这不是预期的效果。尝试卸载循环设备本身会给出:
$ sudo umount /dev/loop1
$ umount: /dev/loop1: umount failed: Invalid argument.
有没有办法解决这个难题?
就在这里。
将该
target
挂载移到别处,卸下原始挂载,然后将其移回:如果根或任何其他父挂载的
target
传播设置为共享(使用 systemd 时的默认值),则移动挂载将不起作用。在这种情况下,您可以mount --move
用一对mount --make-rprivate /; ...; make --rshared /
命令括起来:不过,检查一下是个好主意。之前和之后: