Занятие 21. Файловые системы EXT и FAT

План занятия:

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

· Особенности файловой системы Ext 3

· Файловая линия FAT

· Структура раздела FAT

· Особенности адресации FAT

· Структура элементов каталога

· Особенности извлечения файлов

· Сохранение длинных имен

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

Стандартной дисковой файловой системой для Linux является расширенная файловая система ехt2.

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

Одним из базовых отличий ext2 от VFS, является другая политика распределения дискового пространства. Как отмечалось, в VFS было разрешено распределять дисковое пространство на блоки по 4 и 8 Кбайт, при этом малые части таких блоков, оставшихся после распределения, в свою очередь разделяли на фрагменты по 1 Кбайт. В ext2 ситуация изменилась - дисковое пространство делят на блоки только одного размера. По умолчанию он составляет 1 Кбайт, хотя можно при форматировании файловой системы задать и больший размер - 2 или 4 Кбайт.

Основой обработки запросов ввода-вывода в ext2, является кластеризация смежных запросов для достижения максимальной производительности, для объединения данных, как в VFS.

Для решения этой задачи используют группировки данных, похоже по своим принципам на использование групп цилиндров в VFS. Различия здесь преимущественно обусловлены тем, что сегодня в дисках используют цилиндры с различной геометрией в зависимости от расстояния до центра пластины, поэтому объединение таких цилиндров в группы фиксированного размера часто не соответствует физической структуре диска. Исходя из этого, в ext2 дисковое пространство делят не в группы цилиндров, а просто на группы блоков (block groups), не привязаных к геометрии диска. Такие группы по структуре похожи на группы цилиндров: каждая группа блоков тоже является уменьшенной копией файловой системы с суперблоком, таблицей индексных дескрипторов и т.д..

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

Учет свободных блоков и индексных дескрипторов ведут с помощью пары битовых карт - по одной на каждую группу блоков. Размер каждой такой карты равен одному блоку (1 Кбайт), поэтому максимально возможное количество блоков и индексных дескрипторов в группе равен 8 Кбайт. При размещении первых блоков нового файла файловая система начинает поиск свободных блоков от начала группы блоков, в случае расширения имеющегося файла поиск продолжается от блока, выделенного позже. Этот поиск происходит в два этапа: на первом в битовой карте ищут свободный байт (8 бит), что соответствует 8 непрерывно расположенным дисковым блокам (аналогам блока в 8 Кбайт). Если байт найти не удалось, выполняют еще один поиск, но при этом ищут любой свободный бит. Если байт поиск завершился успешно, система ищет свободные биты с начала этого байта назад к первому занятому биту. Целью этого поиска является уменьшение фрагментации (не будут оставаться «дыры» между выделенным интервалом блоков и предварительно занятыми блоками).

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

Размер каждого индексного дескриптора составляет 128 байт. Используют 12 прямых блоков и по одному косвенному блоку первого, второго и третьего уровней. Длина адреса блока составляет 4 байта, что больше, чем стандартная длина для многих UNIX-систем, поэтому можно адресовать больше дискового пространства. Место для размещения списков управления доступом зарезервировано, но может быть использовано только в ядре версии 2.6 и выше.

Особенности файловой системы Ext 3

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

Могут быть заданы три режима работы с журналом:

· режим журнала (journal), при котором все изменения данных хранятся в журнале;

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

· режим минимального записи (writeback), при котором сохраняются только метаданные.

По умолчанию используют упорядоченный режим.

Журнал файловой системы ext3fs сохраняют в скрытом файле.journal в корневом каталоге файловой системы. Ее код не работает с файлом журнала непосредственно, для этого используют специальный уровень кода ядра под названием JBD (Journaling Block Device Layer). Код JBD группирует дисковые операции в транзакции, информацию о которых фиксируют в журнале. Система гарантирует, что информация о подтвержденную транзакцию будет удалена из журнала лишь тогда, когда все соответствующие блоки записаны на диск.

