<< Предыдущий раздел | /\ Содержание | >> Следующий раздел

Дерево директорий и монтирование

В Unix, в отличие от Dos/Windows, разным разделам дисков не присваиваются разные буквы, а все они образуют единое дерево директорий. Процесс добавления ("приклейки") раздела в любое место дерева называется монтированием (mounting). Разделы могут монтироваться как автоматически при загрузке, так и во время работы системы. "Отклейка" раздела от дерева называется размонтированием (unmounting).

При монтировании надо указывать системе три параметра: раздел, который надо смонтировать, директорию, в которой должен быть "виден" этот раздел (ее называют точкой монтирования -- mount point), и тип файловой системы. Кроме того, можно указывать дополнительные параметры -- например то, что смонтировать следует только для чтения (readonly).

Монтировать перед использованием надо даже съемные носители -- CD и дискеты, а перед "выемкой" -- размонтировать. Впрочем, для упрощения работы со съемными носителями есть специальные программы-автомонтировщики, которые автоматически монтируют диск при обращении к нему.

Названия физических устройств

Для ссылки на физический раздел всегда используется файл устройства, расположенный в директории /dev/. В разных клонах Unix используются разные способы именования физических разделов на дисках. Рассмотрим тот, который используется в Linux.

Все IDE-устройства в Linux имеют имена, начинающиеся на "hd" (Hard Drive), а SCSI-диски -- "sd" (SCSI Drive). Первый IDE-диск называется hda, второй -- hdb, третий -- hdc и т.д.

Разделы на дисках называются так же, как и сам диск, с добавлением числа, обозначающего номер раздела. Основные (primary) разделы имеют номера от 1 до 4, а дополнительные (logical) -- от 5 до 16. Даже если есть только один основной раздел, а остальные -- логические, то первый логический раздел будет иметь номер 5, а номера 2,3,4 будут неиспользованы.

Например, /dev/hda2 -- второй раздел первого IDE-диска; /dev/hdd7 -- седьмой (логический) раздел четвертого IDE-диска (slave-диск на втором IDE-контроллере).

Такая схема более удобна, чем используемая в Dos/Windows, где при добавлении/удалении нового диска или раздела часть букв дисков обязательно "съезжает".

Большинство современных CD-ROM для PC также подключаются к IDE. Поскольку на компакт-дисках нет разделов, то для ссылки на CD-ROM используется имя IDE-устройства -- чаще всего /dev/hdc. Инсталлятор обычно распознает CD-ROM и делает в /dev/ символьный линк типа cdrom->/dev/hdc.

Монтирование "руками"

Для монтирования служит команда mount. Обычно используется следующий формат:

mount -t тип устройство директория

В ключе "-t" указывается тип файловой системы.

Некоторые типы файловых систем
НазваниеСистема
ext2 Основная файловая система Linux (second extended filesystem)
msdos Система MS-DOS (имена 8.3)
vfat Система Windows95 (включая FAT32 в ядрах 2.2)
hpfs Система OS/2
ntfs Система WindowsNT (в ядрах 2.2)
iso9660Система CD-ROM -- включая стандартную ISO9660, RockRidge (9660 с расширениями Unix), Joliet (система для CD в Windows95/NT)
nfs Сетевая файловая система Unix
proc Специальная система ядра Unix

Пример (смонтировать раздел Windows95 C: (первый раздел первого диска)) в директорию /mnt/c):

mount -t vfat /dev/hda1 /mnt/c

Замечание
Директория, в которую производится монтирование, должна существовать -- сам ее mount не сделает.

Для указания дополнительных опций используется ключ "-o", которому указывается список опций, разделенных запятыми (без пробелов!).

Одна из самых часто используемых опций -- "ro", означающая монтирование только для чтения (ReadOnly). Ее противоположность -- "rw" (Read/Write).

