Що таке / etc / mtab в Linux?


30

Що /etc/mtabв Linux?

Для чого це потрібно і переваги його наявності?



Мені здається, що це неприємно бракувати man 5 mtab.
Вейджун Чжоу

Відповіді:


51
% файл / тощо / mtab
/ etc / mtab: символічне посилання на ../proc/self/mounts
% file / proc / mounts
/ proc / mounts: символічне посилання на self / mounts
%

/etc/mtabє механізмом сумісності. Десятиліття тому в Unix не було системного виклику для зчитування наявної інформації про встановлення. Натомість від програм, які монтували файлові системи, очікувались спільно та добровільно підтримувати таблицю /etc/mtabтого, що було встановлено куди.

З зрозумілих причин це не був ідеальним механізмом.

Linux отримав поняття "procfs", і однією з речей, яку він отримав, була підтримувана ядром версія цієї таблиці у вигляді mountsпсевдорегулярного файлу. "Системний виклик" для зчитування інформації про змонтування з ядра став послідовністю відкритого читання-закриття проти цього файлу з подальшим розбором результату від людини, читаної до машиночитаної форми (те, що має певні вилови, як ви видно із звітів про помилки, що минули понад півтора тижня тому).

/etc/mtabТаким чином, в народі стало символічним посиланням на це /proc/mounts, дозволяючи програмам, які з таким провідником провіднили це ім'я, постійно читати таблицю монтування з цього файлу, що програмам, які монтували та відключали файлові системи, більше не потрібно явно робити що-небудь, щоб бути в курсі оновлень. (Деякі з них все-таки будуть, хоча /etc/mtabвиявляться звичайним файлом, що можна записати. І є кілька найважливіших випадків, коли нормалізована інформація, у mountsякій бракує всіх матеріалів, що не мають ядра, не зовсім необхідна; хоча вони не переважають загальні проблеми з /etc/mtab.)

Кожен процес може в даний час має свій індивідуальний вид , що встановлений, і є , як наслідок тепер окремі mountsфайли для кожного процесу в PROCFS, власна таблиця кожного процесу є доступним для нього через selfсимволічне посилання , як self/mountsі /proc/mountsє також тепер сумісністю механізм. (Цікаво, що ні поточний процес, mountsні формат mountsне задокументовані в поточному doco Linux, хоча аналогічний mountinfoпсевдорегулярний файл є.)

SunOS / Solaris має подібний механізм. /etc/mnttabФайл насправді є одним файлом файлової системи, і на додаток до читання таблиці, з допомогою дескриптора відкритого файлу в цей файл, з read()системним викликом, можна спостерігати за змінами монтажу точки з poll()і отримати різні додаткові фрагменти інформації з ioctl().

У HP-UX /etc/mnttabтак само є ім'я файлу, але, як і у версії 11, це був звичайний файл, вміст якого спільно підтримувався програмними програмами системи.

AIX не експортує текстову таблицю, читану людиною, яку програми повинні розбирати, і не існує еквівалентного файлу. Аналогічно, BSD мають повноцінні системні виклики getfsstat()на FreeBSD та OpenBSD для програм, щоб отримати таблицю монтажу з ядра в машиночитаному вигляді, не перекладаючи його на прочитувану людиною проміжну форму.

Подальше читання


У доповнення до мого коментаря до питання тут є mtab(5)старі часи: man.cat-v.org/unix_8th/5/mtab .
Вейджун Чжоу

2
не тільки /proc/mounts, але /proc/self/mountsй сам механізм сумісності; він відображає лише підмножину інформації, доступної в /proc/self/mountinfo. Формат /proc/self/mountsдокументально зафіксований proc(5)як ідентичнийfstab(5)
Мосвія

хоча правда, fstab (5) розповідає лише про місця, замінені восьмеричними втечами, тоді як це пробіли, вкладки, нові рядки та зворотні риски
mosvy

Я знаю псевдофайли та звичайні файли, але що таке звичайний псевдофайл?
Герріт

@gerrit - це звичайний файл, розмір 0, але все ще містить дані ;-)
mosvy

12

Відповідно до man mount:

Програми монтують та додають традиційно підтримуваний список поточно встановлених файлових систем у файлі / etc / mtab. Цей реальний файл mtab все ще підтримується, але в сучасних системах Linux краще зробити його посиланням на / proc / mounts замість цього, оскільки звичайний файл mtab, що підтримується в просторі користувачів, не може надійно працювати з просторами імен, контейнерами та іншими розширеними функціями Linux.

На монтажі без запису в /etc/mtab:

-n, --no-mtab

Монтувати без запису в / etc / mtab. Це необхідно, наприклад, коли / etc знаходиться у файловій системі лише для читання.

Ще багато нюансів наведено на сторінці керівництва.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.