• Команды mount(8) и umount(8) автоматически заводят файл /etc/mtab, который содержит информацию, сходную с информацией в файле /proc/mounts, но являющуюся более детальной. В частности, файл /etc/mtab содержит специфичные для файловой системы параметры, передаваемые команде mount(8), которые не показаны в файле /proc/mounts. Однако поскольку системные вызовы mount() и umount() не обновляют файл /etc/mtab, информация в нем может оказаться неточной, если какое-либо приложение, которое монтирует или размонтирует устройства, не обновит его.

• Файл /etc/fstab, который обслуживается системным администратором, содержит описания всех доступных файловых систем в системе. Он используется командами mount(8), umount(8) и fsck(8).

Формат файлов /proc/mounts, /etc/mtab и /etc/fstab одинаков и описан на странице руководства fstab(5). Приведу пример строки из файла /proc/mounts:

/dev/sda9 /boot ext3 rw 0 0

Эта строка содержит шесть полей, таких как:

• имя монтируемого устройства;

• точка монтирования этого устройства;

• тип файловой системы;

• флаги монтирования. В приведенном примере флаг rw означает, что файловая система была смонтирована для чтения/записи;

• число, которое используется для управления операцией резервного копирования файловой системы с помощью команды dump(8). Данное поле и следующее за ним используются только в файле /etc/fstab; для файлов /proc/mounts и /etc/mtab эти поля всегда равны 0;

• число, которое используется для управления порядком проверки файловых систем командой fsck(8) во время загрузки системы.

На страницах руководства getfsent(3) и getmntent(3) документированы функции, которые можно использовать для чтения записей из этих файлов.

14.8.1. Монтирование файловой системы: mount()

Системный вызов mount() монтирует файловую систему, содержащуюся на устройстве, указанном в аргументе source, в каталог (точку монтирования), указанный в аргументе target.

#include

int mount(const char *source, const char *target, const char *fstype,

unsigned long mountflags, const void *data);

Возвращает 0 при успешном завершении и –1 при ошибке

Для первых двух аргументов использованы имена source и target, поскольку системный вызов mount() может выполнять и другие операции, помимо монтирования дисковой файловой системы в каталоги.

Аргумент fstype является строкой, которая идентифицирует тип файловой системы, расположенной на устройстве, например, ext4 или btrfs.

Аргумент mountflags является битовой маской, составленной с помощью команды ИЛИ (|) для нуля или для нескольких флагов, показанных в табл. 14.1. Эти флаги будут описаны подробнее далее.

Завершающий аргумент системного вызова mount() — data — является указателем на буфер с информацией, интерпретация которой зависит от файловой системы. Для большинства типов файловых систем этот аргумент представляет собой строку, в которой через запятую приведены значения параметров. Полный перечень этих параметров можно найти на странице руководства mount(8) (или в документации к файловой системе, если она не описана на странице mount(8)).

Таблица 14.1. Значения флагов mountflags системного вызова mount()

Флаг — Назначение

MS_BIND — Создать связанную точку монтирования (начиная с версии Linux 2.4)

MS_DIRSYNC — Сделать обновления каталогов синхронными (начиная с версии Linux 2.6)

MS_MANDLOCK — Разрешить обязательную блокировку файлов

MS_MOVE — Автоматически переносить точку монтирования в новое местоположение

MS_NOATIME — Не обновлять время последнего доступа для файлов

MS_NODEV — Не разрешать доступ к каталогм

MS_NODIRATIME — Не обновлять время последнего доступа для каталогов

MS_NOEXEC — Не разрешать выполнение программ

MS_NOSUID — Отключить программы с полномочиями setuid и setgid

MS_RDONLY — Монтировать только для чтения; создавать или изменять файлы нельзя

MS_REC — Рекурсивное монтирование (начиная с версии Linux 2.6.20)

MS_RELATIME — Обновлять время последнего доступа, только если оно старше времени последнего изменения или последнего изменения статуса (начиная с версии Linux 2.4.11)

MS_REMOUNT — Повторное монтирование с новыми аргументами mountflags и data

MS_STRICTATIME — Всегда обновлять время последнего доступа (начиная с версии Linux 2.6.30)

MS_SYNCHRONOUS — Сделать все обновления файлов и каталогов синхронными

Аргумент mountflags является битовой маской флагов, которые влияют на выполнение системного вызова mount(). Для этого аргумента можно не указывать флаг или же использовать следующие.

• MS_BIND (начиная с версии Linux 2.4) — создает связанную точку монтирования. Мы описываем эту функцию в разделе 14.9.4. Если указан этот флаг, аргументы fstype, mountflags и data игнорируются.

Перейти на страницу:

Похожие книги