ext2 - ext2

редактировать
Файловая система ядра Linux
ext2
Разработчик (и) Реми Кард
Полное имяВторая расширенная файловая система
Представлена ​​январь 1993 г. с Linux
с идентификатором раздела Apple_UNIX_SVR2(Apple Partition Map ). 0x83(Master Boot Record ). EBD0A0A2-B9E5-4433 -87C0-68B6B72699C7 (GPT )
Структуры
Содержимое каталогаТаблица
Размещение файловрастровое изображение (свободное пространство), таблица (метаданные)
Плохие блокиТаблица
Пределы
Максимальный размер тома2–32 ТиБ
Максимальный размер файла16 ГиБ - 2 TiB
Макс. Количество файлов10
Макс. Длина имени файла255 байтов
Допустимые символы в именах файловВсе байты, кроме NUL ('\ 0') и '/'
Функции
Даты, записанныеизменено ция (mtime), изменение атрибута (ctime), доступ (atime)
Диапазон дат14 декабря 1901 г. - 18 января 2038 г.
Разрешение даты1 с
Разрешения файловой системы POSIX
Прозрачное сжатиеНет (доступно через патчи)
Прозрачное шифрование No
Другое
Поддерживаемые операционные системы Linux, BSD, ReactOS, Windows (через IFS ), macOS (через IFS )

The ext2 или вторая расширенная файловая система - это файловая система для Linux ядра. Первоначально он был разработан Реми Кард как замена расширенной файловой системе (ext). Разработанная по тем же принципам, что и Berkeley Fast File System из BSD, это была первая файловая система коммерческого уровня для Linux.

Каноническая реализация ext2 - это драйвер файловой системы "ext2fs" в ядре Linux. Другие реализации (различного качества и полноты) существуют в GNU Hurd, MINIX 3, некоторых ядрах BSD, в MiNT и как сторонние драйверы Microsoft Windows и macOS.

ext2 была файловой системой по умолчанию в нескольких дистрибутивах Linux, включая Debian и Red Hat Linux, до недавнего вытеснения ext3, который почти полностью совместим с ext2 и является файловой системой с журналированием. ext2 по-прежнему является предпочтительной файловой системой для носителей на основе flash (таких как SD-карты и USB-накопители ), поскольку отсутствие журнала увеличивает производительность и минимизирует количество операций записи, а флеш-устройства имеют ограниченное количество циклов записи. Однако последние ядра Linux поддерживают безжурнальный режим ext4, который обеспечивает преимущества, отсутствующие в ext2, такие как большие размеры файлов и томов.

Содержание
  • 1 История
  • 2 структуры данных ext2
    • 2.1 Inodes
    • 2.2 Каталоги
    • 2.3 Размещение данных
  • 3 Ограничения файловой системы
  • 4 Расширение сжатия
  • 5 В других операционных системах
  • 6 См. также
  • 7 Ссылки
    • 7.1 Примечания
  • 8 Дополнительная литература
  • 9 Внешние ссылки
История

Ранняя разработка ядра Linux осуществлялась как перекрестная разработка в рамках MINIX операционная система. Файловая система MINIX использовалась как первая файловая система Linux. Файловая система Minix в основном не содержала ошибок, но использовала внутри 16-битные смещения и, таким образом, имела ограничение на максимальный размер только 64 мегабайта, а также было ограничение на длину файла 14 персонажей. Из-за этих ограничений началась работа по замене собственной файловой системы для Linux.

Чтобы упростить добавление новых файловых систем и предоставить общий файл API, VFS, уровень виртуальной файловой системы, был добавлен в ядро ​​Linux. Расширенная файловая система (ext ) была выпущена в апреле 1992 года как первая файловая система, использующая VFS API, и была включена в версию Linux 0.96c. Файловая система ext решает две основные проблемы в файловой системе Minix (максимальный размер раздела и ограничение длины имени файла до 14 символов) и разрешает 2 гигабайт данных и имена файлов до 255 символов. Но проблемы остались: не было поддержки отдельных временных меток для доступа к файлам, модификации inode и модификации данных.

В качестве решения этих проблем в январе 1993 г. были разработаны две новые файловые системы для ядра Linux 0.99: xiafs и вторая расширенная файловая система (ext2 ), который представлял собой капитальный ремонт расширенной файловой системы, включающий многие идеи из Berkeley Fast File System. ext2 также разрабатывался с учетом расширяемости: во многих структурах данных на диске оставлено место для использования в будущих версиях.

С тех пор ext2 была испытательной площадкой для многих новых расширений VFS API. Такие функции, как отозванный POSIX проект предложения ACL и отозванный вариант расширенного атрибута, как правило, сначала были реализованы на ext2, потому что его было относительно просто расширить, а его внутренние компоненты были понятно хорошо.

В ядрах Linux до 2.6.17 ограничения в драйвере блоков означают, что файловые системы ext2 имеют максимальный размер файла 2 ТиБ.

ext2 по-прежнему рекомендуется для журналирования файловых систем на загрузочных USB-накопителях и других твердотельных накопителях. ext2 выполняет меньше операций записи, чем ext3, потому что нет журналирования. Поскольку основным фактором старения микросхемы флеш-памяти является количество циклов стирания, и поскольку циклы стирания происходят часто при записи, уменьшение количества операций записи увеличивает срок службы твердотельного устройства. Еще одна хорошая практика для файловых систем на флэш-устройствах - использование опции монтирования no atime по той же причине.

структуры данных ext2

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

Каждая группа блоков содержит копию суперблока и таблицы дескрипторов группы блоков, и все группы блоков содержат битовую карту блока, битовую карту индексного дескриптора, таблицу индексного дескриптора и, наконец, фактические блоки данных.

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

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

