• файловая система ISO 9660 для компакт-дисков;

• файловая система HFS компьютеров Apple Macintosh;

• ряд сетевых файловых систем, включая широко используемую систему NFS компании Sun, систему SMB, разработанную компаниями IBM и Microsoft, систему NCP компании Novell, а также файловую систему Coda, созданную в университете Carnegie Mellon;

• некоторые журналируемые файловые системы, в число которых входят ext3, ext4, Reiserfs, JFS, XFS и Btrfs.

Типы файловых систем, которые в данный момент распознаны ядром, можно просмотреть в особом файле Linux /proc/filesystems.

В версии Linux 2.6.14 появилось средство Filesystem in Userspace (FUSE, «файловая система в пространстве пользователя»). Этот механизм добавляет в ядро перехватчики (hooks), которые позволяют полностью реализовать файловую систему с помощью программы из пространства пользователя, и при этом нет необходимости в исправлении или перекомпиляции ядра. Дополнительные подробности см. на сайте fuse.sourceforge.net.

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

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

Файловая система ext2 была создана Реми Кардом (Remy Card). Ее исходный код небольшой (около 5000 строк на языке С) и представляет собой модель для различных реализаций других файловых систем. Главная веб-страница сайта, посвященного системе ext2, находится по адресу e2fsprogs.sourceforge.net/ext2.html. На этом сайте есть хорошая обзорная статья, описывающая реализацию файловой системы ext2. В онлайн-книге Дэвида Раслинга (David Rusling) The Linux Kernel («Ядро Linux»), доступной на сайте www.tldp.org, также описана файловая система ext2.

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

Основной единицей для выделения пространства в файловой системе является логический блок. Он представляет собой множество смежных физических блоков на дисковом устройстве, на котором располагается данная файловая система. Так, например, размер логического блока в файловой системе ext2 равен 1024, 2048 или 4096 байтам. (Размер логического блока указывается в качестве аргумента команды mkfs(8), которая используется для создания файловой системы.)

Привилегированная (CAP_SYS_RAWIO) программа может использовать операцию FIBMAP ioctl(), чтобы определить физическое расположение указанного блока для какого-либо файла. Третий аргумент вызова является целым числом, которое определяется в ходе вызова. До осуществления вызова следует передать в этот аргумент номер логического блока (номер первого логического блока равен 0); после вызова ему присваивается номер начального физического блока, в котором хранится указанный логический блок.

На рис. 14.1 показана связь между разделами диска и файловыми системами, а также отмечены части (типичной) файловой системы.

Рис. 14.1. Структура разделов диска и файловой системы

Файловая система состоит из следующих частей.

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

Суперблок. Это единичный блок, который следует сразу за блоком начальной загрузки. Он содержит такую информацию о параметрах файловой системы, как:

• размер таблицы индексных дескрипторов;

• размер логических блоков в данной файловой системе;

• размер файловой системы в логических блоках.

Различные файловые системы, которые расположены на одном физическом устройстве, могут обладать разными типами и размерами, а также иметь различающиеся параметры (например, размер блока). Это одна из причин разбиения диска на несколько разделов.

Таблица индексных дескрипторов. Каждый файл или каталог в данной файловой системе обладает уникальной записью в таблице индексных дескрипторов. Эти записи содержат различную информацию о файле. Индексные дескрипторы рассмотрены подробнее в следующем разделе. Таблицу индексных дескрипторов иногда называют также индексным списком.

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

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

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