web-dev-qa-db-ja.com

Linuxの/ etc / mtabとは何ですか?

とは /etc/mtab Linuxでは?

なぜそれが必要で、それを持っていることの利点は何ですか?

30
Sathish kumar
%ファイル/etc/mtab
/etc/mtab:../proc/self/mounts
へのシンボリックリンク%file /proc/mounts
/proc/mounts:シンボリックリンク自己/マウント
%

_/etc/mtab_は互換性メカニズムです。数十年前、UNIXには既存のマウント情報を読み取るためのシステムコールがありませんでした。代わりに、ファイルシステムをマウントしたプログラムは、マウントされた場所の_/etc/mtab_にテーブルを協調的かつ自主的に維持することが期待されていました。

明らかな理由により、これは理想的なメカニズムではありませんでした。

Linuxは "procfs"の概念を獲得し、Linuxが得たものの1つは、mounts疑似正規ファイルの形式で、このテーブルのカーネル管理バージョンでした。カーネルからマウント情報を読み取るための「システムコール」は、そのファイルに対するオープン-リード-クローズシーケンスになり、その後、人間が読み取れる形式から機械が読み取れる形式(微妙なキャッチを含むもの)への結果を解析します。 2週間前のバグレポートから確認できます)。

したがって、_/etc/mtab_は一般的に_/proc/mounts_へのシンボリックリンクになり、その名前をハードワイヤードしたプログラムがそのファイルからマウントテーブルを読み取り続けることができるようになりました。自分自身を最新に保つために。 (ただし、_/etc/mtab_が書き込み可能な通常のファイルであることが判明した場合でも、それらの一部はそのまま残ります。カーネル以外のすべてのものが不足しているmountsの正規化情報が_/etc/mtab_の一般的な問題を上回るわけではありませんが、必要なものはそれほど多くありません。

現在、各プロセスはマウントされたものの独自の個別のビューを持つことができ、結果として、procfs内の各プロセスに個別のmountsファイルが存在し、各プロセスの独自のテーブルにself _self/mounts_および_/proc/mounts_としてのシンボリックリンクはalsoであり、互換性メカニズムになりました。 (興味深いことに、プロセスごとのmountsmountsの形式も、現在のLinux docoには文書化されていませんが、類似のmountinfo疑似正規ファイルがあります。)

SunOS/Solarisにも同様のメカニズムがあります。 _/etc/mnttab_ファイルは実際には単一ファイルのファイルシステムであり、テーブルの読み取りに加えて、そのファイルへのオープンファイル記述子を介して、read()システムコールを使用して、マウントポイントを監視できます。 poll()で変更し、ioctl()でさらにさまざまな情報を取得します。

HP-UXでは、_/etc/mnttab_も同様にファイルの名前ですが、バージョン11の時点では、通常のファイルであり、その内容はシステムユーティリティプログラムによって協調的に維持されていました。

AIXは、プログラムが解析しなければならない人間が読めるテキストテーブルをエクスポートせず、同等のファイルはありません。同様に、BSDには、プログラムが人間が読める中間形式を介してマーシャリングせずに、マシンが読める形式でカーネルからマウントテーブルを取得するための、完全なシステムコールgetfsstat()がFreeBSDとOpenBSDにあります。

参考文献

51
JdeBP

man mountによると:

プログラムは伝統的に、現在マウントされているファイルシステムのリストをファイル/ etc/mtabに維持およびマウント解除していました。この実際のmtabファイルは引き続きサポートされますが、現在のLinuxシステムでは、/ proc/mountsへのシンボリックリンクを作成することをお勧めします。ユーザー空間で維持される通常のmtabファイルは、名前空間、コンテナ、その他の高度なLinux機能と確実に連携できないためです。

/etc/mtabに記録せずにマウントした場合:

-n、-no-mtab

/ etc/mtabに書き込まずにマウントします。これは、たとえば/ etcが読み取り専用ファイルシステムにある場合に必要です。

より多くのニュアンスがマニュアルページに記載されています。

12
Christopher