重複バインドマウントがソースディレクトリのエントリを生成するのはなぜですか?

重複バインドマウントがソースディレクトリのエントリを生成するのはなぜですか?

重複バインドマウントが原因で複数のアイテムが生成されるのはなぜですか/proc/mounts

# md -p /mnt/test-mount/{source,target}
# mount --bind /mnt/test-mount/{source,target}
# grep test-mount /proc/mounts 
/dev/sda3 /mnt/test-mount/target ext4 rw,relatime 0 0
# mount --bind /mnt/test-mount/{source,target}
# grep test-mount /proc/mounts 
/dev/sda3 /mnt/test-mount/target ext4 rw,relatime 0 0
/dev/sda3 /mnt/test-mount/target ext4 rw,relatime 0 0
/dev/sda3 /mnt/test-mount/source ext4 rw,relatime 0 0

最初のバインドマウント後、ソースボリュームをマウントポイントにマップするエントリがあります。 2回目の呼び出しの後、追加のマウントポイントエントリとソースプレフィックスエントリがあります。

同様に、発見するレポートソースは独自にバンドルされてマウントされます。

# findmnt |grep test-mount
├─/mnt/test-mount/target                       /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
│ └─/mnt/test-mount/target                     /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
└─/mnt/test-mount/source                       /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime

もう一つの繰り返しの後、私は結局サムソースアイテム、4つのターゲットアイテム:

# mount --bind /mnt/test-mount/{source,target
# findmnt |grep test-mount
├─/mnt/test-mount/target                       /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
│ └─/mnt/test-mount/target                     /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
│   └─/mnt/test-mount/target                   /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
│     └─/mnt/test-mount/target                 /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
└─/mnt/test-mount/source                       /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
  └─/mnt/test-mount/source                     /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime
    └─/mnt/test-mount/source                   /dev/sda3[/mnt/test-mount/source]                ext4            rw,relatime

進展は1、3、7、15 ...、すなわち。n = 1 + 2^(n-1), 各インストールジョブごとに追加項目数が 2 倍になります。

その理由は何ですか?

答え1

スプレッドをインストールします。

これは、「MS_UNBINDABLEの例」で説明した「マウントポイント爆発の問題」の特定のケースです。マウントネームスペース(7)

systemdはデフォルトでマウント伝播を効果的に有効にします。たとえば、次/homeのようにブロックされたサブネームスペースでサービスを実行できます。システムランチャーオプションProtectHome=yes。インストールを許可:削除してサブネームスペースに伝播すると、デフォルトのejectネームスペースなどで引き続き正常に動作できます。

関連情報