Читать «Linux. От новичка к профессионалу.Денис Колисниченко» онлайн - страница 66

Автор неизвестен

Рис. 4.2. Архитектура

файловой системы

VFS — это виртуальная файловая система. Именно она позволяет добиться суще-ствующего сейчас уровня абстракции. Каждая файловая система имеет свои осо-бенности. Если бы не было VFS, то пришлось бы разрабатывать разные версии сис-темных вызовов для каждого типа поддерживаемой файловой системы, например open_ext2 () для открытия файла, находящегося на файловой системе ext2, или open vfat () — для VFAT. Другими словами, VFS делает системные вызовы незави-симыми от типа используемой файловой системы.

Драйверы устройств служат для физического доступа к носителям данных. Ведь эти самые носители тоже различны— в компьютере может быть установлено несколько жестких дисков с разными интерфейсами — например, диски РАТА и SATA.

Схематически раздел диска с файловой системой ext4 можно представить так, как показано на рис. 4.3.

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

Жесткий диск физически разбивается на секторы по 512 байтов каждый. Первый сектор каждого раздела представляет собой загрузочную область. В загрузочной области первичного раздела находится главная загрузочная запись (Master Boot Record, MBR) — программа, которая запускает операционную систему. На других разделах такой записи нет.

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

После загрузочного сектора (блока загрузки) следует суперблок , хранящий всю ин-формацию о файловой системе. Размер суперблока — 1 Кбайт (1024 байта). Супер-блок дублируется в каждой группе блоков, что позволяет восстановить его в случае повреждения файловой системы.

В суперблоке хранится следующая информация: версия заголовка, количество мон-тирований (именно по этому «счетчику» система понимает, что пора проверить ту или иную файловую систему), размер блока, количество свободных блоков, коли-чество свободных i-узлов, а также ссылка на первый i-узел (i-узел каталога /). Каждому файлу соответствует только один i-узел, хранящий метаданные файла, — все атрибуты файла, кроме его имени, а именно: режим, информацию о владельце и группе, время доступа, время модификации, время создания, а также список ссылок на файл.

Кроме атрибутов файла в i-узле хранится указатель на данные файла. Обычно это массив из 15 адресов блоков, 12 из которых непосредственно ссылаются на номера блоков, хранящие данные файла. Если данные занимают более 12 блоков (напом-ню, что обычно 1 блок = 1 Кбайт), то используется косвенная адресация. Поэтому следующий адрес (13-й)— это адрес блока, где находится список адресов других блоков, содержащих данные файла.