Энциклопедия системного администратора Linux

         

Монтирование и демонтирование


Перед работой с файловой системой, она должна быть смонтирована. При этом операционная система выполняет некоторые действия, обеспечивающие функционирование монтируемой системы. Так как все файлы в системе UNIX принадлежат одной структуре каталогов, то эта операция обеспечивает работу с файловой системой, как с каталогом уже смонтированной.

Рассмотрим три различные файловые системы. Если две последние системы (2-ю и 3-ю) соответственно смонтировать к каталогам /home и /usr первой системы, то в итоге образуется файловая система с единой структурой каталогов (4): 1] 2] 3] / ддбддддд bin / ддбдддддд abc / ддбдддддд bin П П П цддддд dev цдддддд liw цдддддд etc П П П цддддд home юдддддд ftp юдддддд lib П цддддд etc П цддддд lib П юддддд usr 4] / ддбдддбд usr П П П цдддддд lib П П П цдддддд etc П П П юдддддд bin П цддддд lib П цддддд etc П цдддбд home П П П цдддддд ftp П П П цдддддд liw П П П юдддддд abc П цддддд bin П юддддд dev

В примере, рассмотреном ниже, показано, как это сделать. $ mount /dev/hda2 /home $ mount /dev/hda3 /usr $ Команда mount принимает два параметра. Первый их них файл устройства, соответствующий диску или разделу, на котором раположена файловая система. Вторым параметром является имя каталога, к которому будет монтироваться система. После выполнения этих команд содержимое файловых систем отображается в каталогах /home и /usr соответственно. Также можно сказать, что раздел /dev/hda2 смонтирован к каталогу /home, а /dev/hda3 к каталогу /usr. Существует различие между файлом устройства, /dev/hda2, и монтируемым каталогом, /home. Файл устройства предоставляет доступ к 'сырым' данным, расположенным на диске, а монтируемый каталог к файлам. Такой каталог называется узлом или точкой монтирования (mount point).

.

Linux поддерживает много файловых систем. Команда mount пытается сама определить тип файловой системы для монтирования, но не всегда у нее это получается. В таком случае Вы можете ей помочь параметром -t fstype, который задает тип файловой системы однозначно. Например, чтобы сммонтировать дискету MS-DOS скомандуйте: $ mount -t msdos /dev/fd0 /floppy $

Монтируемый каталог не обязательно должен быть пустым, хотя он должен существовать. Однако все файлы, в нем расположенные, будут недоступны после монтирования файловой системы. Открытые ранее файлы будут также доступны, а файлы, являющиеся жесткими ссылками из других каталогов, будут доступны с использованием имен ссылок. Таким образом, никакого ущерба не наносится и это даже может быть полезно. Например, некоторые делают каталог /tmp символической ссылкой на каталог /var/tmp . При загрузке системы, когда файловая система /var не смонтирована, каталог размещается в системе root. После того, как /var смонтирована, каталог /var/tmp, расположенный в файловой системе root, становится недоступным. Если же /var/tmp не существует в системе root, то перед монтированием /var создание и pабота с временными файлами будет невозможна.

Для защиты файловой системы от записи, команда mount запускается с опцией -r, после чего монтирование производится в режиме read-only. После этого ядро пресекает любые попытки записи, включая модификацию времени доступа к файлам в индексном дескрипторе. Монтирование с защитой от записи используется при работе с такими устройствами, как CD-ROM.

Возникает вопрос: каким же образом монтируется корневая файловая система (т.е. система root), так как очевидно, что она не может быть смонтирована на какую-либо другую. Система root монтируется во время загрузки, поэтому считается, что она всегда установлена (если бы она не была установлена, то компьютер не смог бы загрузиться). Название файловой системы, используемой для монтирования root, либо встроено в ядро, либо устанавливается при помощи LILO или rdev.

