Bind-mount 和 cryptsetup 导致 /proc/self/mountinfo 中的根路径被截断

Bind-mount 和 cryptsetup 导致 /proc/self/mountinfo 中的根路径被截断

我有一个加密容器,其中包含一个 ext4 文件系统和一个稍后绑定安装的子目录。如果我看一下/proc/self/mountinfo,挂载的根目录有一个我不知道原因的值。

重现步骤:

cd /tmp
fallocate -l 1G container.luks
cryptsetup luksFormat container.luks
cryptsetup open --type=luks2 container.luks container
mkfs.ext4 /dev/mapper/container
mkdir /mnt/container
mount /dev/mapper/container /mnt/container/
mkdir /mnt/container/subdir
mkdir /tmp/abc
mount -o bind /mnt/container/subdir/ /tmp/abc
cat /proc/self/mountinfo

...
24 1 253:1 / / rw,noatime - ext4 /dev/dm-1 rw
...
56 24 253:5 / /mnt/container rw,relatime - ext4 /dev/mapper/container rw
57 24 253:5 /subdir /tmp/abc rw,relatime - ext4 /dev/mapper/container rw

按照人5过程字段 #4 是

root:文件系统中形成此挂载根的目录的路径名。

为什么最后一行的字段 #4/subdir不是/mnt/container/subdir?给定挂载 #57 的信息,我如何推断出挂载 #57 是挂载 #56 的子目录的绑定挂载?

旁注:umount -R /mnt/container忽略挂载 #57。


鉴于比利叔叔的回答以及对相关手册页的多次重读,我的解释是从系统中某处/subdir潜在的不存在的设备挂载点的根部进行查看。253:5我希望这是有道理的。

答案1

56 24 253:5 / /mnt/container
57 24 253:5 /subdir /tmp/abc

给定 mount 的信息#57,我如何推断出 mount#57是 mount 子目录的绑定安装#56

它不是。你不会推断出这一点。

两个挂载仅通过相同文件系统/设备的挂载而相关(253:5);并不是说它们中的任何一个都是另一个或类似的东西的“子安装”。他们彼此独立。

相关内容