Proc
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
根據man 5 proc欄位 #4 是
root:文件系統中目錄的路徑名,該目錄構成此掛載的根目錄。
為什麼最後一行的欄位 #4
/subdir
而不是/mnt/container/subdir
?鑑於 mount #57 的資訊,我如何能夠推斷出 mount #57 是 mount #56 的子目錄的綁定掛載?旁注:
umount -R /mnt/container
忽略安裝 #57。鑑於比利叔叔的回答以及對相關手冊頁的多次重讀,我的解釋是
/subdir
從系統中某個潛在不存在的設備掛載點的根目錄來看253:5
。我希望這有點道理。
56 24 253:5 / /mnt/container 57 24 253:5 /subdir /tmp/abc
鑑於 mount 的資訊
#57
,我如何推斷該 mount#57
是 mount 的子目錄的綁定掛載#56
?它不是。你沒有推斷出來。
這兩個掛載僅通過相同文件系統/設備的掛載(
253:5
)相關;並不是說它們中的任何一個都是另一個的“子安裝”或類似的東西。它們彼此獨立。