Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1321 / 264 | Оценка: 4.34 / 3.65 | Длительность: 21:13:00
Лекция 6:

Файловая система

Монтирование и демонтирование файловых систем

При старте системы после загрузки ядра и запуска процесса init инициируется проверка тех файловых систем, которые следует проверить и смонтировать автоматически. Их список содержится в файле /etc/vfstab1Внимание! В других системах UNIX этот файл имеет другое название – /etc/fstab . Типичный файл /etc/vfstab выглядит так:

#device              device           mount        FS    fsck mount   mount
#to mount            to fsck          point        type  pass at boot options
#
fd                   -                /dev/fd      fd    -    no      -
/proc                -                /proc        proc  -    no      -
/dev/dsk/c0d0s1      -                -            swap  -    no      -
/dev/dsk/c0d0s0      /dev/rdsk/c0d0s0 /            ufs   1    no      -
/dev/dsk/c0d0p0:boot -                /boot        pcfs  -    no      -
/dev/dsk/c0d0s7      /dev/rdsk/c0d0s7 /export/home ufs   2    yes     -
swap                 -                /tmp         tmpfs -    yes     -

Те файловые системы, которые в столбце mount at boot отмечены как yes, будут проверены и смонтированы при старте системы. Файловую систему можно смонтировать в любой момент, надо лишь указать ей в качестве точки монтирования пустой каталог, который уже существует и доступен в системе. Операцию монтирования и демонтирования файловой системы может осуществить только root.

Монтирование файловой системы выполняется командой mount:

mount device mount_point

Например

mount /dev/dsk/c0d1s0 /test

Для монтирования файловой системы, которая описана в /etc/vfstab, можно не указывать имя файла устройства, а сразу указать точку монтирования. Такую "сокращенную" команду mount можно применять только для монтирования файловых систем, перечисленных в /etc/vfstab.

При монтировании файловой системы следует явно указывать ее тип, если он отличается от UFS.

Файловые системы ZFS монтируются автоматически при загрузке, если при их настройке не было специально указано, что их не надо монтировать автоматически, и проверка файловой системы ZFS не требуется.

Демонтирование файловой системы делает ее недоступной для чтения и записи, но файлы, которые расположены на демонтируемом разделе, конечно же, остаются на месте. Просто после демонтирования они не видны: точка монтирования снова превращается в пустой каталог, как до монтирования в нее диска или раздела.

Нельзя демонтировать занятую файловую систему. Занятой считается такая файловая система, файл с которой открыт в настоящее время кем-то из пользователей или каталог которой является текущим каталогом кого-то из работающих в системе пользователей. В разделе "Определение процессов, занявших файл" обсуждается, как выяснить, какой именно процесс занял тот или иной файл в системе (см. также fuser(1M) ).

Чтобы все-таки демонтировать файловую систему, следует найти и устранить причину ее занятости. Часто для этого достаточно просто самому выйти из того каталога, который собираешься демонтировать. Это типичная ошибка системного администратора: пытаться демонтировать /usr в тот момент, когда находишься в /usr/admin или подобном подкаталоге, который лежит в том же разделе, что и /usr.

Демонтирование файловой системы выполняется командой umount:

umount mount_point

Например

umount /mnt

Монтирование дискет и прочих сменных носителей

Для монтирования дискет, компакт-дисков и прочих сменных носителей в Solaris имеется специальная программа vold (Volume Management daemon). Она следит за тем, вставлены ли компакт-диск, дискета, или, к примеру, zip-диск в соответствующее устройство. Как только диск оказывается в устройстве, vold вызывает программу volcheck, чтобы проверить, действительно ли в привод установили новый диск, а затем программу rmmount для монтирования диска в заранее определенную точку монтирования. Программа rmmount выясняет тип файловой системы вставленного диска, и, если этот тип поддерживается, монтирует диск. Список предопределенных точек монтирования можно посмотреть с помощью

man rmmount

Поведение rmmount определяется файлом конфигурации /etc/rmmount.conf.

Программу rmmount можно запускать и вручную. Кроме того, можно применить команду volrmmount для форсирования перемонтирования или демонтирования файловой системы на сменном носителе. Детали ее использования следует почерпнуть в man volrmmount.