Чтобы при монтировании разделов Dos/Window правильно обрабатывались имена файлов с русскими буквами, следует указывать опции "codepage=866,iocharset=koi8-r" (означает "кодировка на диске -- cp866, кодировка на экране и клавиатуре -- koi8-r"). Пример:

mount -t vfat /dev/hda1 /mnt/c -o codepage=866,iocharset=koi8-r

Для размонтирования используется команда umount. Ей можно указать или имя устройства, или точку монтирования. Для приведенного выше примера команды

umount /dev/hda1
и

umount /mnt/c
сделают одно и то же.

Если какие-то файлы или директории из этой файловой системы используются, то umount выдаст ошибку и ничего не сделает:

bobby:~# umount /mnt/c
umount: /mnt/c: device is busy
bobby:~# _

Под "использованием" директории понимается также то, что для какого-то процесса эта директория является текущей. Например, добиться занятости /mnt/c можно, просто выполнив в любом окне команду cd /mnt/c.

Чтобы узнать, кто является "виновником", можно воспользоваться командой fuser с ключом "-m" или программой lsof.

Автоматическое монтирование -- /etc/fstab

В файле /etc/fstab (File Systems TABle) содержится информация о файловых системах -- что надо монтировать при загрузке, а также то, какие типы файловых систем и точки монтирования следует использовать для определенных устройств.

Каждая строка в /etc/fstab содержит информацию об одной файловой системе и состоит из 6 полей, разделенных пробелами. Формат строки следующий:

device mountpoint fstype options dump_freq fsck_passno

Первые 4 поля мы уже рассмотрели.

В поле "dump_freq" указывается информация для программы dump (сколь часто следует выполнять резервное копирование данной файловой системы), при добавлении строк в fstab в нем можно указывать 0.

Поле "fsck_passno" используется при загрузке программой fsck (File System Check -- произносится "эфэсчек"). При добавлении строк в fstab в нем следует указывать 2 для файловых систем Unix (ext2) и 0 для NFS и систем msdos/vfat/ntfs и т.д.

Пример файла /etc/fstab:

#
# /etc/fstab
#
#device mountpoint filesystemtype options dump fsckorder

/dev/hda4     /                   ext2    defaults        1 1
/dev/hda1     /mnt/c              vfat    defaults        0 0
/dev/hda2     /usr                ext2    defaults,ro     0 2
/dev/hda3     swap                swap    defaults        0 0
/dev/fd0      /mnt/floppy         ext2    noauto          0 0
/dev/cdrom    /mnt/cdrom          iso9660 noauto,ro       0 0

Если не требуется указывать никаких опций, то надо использовать ключевое слово "defaults", чтобы сохранять формат. Ключевое слово "noauto" означает, что эту систему не надо автоматически монтировать при загрузке.

Предупреждение
Во многих текстовых редакторах по умолчанию включен автоматический перенос слов (word wrap). Поскольку строки в /etc/fstab обычно длинные, перед внесением изменений следует выключить автоперенос. В joe для этого надо нажать <Ctrl+T> и в появившемся меню выключить пункт Word Wrap.

Разделы для свопинга указываются в этом же файле и имеют тип "swap". Но эти строки командой mount пропускаются.

Если файловая система указана в /etc/fstab (пусть с опцией noauto), то при ручном монтировании команде mount достаточно указать лишь один параметр -- или имя устройства, или точку монтирования. Все остальное будет взято из /etc/fstab.

Следует заметить, что Linux подразумевает использование на дискетах системы ext2, а не msdos или vfat. Так что при монтировании дискеты в формате Dos следует использовать команду

mount -t vfat /mnt/floppy
.

Где еще брать информацию о работе с файловыми системами

Следует посмотреть man-страницы mount(8), umount(8), fstab(5), fuser(1), lsof(8).

Кроме того, много полезной информации содержится в главах 4 и 9 книги "UNIX: руководство системного администратора".


<< Предыдущий раздел | /\ Содержание | >> Следующий раздел