Обычно сначала система root монтируется в режиме read-only. Затем запускается программа fsck для проверки ее целостности и если все в порядке, то система перемонтируется (re-mount) в режиме read-write. fsck не следует запускать на смонтированной файловой системе, так как изменения, произведенные при ее выполнении, могут привести к повpеждению системы. Так как система root сначала монтируется в режиме read-only, то после ее проверки все неполадки могут быть полностью устранены при повторном монтировании.

На многих системах существуют и другие файловые системы, которые должны быть смонтированы во время загрузки. Их список содержится в файле /etc/fstab (см. man-руководство к fstab(5)). Детали монтирования могут сильно отличаться на каждой системе. Ряд советов можно получить в .

Если файловая система для работы больше не требуется, то она может быть размонтирована. Для этого используется команда umount с одним параметром. Это может быть как файл устройства, так и узел монтирования. Например, для демонтирования каталогов, рассмотренных в предыдущем примере, используются следующие команды: $ umount /dev/hda2 $ umount /usr $

После работы с дисководом для дискет следует каждый раз применять эту команду, так как до размонтирования системы нельзя быть уверенным, что данные были записаны на диск, а не остались в буфере. Если они остались в буфере, извлечение дискеты ничем хорошим не кончится. Не вынимайте дискету, не размонтировав ее!!! Если Вы только читали с дискеты, ничего страшного произойти вроде бы не должно, но вот если записывали... Конечно, такой подход при интенсивной работе с дискетами надоедает. Но есть утилита automount, которая облегчает Вам жизнь.

Для выполнения операций монтирования и демонтирования требуется наличие прав доступа пользователя root. Причин к тому много, но главное то, что разрешение монтировать кому угодно что угодно приведет к появлению ловушек для администратора. Например, загрузки с дискеты программы /bin/sh с правами root... Однако, многие пользователи довольно часто работают с дисководом и для решения этой проблемы существует несколько способов:




  • Сообщить всем пароль пользователя root. Это самый простой, но далеко не лучший выход. Он может использоваться на некоторых системах, не нуждающихся в защите (обычно не подключенных к какой-либо сети). Правда, я пока не видел таких Linux-систем...



  • Применять какую-либо программу (например, sudo), позволяющую всем использовать команду mount. Это также не лучший способ по причине плохой защиты, хотя его применение не предоставляет напpямую права root каждому пользователю.



  • Применение пакета mtools, используемого только для работы с файловой системой MS-DOS без выполнения операции монтирования. Используется только в тех случаях, когда дисковод применяется для работы с дисками системы MS-DOS.



  • Поместить список файлов устройств, используемых при работе с гибкими дисками, и доступных узлов монтирования вместе с нужными опциями в файл /etc/fstab..

Последний метод может быть реализован путем добавления в файл /etc/fstab следующей строки: /dev/fd0 /floppy msdos user,noauto 0 0 Сначала указывается файл устройства для монтирования, затем каталог, в который монтируется устройство, тип файловой системы, опции частота резервирования командой dump) и очередность проверки командой fsck (для указания порядка в котором файловые системы проверяются после загрузки, 0 указывает не проводить проверку).

Опция noauto запрещает автоматическое монтирование при начальной загрузке системы. Команда mount -a не смонтирует такую файловую систему. Опция user позволяет любому пользователю монтировать указанную файловую систему и, по причине защиты системы, запрещает выполнение программ и работу с файлами устройств, расположенных на смонтированной системе. После этого, любой пользователь может выполнить следующую команду: $ mount /floppy $ Для демонтирования системы используется команда umount с соответствующими параметрами.

Если нужно работать с дискетами, имеющими различные типы файловой системы, создайте разные точки монтирования. Опции для каждой точки будут своими. Например, для обеспечения работы с дискетами в форматах MS-DOS и ext2 внесите в /etc/fstab строки: /dev/fd0 /dosfloppy msdos user,noauto 0 0 /dev/fd0 /ext2floppy ext2 user,noauto 0 0 Для файловой системы MS-DOS (не только для дискет), ограничьте доступ опциями uid, gid, и umask подробно рассмотренных в man-руководстве по команде mount.


Содержание раздела