Функцию vold могут исполнять и другие компоненты системы, например, соответствующий компонент графической среды GNOME.

Суперблок

Суперблок – это блок в начале диска, содержащий общую информацию о диске и файловой системе на ней. Роль суперблока в ZFS играет uber-блок, также содержащий информацию, необходимую ZFS для работы с этим диском как с элементом пула ZFS. Суперблок в UFS содержит общую информацию о файловой системе как совокупности файлов на данном разделе жесткого диска, в частности, размер раздела UNIX, число свободных и занятых блоков и индексных дескрипторов и флаг целостности файловой системы. Подробнее о суперблоке в UFS и uber-блоке в ZFS рассказано в лекциях "Устройство и администрирование файловой системы UFS" и "Концепция, устройство и администрирование файловой системы ZFS" соответственно.

Таблица индексных дескрипторов

В виртуальной файловой системе таблица индексных дескрипторов представляет собой таблицу, каждый элемент которой описывает одну логическую сущность. Как правило, такой сущностью является файл или каталог. Каталог по сути дела является файлом специального типа. Каждый индексный дескриптор содержит ряд полей: тип файла, который описывается данным дескриптором, время последней модификации файла, время последнего доступа к файлу, время модификации индексного дескриптора, права доступа к файлу, идентификаторы владельца файла и группы файла и ряд других. Вся информация о файле, кроме его имени, хранится в индексном дескрипторе, имя файла хранится в каталоге, в котором находится файл. Более подробно о таблице индексных дескрипторов в UFS рассказано в "Устройство и администрирование файловой системы UFS" .

Дерево каталогов

Файлы в UNIX'e разложены по каталогам. Каталоги образуют древовидную структуру: есть корневой каталог, который обозначается знаком "/" (слэш), и его подкаталоги. В каждом из последних есть свои подкаталоги и т.д. Ограничений на число файлов в каталоге нет. Разные каталоги ("ветви" дерева каталогов) могут размещаться на разных дисках, это незаметно для пользователя. Чтобы обратиться к файлу, не нужно знать о том, на каком физическом устройстве или разделе диска записан файл. Это значит, что лихорадочный поиск по дискам С:, D: E:, K:, R:, Y: не знаком человеку, работающему с UNIX'ом. Он лихорадочно ищет потерянные файлы в густой кроне UNIX-каталогов, начиная от корня.

Между прочим, забавно, что уже много лет все упорно называют деревом структуру каталогов, у которой корень находится наверху, а его ближайшие отростки-подкаталоги называются каталогами верхнего уровня... Кто из нас видел деревья, растущие кронами вниз?

Поддерживаемые типы файловых систем

Основными ("родными") файловыми системами Solaris являются UFS (Unix file system) и ZFS (Zettabyte File System). Всего Solaris 10 поддерживает 14 файловых систем, перечисленных в табл. 6.2. Кроме этого, в кластерах поддерживается файловая система Lustre, разработанная компанией CFS, Inc. (от Cluster File System). Компания CFS была куплена компанией Sun Microsystems в 2007 году.

Таблица 6.2. Файловые системы, поддерживаемые Solaris 10
Файловая система Тип Устройство Описание
UFS обычная диск родная файловая система Solaris
ZFS обычная диск или их множество новая транзакционная система, родная для Solaris
smbfs обычная сеть экспортируемая файловая система, она же – разделяемые каталоги серверов семейства Windows, она же – SMB или CIFS
VxFS обычная диск журналируемая система от Veritas Corp (поддержка устанавливается отдельно)
pcfs обычная диск MSDOS FAT и FAT32
hsfs обычная диск файловая система High Sierra (для CD-ROM); она же - ISO9660
tmpfs обычная память использует оперативную память и область свопинга
nfs псевдосистема сеть файловая система для монтирования каталогов на других компьютерах (подобно разделяемым каталогам Windows)
cachefs псевдосистема другая ФС использует локальный диск для кэширования удаленной файловой системы NFS
autofs псевдосистема другая ФС использует динамические объекты для монтирования других файловых систем
specfs псевдосистема драйверы файловая система файлов устройств /dev
procfs псевдосистема ядро /proc – отображение процессов в структуру ФС
sockfs псевдосистема сеть соединения типа "сокет"
fifos псевдосистема файлы программные каналы (pipe API)

