Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Файловые системы Linux

Управление системой Linux при помощи fstab

Оригинал: Controlling Your Linux System With fstab
Автор: Akkana Peck
Дата публикации: 21 апреля 2010
Перевод: Д.Оводов
Дата перевода: январь 2011 г.

Немного о fstab

Небольшой файл /etc/fstab дает вам контроль над всем файловыми системами, которые монтируются вашей системой при загрузке, включая разделы Windows и общие сетевые ресурсы. Также с его помощью можно управлять точками монтирования съемных запоминающих устройств, например, USB-флэшек или внешних жестких дисков. Акана Пэк покажет, как это сделать.

/etc/fstab -- этот файл есть на каждом Linux-компьютере, он контролирует, какая файловая система куда монтируется.

Его страница руководства, man fstab, начинается следующей фразой:

    fstab предназначен только для чтения программами, не для записи; обязанность системного администратора - соответствующим образом создать этот файл и поддерживать актуальность настроек в нем.

К счастью, это немного не так. В наше время fstab обычно создается для вас установочной или другой программой. Так что не сильно беспокойтесь об этой "обязанности".

Однако если вы хотите вникнуть в fstab, понять и изменять его весьма просто.

Стандартный fstab

Файл fstab на современных дистрибутивах Linux выглядит немного устрашающе. Вот этот файл из системы Ubuntu:

А теперь разоблачение ничтожности этих строк! На Рисунке 1 показано из назначение (щелкните, чтобы увеличить):

Назначение полей в файле fstab

Устройства и их UUIDы

Давайте начнем со следующего устройства: UUID=2ad9188b-9d1c-4102-bf24-4b5ad456a701. Что это значит?

В давние времена поле с именем устройства в fstab было намного проще, обычно писали что-нибудь вроде /dev/hda3 для третьего раздела на первом IDE-диске.

Но потом системы стали гораздо сложнее. И USB, и SATA диски используют драйвер диска sd, изначально вообще написанный для SCSI-дисков. Но совершенно невозможно предсказать их порядок. Если у вас есть несколько SATA и USB-дисков или если вы часто подключаете и отключаете диски, то можно увидеть, что ваша корневая файловая система в один день находится на sda2, а на следующих день - на sdc2.

Чтобы избежать такой неприятности, fstab и поддерживает использование UUID - "Universally Unique IDentifier" ("Универсально-уникальный идентификатор", на русский язык обычно не переводится), который идентифицирует каждую файловую систему.

Как же найти, какой раздел диска соответствует какому UUID? Вы, конечно, видели такие комментарии в fstab:

# / was on /dev/sda6 during installation
UUID=2ad9188b-9d1c-4102-bf24-4b5ad456a701 /               ext3    errors=remount-ro 0       1

Не верьте этим комментариям. Ваш корневой каталог, быть может, и был на sda6 когда-то, но это совершенно не означает то, что он там и сейчас.

Гораздо безопаснее проверить его текущее местоположение командой blkid:

$ blkid
/dev/sda1: UUID="702be669-1Aee-4128-8c57-60b58bc91f59" TYPE="ext2" 
/dev/sda3: UUID="615aaed5-0dba-4204-9717-c9a00ff411ea" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda5: UUID="0c5121ff-331a-4ae2-b8be-e0b10bcae62f" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda6: UUID="d2a1e4aa-6589-4846-ba58-107d32a25375" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda7: UUID="1533cdc3-635f-4552-818b-1fadce9ea7f8" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda8: UUID="b24fd645-7c28-431b-883d-0a6cf03340ed" SEC_TYPE="ext2" TYPE="ext3" 
/dev/sda9: TYPE="swap"
$ blkid -o value -s UUID /dev/sda8
b24fd645-7c28-431b-883d-0a6cf03340ed

Также можно посмотреть /dev/disk/by-uuid:

