Linuxはバインドマウントに関する情報を保持していないため、それらとそのソースのリストを取得する方法はないと多くの人が言い続けています。ここではいくつかの例を示します。
ここのコメントの1つから:
IIRCこの情報はどこにも保持されません
mount --bind
。2つのコピーは同等であり、もう一方よりも「オリジナル」なものはありません。結局のところ、すでにマウントを解除して/mnt
いると、オリジナルは存在しません。このサイトの回答から:
したがって、どのマウントがバインドマウントであったかを記憶する唯一の方法は、に残って
/etc/mtab
いるマウントコマンドのログです。バインドマウント操作は、バインドマウントオプションで示されます(ファイルシステムタイプが無視されます)。しかし、mountには、特定のオプションセットでマウントされたファイルシステムのみをリストするオプションはありません。-
これは意図的なものです。両方のマウントポイントはすべての点で完全に等しいため、カーネルはそれらを区別するためのフラグを保持しません。
上記はナンセンスです。このツールfindmnt
は、バインドマウントのソースパスを一覧表示できます(の形式で、デバイスではなくソースパスのみdevice[source-path]
を一覧表示することも試みています)。Linuxカーネルがバインドマウントを維持する場合は、その情報をどこかに保存する必要があります。それ以外の場合は、バインドされていることがわかりません。では、このデータはどこにあるのでしょうか?RAMのあいまいな領域に格納されていますか?DOESはに見てどこか?/home
/users
findmnt
/proc
/proc/self/mountinfo
比較的最近再構築されたと思います。私は以前RHEL6マシンを使用していましたが、パス情報がありませんでしたが、私のRHEL7マシンはそうであり、あなたのリンクで述べたようにWheezyも同様です。
/dev/A
に装着されている/B
と、あなたはmount --bind /B /C
、古いカーネルは唯一覚えている/B → /dev/A
と/C → /dev/A
、彼らはとの一切の関係覚えていない/B
とします/C
。アンマウントだから/B
自然には影響を与えません/C
。新しいカーネルは、それ/C
がのバインドマウントだったことを覚えていますが、マウント解除されても動作し続けることを/B
妨げないので、正確な方法はわかりません。/C
/B
findmnt
実行しているのはどのバージョンで、どのオプションを使用していますか?鉱山はそれをそのように出力せず、使用しているように見えるソースコードを見ると、この情報も含まれていない_PATH_PROC_MOUNTINFO
ように見え/proc/self/mountinfo
ます。