В довольно старых версиях UNIX поддерживалась всего одна файловая система. С увеличением разнообразия носителей возникла необходимость поддержки разнородных файловых систем на носителях разной природы. Так в 1985 году компания Sun Microsystems пришла к реализации концепции виртуальной файловой системы.

Виртуальная файловая система представляет собой абстрактную файловую систему, которая позволяет операционной системе одинаковым образом обращаться к файловым системам разных типов.

Важно: системные вызовы, подобные fopen() и chmod(), а также команды манипулирования файлами ( cp, mv, rm и другие), по сути дела, работают именно с абстракцией файловой системы, т.е. с виртуальной файловой системой, которая имеет все свойства вышеописанной POSIX-совместимой файловой системы. От низкоуровневых действий и необходимости вникать в подробности реализации конкретной файловой системы на конкретном физическом устройстве их надежно защищает реализация виртуальной файловой системы.

К 1985 году операционные системы фирмы Sun использовали Berkeley fast filesystem (FFS). Эта файловая система базировалась на концепции индексных дескрипторов, которая органично трансформировалась в концепцию виртуальных индексных дескрипторов в новой файловой системе UFS, вобравшей в себя структуру FFS и новые идеи организации виртуальной файловой системы. Взаимодействие независимого от конкретного типа файловой системы уровня виртуальной файловой системы и файловых систем строго определенных типов иллюстрирует рис. 6.5.

Структура виртуальной файловой системы Solaris

Рис. 6.5. Структура виртуальной файловой системы Solaris

Файловая система UFS претерпела некоторые изменения с 1985 года. Так, начиная с выпуска Solaris 9 8/03 поддерживаются многотерабайтные разделы, в то время как до этого UFS в Solaris могла работать только с разделами размером до 1 Тб. В настоящее время большие дисковые системы имеет смысл использовать в качестве элементов пула ZFS, так как файловая система ZFS лучше всего подходит для управления большими дисковыми пространствами.

Файловые системы UFS, VxFS и ZFS, поддерживаемые в Solaris, отличаются по некоторым важным параметрам, влияющим на их надежность и производительность. В табл. 6.3 показано, что различные файловые системы обладают разными алгоритмами выделения пространства под файлы, а также механизмом журналирования.

Таблица 6.3. Некоторые свойства файловых систем UFS, VxFS и QFS
Файловая система Как выделяется пространство под файл Есть ли журналирование
UFS блоками (block) да
VxFS экстентами (extent) да
ZFS блоками (block) не требуется

Выделение пространства блоками позволяет минимизировать фрагментацию файловой системы, а выделение пространства экстентами (большими частями пространства диска, состоящими из многих блоков) дает возможность снизить объем служебной информации, которая записывается на диск.

В файловой системе UFS размер блока может составлять от 512 до 8192 байт, по умолчанию в Solaris принят размер 8192 байт.

В Solaris поддерживается журналирование (logging) файловых систем UFS и VxFS. Журналирование позволяет записывать в журнал информацию обо всех начатых транзакциях. Если транзакция (т.е. операция записи на диск) по каким-то причинам не была завершена (например, отключилось питание), то после перезапуска системы файловая система будет автоматически возвращена в состояние, в котором она была до начала транзакции. Подобную функциональность предоставляет файловая система ext3fs в Linux, reiserfs для FreeBSD и Linux и некоторые другие.

В последние годы непременным условием использования файловой системы стала поддержка современных дисков больших объемов и больших файлов. Если несколько лет назад "большим" назывался диск объемом в 1 гигабайт, то сейчас дисковые массивы объемом в несколько терабайт становятся обычными для систем среднего класса. Скоро они придут в системы малых офисов и в дома, а сети предприятий начнут работать с серверами, в которых установлены дисковые массивы, содержащие десятки и сотни терабайт информации. Что на это отвечают создатели файловых систем для UNIX?

С 1991 года файловая система UFS претерпела заметные изменения, появилась версия UFS2, которая пока поддерживается только во FreeBSD 5.0. В Solaris модификация файловой системы позволила достичь предела поддерживаемого дискового объема одного раздела UFS в 1 терабайт.