$ ls -l /dev/disk/by-uuid
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 0c5121ff-331a-4ae2-b8be-e0b10bcae62f -> ../../sda5
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 615aaed5-0dba-4204-9717-c9a00ff411ea -> ../../sda3
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 1533cdc3-635f-4552-818b-1fadce9ea7f8 -> ../../sda7
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 b24fd645-7c28-431b-883d-0a6cf03340ed -> ../../sda8
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 ca8ec122-33c7-4765-bd65-78a15c58def3 -> ../../sda2
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 d2a1e4aa-6589-4846-ba58-107d32a25375 -> ../../sda6
lrwxrwxrwx 1 root root 10 2010-04-18 09:06 702be669-1Aee-4128-8c57-60b58bc91f59 -> ../../sda1

Некоторые дистрибутивы, вместо использования UUIDов, добавляют метку к каждой файловой системе:

LABEL=/         /       ext3         defaults           1    1

Это, конечно, гораздо проще читать, но в последствии с этим могут возникнуть проблемы. Если вы устанавливаете несколько разных экземпляров Linux на разные разделы, то в итоге вы получите несколько разделов с одинаковыми метками. И как тогда сказать, какой из них смонтирован?

Не нравятся все эти UUIDы и метки? Можно их и не использовать. Если у вас простая система только с одним диском, то простой синтаксис никто не отменял:

/dev/sda6     /       ext3    errors=remount-ro      0       1

Точка монтирования и тип файловой системы

Следующие два поля говорят сами за себя. Точка монтирования - любое место, куда вы хотите примонтировать файловую систему: /, /home, /boot или что-нибудь еще. Эта точка должна быть пустой, уже существующей, директорией. Если она не пустая, то все, что в ней находится, будет скрыто, когда вы монтируете что-либо поверх.

Тип файловой системы может быть ext2, ext3, файловые системы Windows - vfat и ntfs, или iso9660, udf для CD/DVD. Можно также использовать auto, и тогда Linux попробует сам определить тип файловой системы. Чтобы посмотреть весь список поддерживаемый файловых систем, посмотрите man filesystems.

Параметры

Данное поле самое сложное. Здесь пишется "все остальное" -- все, что не входит в другие поля. Если у вас нет особых параметров, то можно просто использовать значения по умолчанию (defaults).

Здесь можно перечислять через запятую столько параметров, сколько вам хочется. Например, для CDROM можно указать ro,user,noauto,exec.

ro - запуск в режиме "read-only", только для чтения;

user - пользователю не нужны права суперпользователя, чтобы смонтировать этот диск: любой пользователь может ввести mount /media/cdrom0, если у вас нет сервиса, который сам его монтирует;

noauto - система не будет пытаться смонтировать этот диск во время загрузки -- хорошая идея для съемных дисков. Но это не означает, что какой-нибудь процесс вроде hal не может начать пытаться автоматически его смонтировать позднее или когда вы вставите CD -- это контролируется в другом месте;

exec - разрешить запускать программы с этой файловой системы. Это запрещено на CDROM и разделах Windows.

Если вы используете exec на разделах Windows, вам может понадобиться параметр fmask=111: файловые системы Windows не имеют прав, но вы должны убедиться, что данный параметр указан.

Соединив все это вместе, можно получить запись, которая будет очень полезна на системах, в которых USB-диски автоматически не монтируются:

/dev/sdb1       /stuff        vfat      user,noauto,exec,fmask=111 0 0

Если ваше устройство располагается не на /dev/sdb1, поправьте, как необходимо. Затем выполните команду sudo mkdir /stuff, и, когда вы подключаете вашу камеру, mp3-плеер или USB-флэшку, вы сможете смонтировать их, выполнив команду mount /stuff.

Чтобы получить полный список доступных параметров, откройте man mount и пролистайте до FILESYSTEM INDEPENDENT MOUNT OPTIONS и FILESYSTEM SPECIFIC MOUNT OPTIONS.

dump и pass

Dump определяет, как часто ваша файловая система будет проходить резервное копирование. Большинство людей не используют это поле, но, если вы используете автоматизированную систему резервного копирования, оно может вам понадобиться.

Pass определяет, какое и как часто устройство будет проверено fsck перед монтированием. Обычно используется 1 для корневой файловой системы, 2 для других регулярно монтируемых файловых систем и 0 для файловых систем, которые по умолчанию не монтируются.



Средняя оценка 5 при 2 голосовавших