mount namespaces について読んでいます。
マウント名前空間では、ホストファイルシステムに影響を与えることなく、ファイルシステムをマウントおよびアンマウントできます。そのため、完全に異なるデバイスのセットをマウントできます(通常は少なくなります)。
linux名前空間 やLXCなどを理解しようとしていますが、上記のステートメントの意味がよくわかりません。
私が理解しようとしているのは、コンテナ(1)が次のようなファイルをどのように持つことができるかです。
/foo/a.txt
/foo/bar/b.txt
そして、別のコンテナ(2)は次のようなファイルを持つことができます:
/foo/a.txt
/foo/x.txt
/foo/bar/b.txt
/foo/bar/y.txt
どこ /foo/a.txt
および/foo/bar/b.txt
コンテナ(1)と(2)は同じpathですが、おそらく内容が異なります:
# container (1)
cat /foo/a.txt #=> Hello from (1)
# container (2)
cat /foo/a.txt #=> Hello from (2)
これは、物理システム上のファイル(私は何も知らない)が一方向に保存されていることを意味します。しかし、「仮想」ファイルの集中データベースオペレーティングシステム内は、次のようになります。
db:
container1:
foo:
a.txt: Hello from a from (1)
bar:
b.txt: Hello from b from (1)
container2:
foo:
a.txt: Hello from a from (2)
x.txt: Hello from x from (2)
bar:
b.txt: Hello from b from (2)
y.txt: Hello from y from (2)
次に、次のような物理ファイル用のanother OSデータベースがあります。
drive1:
dir1:
foo:
a.txt
bar:
b.txt
dir2:
foo:
a.txt
x.txt
bar:
b.txt
y.txt
したがって、コンテナにファイルを作成すると、実際には2つの新しいレコードが作成されます。
これは私がそれが機能すると想像する方法です。これは、(1)ユーザーに(LXCコンテナまたはcgroup(これについてはあまり知りません))にwhat feel like完全な "ファイルを提示する方法があることを確認する方法ですシステム」では、(2)独自の完全にカスタマイズ可能なディレクトリ構造(まったく異なる仮想ファイルシステムと同じ名前のファイル/ディレクトリ/パスを持つ場合があります)を作成できます。これにより、(3)複数の異なる仮想ファイルファイルシステム/コンテナはお互いを上書きしません。
これがどのように機能するか、そうでない場合は実際にどのように機能するか(またはそれがどのように機能するかの概要)。
マウント名前空間は、マウントされたファイルシステムの配置が異なります。
マウントはファイルシステム内のサブディレクトリのバインドマウントになるため、これは非常に柔軟です。
_# unshare --mount # run a Shell in a new mount namespace
# mount --bind /usr/bin/ /mnt/
# ls /mnt/cp
/mnt/cp
# exit # exit the Shell, and hence the mount namespace
# ls /mnt/cp
ls: cannot access '/mnt/cp': No such file or directory
_
findmnt
コマンドを使用して、現在のマウントのセットを一覧表示できます。
完全なコンテナでは、ルートマウントが置き換えられ、完全に別のマウントツリーで作業します。これには、pivot_root()
システムコールなどの追加の詳細が含まれます。おそらく、その方法を正確に知る必要はありません。いくつかの詳細はここにあります: Linux名前空間でchrootを実行する方法?