Дерево каталогов

Все файлы в UNIX организованы древовидно: всегда существует корневой каталог, который обозначается "/". В нем есть подкаталоги. Обычно имеются подкаталоги, перечисленные в табл. 6.4.

Каталог /bin является символической ссылкой на каталог /usr/bin: так бывает не всегда.

Характерным свойством Solaris является выделение отдельного каталога /exports, в котором сосредотачиваются разделяемые по сети подкаталоги, доступные для пользователей других компьютеров. Каталог /opt, куда устанавливается некоторое дополнительное программное обеспечение (от optional, необязательное), тоже есть в системах Solaris, но отсутствует во многих других системах UNIX.

Каталог для временных файлов /tmp монтируется в Solaris на отдельную виртуальную файловую систему типа tmpfs. Это особый тип файловой системы. Если в системе есть свободная оперативная память, то драйвер tmpfs хранит данные, записанные на файловую систему этого типа в оперативной памяти, а не диске. Если объем свободной памяти падает и она начинает требоваться другим программам, файлы из tmpfs записываются на раздел свопинга. Получается, что файлы, размещенные в файловой системе типа tmpfs, всегда занимают остаток оперативной памяти системы, чтобы она использовалась эффективно. Если свободной памяти нет, tmpfs размещается в пространстве свопинга.

Это автоматически приводит к тому, что записанные в файловую систему tmpfs файлы теряются после перезагрузки. Поэтому не следует записывать в /tmp какие-либо полезные файлы.

Скорость работы файловой системы tmpfs высока, т.к. часто все ее файлы физически расположены в оперативной памяти. Вследствие этого кэширование файлов на tmpfs не производится: они и так хранятся не на диске.

Казалось бы, использование tmpfs таит в себе резерв увеличения производительности любого приложения, поскольку достаточно записать данные в каталог /tmp и работать с ними там, чтобы скорость доступа к данным возросла многократно. На самом деле это не так, потому что чтение и запись любых дисков кэшируется, и лишь для некоторых приложений использование tmpfs оправдано. Несомненно увеличивается быстродействие компиляторов и других программ с большими объемами промежуточных файлов – но они и так используют /tmp для хранения временной информации в процессе работы.

Таблица 6.4. Обычные подкаталоги корневого каталога Solaris
lrwxrwxrwx 1 root root 9 Янв 22 14:54 bin -> ./usr/bin
drwxr-xr-x 1 root root 16384 Янв 1 1970 boot
drwxr-xr-x 2 root root 512 Янв 29 14:42 cdrom
drwxr-xr-x 14 root sys 3584 Мар 16 15:49 dev
drwxr-xr-x 5 root sys 512 Янв 22 15:03 devices
drwxr-xr-x 51 root sys 3584 Мар 16 15:49 etc
drwxr-xr-x 3 root other 512 Янв 28 17:38 exports
drwxr-xr-x 3 root nobody 512 Янв 28 16:57 floppy
dr-xr-xr-x 1 root root 1 Мар 16 15:49 home
drwxr-xr-x 12 root sys 512 Янв 22 14:56 kernel
drwx------ 2 root root 8192 Янв 22 14:53 lost+found
drwxr-xr-x 2 root sys 512 Янв 22 14:54 mnt
drwxr-xr-x 3 root sys 512 Янв 22 15:48 opt
dr-xr-xr-x 63 root root 30912 Мар 16 15:52 proc
drwxr-xr-x 2 root sys 1024 Янв 22 15:51 sbin
drwxrwxrwt 6 root sys 368 Мар 16 15:50 tmp
drwxr-xr-x 34 root sys 1024 Янв 28 19:16 usr
drwxr-xr-x 32 root sys 512 Янв 22 15:57 var

По умолчанию Solaris применяет tmpfs только для /tmp. При этом система избегает существенного объема дискового ввода-вывода, так как /tmp используется для временных файлов различных программ.

Внимание: создание отдельного раздела /tmp на диске приведет к тому, что /tmp не будет создан системой автоматически с типом файловой системы tmpfs и производительность системы может уменьшиться!

Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.