• Файловая система ext4 (ext4.wiki.kernel.org/) является наследницей файловой системы ext3. Первые фрагменты ее реализации были добавлены в ядро в версии 2.6.19, а в более поздних версиях ядра были добавлены различные функции. В число планируемых (или уже реализованных) функций файловой системы ext4 входят экстенты (резервирование смежных блоков для хранения данных), а также другие функции, которые призваны снизить фрагментацию файлов, выполнять дефрагментацию сетевых файловых систем, ускорить проверку файловой системы и поддерживать наносекундные метки времени.

• Файловая система Btrfs (B-tree FS; btrfs.wiki.kernel.org) — это новая файловая система, которая с самого начала разрабатывается для обеспечения широкого ряда современных функций, таких как экстенты, запись снимков состояния системы (такая функция эквивалентна метаданным и журналированию), контрольные суммы для данных и для метаданных, проверка сетевых файловых систем, дефрагментация сетевых файловых систем, эффективное использование пространства за счет упаковки небольших файлов, и такое же эффективное индексирование каталогов. Эта файловая система интегрирована в ядро в версии 2.6.29.

14.7. Иерархия одиночного каталога и точки монтирования

В Linux, как и в других UNIX-системах, все файлы из всех файловых систем располагаются в одном дереве каталогов. В основании этого дерева находится корневой каталог, / (слеш). Другие файловые системы монтируются в корневом каталоге и возникают как поддеревья в общей иерархии. Для монтирования файловой системы суперпользователь может применить такую команду:

$ mount device directory

Эта команда «прикрепляет» файловую систему к устройству device в указанном каталоге directory в иерархии каталогов — в точке монтирования данной файловой системы. Существует возможность изменения места, в котором производится монтирование: для этого выполняется размонтирование файловой системы с помощью команды umount, а затем она монтируется заново в другой точке.

В Linux 2.4.19 и более поздних версиях картина усложняется. Теперь ядро поддерживает попроцессные пространства имен монтирования. Это означает, что каждый процесс потенциально обладает собственным набором точек монтирования файловой системы, и поэтому может видеть иерархию каталога отлично от других процессов. Более подробно мы объясним это при описании флага CLONE_NEWNS в разделе 28.2.1.

Чтобы вывести список смонтированных в данный момент файловых систем, можно использовать команду mount без аргументов, как в приведенном ниже примере (результат ее работы показан в сокращенном виде):

$ mount

/dev/sda6 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,mode=0620,gid=5)

/dev/sda8 on /home type ext3 (rw,acl,user_xattr)

/dev/sda1 on /windows/C type vfat (rw,noexec,nosuid,nodev)

/dev/sda9 on /home/mtk/test type reiserfs (rw)

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

Рис. 14.4.Пример иерархии каталога, в которой показаны точки монтирования файловой системы

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

Системные вызовы mount() и umount() позволяют привилегированному (CAP_SYS_ADMIN) процессу монтировать и размонтировать файловые системы. Однако они не стандартизированы в документе SUSv3, и их работа различна в разных реализациях UNIX и в разных файловых системах.

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

• Список смонтированных в данный момент файловых систем можно считать из характерного для Linux виртуального файла /proc/mounts. Этот файл является интерфейсом для структур данных ядра и поэтому он всегда содержит точную информацию о смонтированных файловых системах.

После появления упомянутой выше функции попроцессных пространств имен монтирования у каждого процесса теперь есть файл /proc/PID/mounts, в котором перечислены точки монтирования, составляющие его пространство имен монтирования. Файл /proc/mounts является всего лишь символической ссылкой на /proc/self/mounts.

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

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