Inodes

Каждый файл или каталог представлен inode. Термин «индексный узел» происходит от «индексного узла» (со временем он стал i-узлом, а затем индексным узлом). Inode включает в себя данные о размере, разрешении, владельце и расположении на диске файла или каталога.

Пример структуры inode ext2:

Электронная структура

Цитата из документации ядра Linux для ext2:

«Есть указатели на первые 12 блоков, которые содержат данные файла в inode. Есть указатель на косвенный блок (который содержит указатели на следующий набор блоков), указатель на дважды косвенный блок и указатель на тройной косвенный блок ».

Таким образом, в ext2 есть структура, которая имеет 15 указателей. Указатели с 1 по 12 указывают на прямые блоки, указатель 13 указывает на косвенный блок, указатель 14 указывает на дважды косвенный блок, а указатель 15 указывает на трижды косвенный блок.

Каталоги

Каждый каталог представляет собой список записей каталога. Каждая запись каталога связывает одно имя файла с одним номером inode и состоит из номера inode, длины имени файла и фактического текста имени файла. Чтобы найти файл, в каталоге последовательно просматривается соответствующее имя файла. Для разумных размеров каталогов это нормально. Но для очень больших каталогов это неэффективно, и ext3 предлагает второй способ хранения каталогов (HTree ), который более эффективен, чем просто список имен файлов.

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

Специальные каталоги "." (текущий каталог) и ".." (родительский каталог) реализованы путем сохранения имен "." и ".." в каталоге, и номер inode текущего и родительского каталогов в поле inode. Единственная особая обработка этих двух записей заключается в том, что они автоматически создаются при создании любого нового каталога и не могут быть удалены.

Размещение данных

Когда создается новый файл или каталог, ext2 должна решить, где хранить данные. Если диск в основном пуст, то данные можно хранить практически где угодно. Однако кластеризация данных со связанными данными минимизирует время поиска и максимизирует производительность.

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

Блоки данных, необходимые для хранения каталогов и файлов, можно найти, просмотрев битовую карту распределения данных. Любое необходимое пространство в таблице inode можно найти, просмотрев битовую карту распределения inode.

Ограничения файловой системы
Теоретические ограничения ext2 в Linux
Размер блока:1 КиБ2 КиБ4 КиБ8 КиБ
макс. размер файла:16 ГиБ256 ГиБ2 ТиБ2 ТиБ
макс. размер файловой системы:4 TiB8 TiB16 TiB32 TiB

Причиной некоторых ограничений ext2 является формат файла данные и ядро ​​операционной системы. В большинстве случаев эти факторы будут определены один раз при построении файловой системы. Они зависят от размера блока и соотношения количества блоков и индексов. В Linux размер блока ограничен архитектурой размер страницы.

Есть также некоторые программы пользовательского пространства, которые не могут обрабатывать файлы размером более 2 ГиБ.

Если b - размер блока, максимальный размер файла составляет ограничено min (((b / 4) + (b / 4) + b / 4 + 12) × b, (2 - 1) × 512) из-за структуры i_block (массив прямых / косвенных EXT2_N_BLOCKS) и i_blocks (32-битное целое число), представляющее количество 512-байтовых «блоков» в файле.

Максимальное количество подуровней-каталогов - 31998 из-за ограничения количества ссылок. Индексирование каталогов недоступно в ext2, поэтому существуют проблемы с производительностью для каталогов с большим количеством файлов (>10 000). Теоретический предел количества файлов в каталоге составляет 1,3 × 10, хотя это не имеет отношения к практическим ситуациям.

Примечание. В Linux 2.4 и ранее размер блочных устройств был ограничен 2 ТиБ, что ограничивало максимальный размер раздела, независимо от размера блока.

Расширение сжатия

e2compr - это модификация драйвера ext2 в ядре Linux для поддержки сжатия и распаковки файлов файловой системой без какой-либо поддержки со стороны пользовательских приложений.. e2compr - это небольшой патч против ext2.

e2compr сжимает только обычные файлы; административные данные (суперблок, inodes, каталог файлы и т. д.) не сжимаются (в основном из соображений безопасности). Доступ к сжатым блокам предоставляется для операций чтения и записи. Алгоритм сжатия и размер кластера указывается для каждого файла отдельно. Каталоги также могут быть помечены для сжатия, и в этом случае каждый вновь созданный файл в каталоге будет автоматически сжиматься с тем же размером кластера и тем же алгоритмом, который был указан для каталога.

e2compr - это не новая файловая система. Это всего лишь патч для ext2, сделанный для поддержки флага EXT2_COMPR_FL. Он не требует от пользователя создания нового раздела и продолжит чтение или запись существующих файловых систем ext2. Можно рассматривать это как просто способ для процедур чтения и записи доступа к файлам, которые могли быть созданы простой утилитой, подобной gzip или compress. Сжатые и несжатые файлы прекрасно сосуществуют на разделах ext2.

Последняя ветка e2compr доступна для текущих выпусков Linux 2.4, 2.6 и 3.0. Последний патч для Linux 3.0 был выпущен в августе 2011 года и обеспечивает поддержку многоядерности и высокой памяти. Также есть ветки для Linux 2.0 и 2.2.

В других операционных системах

Доступ к разделам ext2 в Microsoft Windows возможен через устанавливаемую файловую систему, например ext2ifs или ext2Fsd. Файловая система в пространстве пользователя может использоваться в macOS.

См. Также
Ссылки

Примечания

Дополнительная литература
Внешние ссылки
Последняя правка сделана 2021-05-19 10:08:23
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте