Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PRILOZhYeNIYe_2.doc
Скачиваний:
11
Добавлен:
10.07.2019
Размер:
337.92 Кб
Скачать

Формат индексного дескриптора

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

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

Хранение расширенных атрибутов в индексном дескрипторе (EA in inode). Хранение расширенных атрибутов, таких как ACL, атрибутов SELinux и прочих, позволяет повысить производительность. Атрибуты, для которых недостаточно места в индексном дескрипторе, хранятся в отдельном блоке размером 4 Kб. Предполагается снять это ограничение в будущем [17].

Временные отметки с наносекундной точностью

Временные отметки в ext3 имеют секундную точность. Однако некоторым приложениям, особенно клиент-серверным, требуется более высокая точность. Ext4 предоставляет такую возможность, увеличивая точность времен, хранимых в индексном дескрипторе, суперблоке и журнале. Достигается это путем увеличения разрядности временной отметки с 4 до 8 байтов. Диапазон хранящихся времён тоже расширен: если раньше верхней границей хранимого времени было 18 января 2038 года, то теперь – это 25 апреля 2514 года [17].

Общая организация системы

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

Здесь и проявляется основное отличие ext4 от предшественницы – теперь номера блоков могут быть 48-битными, если есть поддержка со стороны ядра.

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

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

В следующем блоке располагаются дескрипторы групп блоков. Они указывают на блоки, в которых находятся битовые карты блоков и индексных дескрипторов, начало таблицы индексных дескрипторов и другую информацию о группе [17].

Традиционная организация файловой системы предполагает, что группы блоков идут на диске одна за другой и каждая начинается с битовых карт и таблиц индексных дескрипторов. Такая разбивка файловой системы представлена на рис. П.2.1.

В ext4 вводится опция так называемых гибких групп блоков. Гибкая группа блоков состоит из нескольких групп блоков. В пределах гибкой группы битовые карты и таблицы индексных дескрипторов хранятся вместе, и лишь затем идут блоки данных [18]. Это позволяет уменьшить время на чтение информации о свободных блоках и дескрипторах, а также ускорить проверку диска с помощью e2fsck.

Разбивка диска при использовании опции «гибкая группа блоков» представлена на рис. П.2.2.

Гибкие группы блоков можно наблюдать с помощью редактора debugfs. Команда debugfs -R stats <device> выводит в том числе и группы блоков. На рис. П.2.3 видно, что в каждой группе блоков битовые карты имеют не смежные номера блоков, зато в соседних группах номера соответствующих битовых карт возрастают последовательно.

Ext4 не резервирует блоки для журнала после описателей групп блоков, как это делалось в ext3. Вместо этого журнал имеет определенный индексный дескриптор и хранится в выделенных для него блоках, которые в принципе могут находиться в любой области диска. Перед началом битовых карт групп блоков пространство зарезервировано под описатели групп. В ext4 существует понятие «системная зона» – это блоки, выделенные под хранение метаданных, которые нельзя использовать индексным дескрипторам [18]. К метаданным относятся суперблок, в том числе и его копии, описатели групп блоков и журнал.

Рис. П.2.1. Группы блоков в файловой системе ext3fs

Рис. П.2.2. Гибкие группы блоков в файловой системе ext4fs

Group 0: block bitmap at 591, inode bitmap at 607, inode table at 623

3436 free blocks, 29 free inodes, 4 used directories, 0 unused inodes

[Checksum 0x6dab]

Group 1: block bitmap at 592, inode bitmap at 608, inode table at 1134

4182 free blocks, 32 free inodes, 753 used directories, 0 unused inodes

[Checksum 0x2f06]

Group 2: block bitmap at 593, inode bitmap at 609, inode table at 1645

5587 free blocks, 24 free inodes, 702 used directories, 0 unused inodes

[Checksum 0x29d8]

Group 3: block bitmap at 594, inode bitmap at 610, inode table at 2156

7755 free blocks, 50 free inodes, 625 used directories, 0 unused inodes

[Checksum 0x5b66]

Group 4: block bitmap at 595, inode bitmap at 611, inode table at 2667

6894 free blocks, 186 free inodes, 1488 used directories, 0 unused inodes

[Checksum 0x9d36]

Group 5: block bitmap at 596, inode bitmap at 612, inode table at 3178

8311 free blocks, 70 free inodes, 362 used directories, 0 unused inodes

[Checksum 0xf453]

Group 6: block bitmap at 597, inode bitmap at 613, inode table at 3689

7086 free blocks, 0 free inodes, 2167 used directories, 0 unused inodes

[Checksum 0x07c0]

Group 7: block bitmap at 598, inode bitmap at 614, inode table at 4200

2314 free blocks, 0 free inodes, 1658 used directories, 0 unused inodes

[Checksum 0xdc31]

Group 8: block bitmap at 599, inode bitmap at 615, inode table at 4711

4177 free blocks, 141 free inodes, 450 used directories, 0 unused inodes

[Checksum 0x50f9]

Рис. П.2.3. Фрагмент гибкой группы блоков, выводимой debugfs

Кроме собственно числа блоков в ФС, ее размер ограничен также максимально возможным числом групп блоков. В ext3 копии всех описателей групп блоков должны храниться в первой группе блоков. В ext4 размер описателя группы блоков составляет 64 байта (если используется 48-битная адресация блоков). При размере группы блоков в 128 Мб всего в ext4 может быть групп блоков. Это ограничивает размер файловой системы до байтов, или 256 Тб. Для снятия этого ограничения используют метагруппы блоков. Файловые системы ext4 разделены на метагруппы блоков [17].

Метагруппа – это кластер из групп блоков, описатель которого может храниться в одном блоке. При размере блока в 4 Кб одна метагруппа может содержать 64 группы блоков, или 8 Гб. Описатели групп блоков теперь хранятся не в первой группе блоков, а «рассыпаны» по всей файловой системе, что записано в первый блок метагруппы. Резервные копии хранятся во втором и последнем блоках метагруппы [15].

Таким образом, максимальное число групп блоков в системе может достигать , что соответствует 1 Эб дискового пространства.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]