Во время загрузки системы после сбоя утилита e2fsck просматривает журнал и планирует к выполнению все операции записи, описанные подтвержденными транзакциями

Файловая линия FAT

Вспоминая о файловых системах линии FAT, следует иметь в виду несколько близких по организации файловых систем, которые различаются по способу адресации кластера на диске (FAT-12, FAT-16, FAT-32) или наличием поддержки длинных имен (такая поддержка является стандартной для всех реализаций FAT, используемых в Windows).

Структура раздела FAT

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

  • После загрузочного сектора, в котором находится загрузчик системы, расположены две копии таблицы размещения файлов (FAT). Резервную копию FAT используют для восстановления основной копии в случае ее повреждения. Все операции, ведущие к изменению FAT, немедленно синхронизируют с резервной копией.
  • Далее расположен корневой каталог, в который выделяют 32 Кбайт, что дает возможность хранить в нем 512 элементов (под каждый элемент выделено 32 байта).
  • Под корневым следует понимать участок данных, в котором расположены все файлы и каталоги, кроме корневого.

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

Особенности адресации FAT

Теперь остановимся на различиях в версиях FAT, основанные на особенностях адресации. Важнейшей характеристикой FAT является размер индексного указателя. Поскольку каждый из указателей указывает на кластер, от их размера зависит общее количество кластеров на диске и размер FAT. Различия между версиями FAT определяются размером индексного указателя: для FAT-12 он равен 12 бит (что соответствует 4 Кбайт кластеров), для FAT-16 - 16 бит (64 Кбайт кластеров), для FAT-32 - 32 бита (232 кластеры).

Максимальный объем раздела, может быть адресован FAT конкретной версии, и зависит от размера кластера и максимального количества адресованных кластеров, обусловленных длиной индексного указателя. Чем больше кластер, тем меньше их нужно для адресации того же объема диска и наоборот; с другой стороны, большой размер кластера вызывает значительную внутреннюю фрагментацию.

Обычно выбирают минимальный размер кластера, который позволяет адресовать весь раздел определенного объема, при этом желательно, чтобы кластер ни был больше 4 Кбайт. Например, для FAT-12 и размера кластера 4 Кбайт объем раздела не может превышать 16 Мбайт (поэтому такую ​​систему рекомендуют только для дискет). Система FAT-16 при таком размера кластера может быть применена для разделов до 512 Мбайт, для больших разделов нужно увеличивать размер кластера. Например, для раздела размером более 1 Гбайт размер кластера должно быть 32 Кбайт.

Преодолением этого ограничения в первую очередь связано внедрение FAT-32, которое позволяет использовать кластеры на 4 Кбайт для разделов размером до 8 Гбайт.

Размер FAT зависит от размера индексного указателя и объема раздела, в FAT-32 для больших разделов она может достигать нескольких мегабайт. ОС обычно кэширует FAT, но если внешняя фрагментация диска значительная и размер FAT большой, эффективное кэширование может быть затруднено, в результате чего снижается производительность системы.

Структура элементов каталога

Элемент каталога в FAT содержит:

· имя файла в формате 8.3;

· поле атрибутов (1 байт) - только для чтения, системный, скрытый;

· дату и время последней модификации файла;

· дату последнего доступа;

· номер первого кластера файла (4 байта);

· размер файла (4 байта).

Особенности извлечения файлов

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

Сохранение длинных имен

До появления Windows 95, FAT предоставляла возможность использовать только имена, состоящие из 11 значимых символов (8 - имя файла, 3 - расширение), при этом они хранились в соответствующем элементе каталога. Введение длинных имен привело к тому, что в дополнение к традиционному имени (которое теперь называют «коротким именем») в таких записях каталога сохраняют имя длиной до 255 символов фрагментами по 13 двухбайтовых Unicode-символов. При этом краткое имя получают из длинного путем добавления к первым 6 символов в верхнем регистре суффикса ~ 1, ~ 2 и т. Д., В зависимости от наличия таких имен до сих пор в каталоге.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: