マウント名前空間(まうんとなまえかんきょう)
最終更新:2026/4/28
マウント名前空間は、プロセスがファイルシステムのマウントポイントを分離して持つためのLinuxカーネルの機能である。
ポイント
各プロセスは、自身のマウント名前空間内で異なるファイルシステム構造を持つことができ、他のプロセスには影響を与えない。
概要
マウント名前空間は、Linuxカーネルの名前空間機能の一つであり、プロセスが持つファイルシステムのマウントポイントを分離する役割を担います。これにより、各プロセスは自身の環境において異なるファイルシステム構造を持つことが可能となり、セキュリティの向上やコンテナ技術の実現に貢献します。
歴史
マウント名前空間は、2005年にLinuxカーネルに導入されました。当初はコンテナ技術の基盤として利用されることを想定されていませんでしたが、Dockerなどの登場により、その重要性が高まりました。
仕組み
通常、すべてのプロセスは同じファイルシステム構造を共有します。しかし、マウント名前空間を使用することで、各プロセスは独立したマウントテーブルを持つようになります。これにより、あるプロセスがファイルシステムをマウントまたはアンマウントしても、他のプロセスには影響を与えません。
利用例
- コンテナ技術: Dockerなどのコンテナは、マウント名前空間を利用して、自身のファイルシステムを隔離し、ホストシステムへの影響を最小限に抑えます。
- chroot環境: chrootコマンドは、指定されたディレクトリをルートディレクトリとしてプロセスを実行します。これは、マウント名前空間を利用して実現されています。
- セキュリティ: マウント名前空間を使用することで、プロセスがアクセスできるファイルシステムを制限し、セキュリティを向上させることができます。
設定
マウント名前空間は、unshareコマンドやcloneシステムコールを使用して作成できます。unshareコマンドを使用すると、現在のプロセスから新しいマウント名前空間を分離できます。cloneシステムコールを使用すると、新しいプロセスを作成し、そのプロセスを新しいマウント名前空間に配置できます。
注意点
マウント名前空間は、ファイルシステムへのアクセスを分離しますが、完全に隔離するわけではありません。例えば、共有メモリやネットワークソケットなどのリソースは、依然としてプロセス間で共有されます。