• Файловая система ext4 (ext4.wiki.kernel.org/) является наследницей файловой системы ext3. Первые фрагменты ее реализации были добавлены в ядро в версии 2.6.19, а в более поздних версиях ядра были добавлены различные функции. В число планируемых (или уже реализованных) функций файловой системы ext4 входят экстенты (резервирование смежных блоков для хранения данных), а также другие функции, которые призваны снизить фрагментацию файлов, выполнять дефрагментацию сетевых файловых систем, ускорить проверку файловой системы и поддерживать наносекундные метки времени.
• Файловая система Btrfs (B-tree FS; btrfs.wiki.kernel.org) — это новая файловая система, которая с самого начала разрабатывается для обеспечения широкого ряда современных функций, таких как экстенты, запись снимков состояния системы (такая функция эквивалентна метаданным и журналированию), контрольные суммы для данных и для метаданных, проверка сетевых файловых систем, дефрагментация сетевых файловых систем, эффективное использование пространства за счет упаковки небольших файлов, и такое же эффективное индексирование каталогов. Эта файловая система интегрирована в ядро в версии 2.6.29.
В Linux, как и в других UNIX-системах, все файлы из всех файловых систем располагаются в одном дереве каталогов. В основании этого дерева находится корневой каталог, / (слеш). Другие файловые системы
$ mount device directory
Эта команда «прикрепляет» файловую систему к устройству device в указанном каталоге directory в иерархии каталогов — в
В 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.
Системные вызовы mount() и umount() позволяют привилегированному (CAP_SYS_ADMIN) процессу монтировать и размонтировать файловые системы. Однако они не стандартизированы в документе SUSv3, и их работа различна в разных реализациях UNIX и в разных файловых системах.
До рассмотрения этих системных вызовов полезно получить сведения о трех файлах, которые содержат информацию о файловых системах, смонтированных в данный момент или могущих быть смонтированными.
• Список смонтированных в данный момент файловых систем можно считать из характерного для Linux виртуального файла /proc/mounts. Этот файл является интерфейсом для структур данных ядра и поэтому он всегда содержит точную информацию о смонтированных файловых системах.
После появления упомянутой выше функции попроцессных пространств имен монтирования у каждого процесса теперь есть файл /proc/PID/mounts, в котором перечислены точки монтирования, составляющие его пространство имен монтирования. Файл /proc/mounts является всего лишь символической ссылкой на /proc/self/mounts.