Jump to content

ext2

ext2
Разработчик(и) Реми Кард
Полное имя Вторая расширенная файловая система
Представлено Январь 1993 г. с Linux.
Предшественник расширенная файловая система
Преемник ext3
Идентификаторы разделов EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 ( ГПТ )
0x83 ( Основная загрузочная запись )
Apple_UNIX_SVR2 ( Карта разделов Apple )
Структуры
Содержимое каталога Стол
Распределение файлов растровое изображение (свободное пространство), таблица (метаданные)
Плохие блоки Стол
Пределы
Максимальный размер тома 2–32 ТиБ
Максимальный размер файла 16 ГиБ — 2 ТиБ
Макс нет. файлов 10 18
Максимальная длина имени файла 255 байт
Разрешенное имя файла
персонажи
Все байты, кроме NUL («\0») и «/».
Функции
Даты записи модификация (mtime), модификация атрибута (ctime), доступ (atime)
Диапазон дат 14 декабря 1901 г. - 18 января 2038 г.
Разрешение даты 1 с
Файловая система
разрешения
Разрешения Unix, списки управления доступом POSIX (ACL)
Прозрачный
сжатие
Нет (доступно через патчи)
Прозрачный
шифрование
Нет
Другой
Поддерживается
операционные системы
Линукс , БСД , [1] [2] РеактОС , [3] Windows (через IFS ), macOS (через FUSE ), HelenOS , [4] БУНТ , [5] Зефир [6]

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

Канонической реализацией ext2 является драйвер файловой системы ext2fs в ядре Linux. Другие реализации (разного качества и полноты) существуют в GNU Hurd , [8] МИНИКС 3 , [9] [10] некоторые ядра BSD , [11] [12] [13] в МиНТ , [14] Хайку [15] и как сторонний Microsoft Windows [16] и драйверы macOS (через FUSE ). Этот драйвер устарел в Linux версии 6.9 в пользу драйвера ext4, поскольку драйвер ext4 работает с файловыми системами ext2. [17]

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

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

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

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

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

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

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

Начиная с ядра Linux 6.9, драйвер ext2fs устарел и больше не включен в конфигурации по умолчанию. Основная причина заключалась в том, что он не поддерживал даты после 2038 года . [17] Пользователям рекомендуется выполнить обновление до ext4. [24]

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

[ редактировать ]

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

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

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

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

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

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

Эструктура

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

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

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

Каталоги

[ редактировать ]

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

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

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

Распределение данных

[ редактировать ]

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

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

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

Ограничения файловой системы

[ редактировать ]
Теоретические ограничения ext2 в Linux [27]
Размер блока: 1 КиБ 2 КиБ 4 КиБ 8 КиБ
макс. размер файла: 16 ГиБ 256 ГиБ 2 ТБ 2 ТБ
макс. размер файловой системы: 4 ТБ 8 ТБ 16 ТБ 32 ТиБ

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

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

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

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

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

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

[ редактировать ]

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

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

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. [29] или ext2Fsd . [30] Файловую систему в пространстве пользователя можно использовать в macOS. [31]

См. также

[ редактировать ]
  1. ^ «Глава 8. Диски, файловые системы и загрузчики» . www.freebsd.org . Проверено 11 апреля 2018 г.
  2. ^ «ext2fs(5)» . www.freebsd.org . Проверено 11 апреля 2018 г.
  3. ^ «Выпущена ReactOS 0.4.2» . http://reactos.org . Проверено 17 августа 2016 г.
  4. ^ «HelenOS Wiki: Ext4fs» . www.helenos.com . Проверено 6 ноября 2023 г.
  5. ^ «pkg/lwext4: добавить облегченную реализацию файловой системы ext2/3/4» . www.github.com . Проверено 6 ноября 2023 г.
  6. ^ «subsys: fs: реализация файловой системы ext2» . www.github.com . Проверено 6 ноября 2023 г.
  7. ^ Мауэрер, Вольфганг (2010). Профессиональная архитектура ядра Linux . Джон Уайли и сыновья. ISBN  9781118079911 .
  8. ^ «GNU Hurd/hurd/translation/ext2fs» . ГНУ Херд . Проверено 10 февраля 2024 г.
  9. ^ «МИНИКС Релиз 3.2.0» . МИНИКС 3 . Проверено 10 февраля 2024 г.
  10. ^ «git.minix3.org Git — minix.git/tree — minix/fs/ext2/» . Исходный код МИНИКС 3 . Проверено 10 февраля 2024 г.
  11. ^ «NetBSD src/sys/ufs/ext2fs/» . Исходный код NetBSD . Проверено 10 февраля 2024 г.
  12. ^ «OpenBSD src/sys/ufs/ext2fs/» . Исходный код OpenBSD . Проверено 10 февраля 2024 г.
  13. ^ «ext2fs « fs « sys - src — дерево исходного кода FreeBSD» . Исходный код FreeBSD . Проверено 10 февраля 2024 г.
  14. ^ «freemint/sys/xfs/ext2fs в мастере · freemint/freemint» . Исходный код FreeMiNT . Проверено 10 февраля 2024 г.
  15. ^ «ext2 « file_systems « ядро ​​« дополнения « src - haiku — основной репозиторий Haiku» . Исходный код Хайку . Проверено 10 февраля 2024 г.
  16. ^ «matt-wu/Ext3Fsd: драйвер файловой системы Ext2/3/4 для Windows» . мат-ву/Ext3Fsd . Проверено 10 февраля 2024 г.
  17. ^ Jump up to: а б Ларабель, Майкл (26 марта 2024 г.). «В Linux 6.9 больше не поддерживается драйвер файловой системы EXT2» . Фороникс . Проверено 26 марта 2024 г.
  18. ^ «ext4: разрешить запуск ext4 без журнала» . Дерево исходного кода ядра Linux . Проверено 12 января 2021 г.
  19. ^ «Файловые системы Linux: Ext2, Ext3 и Ext4» . www.thegeekstuff.com . Проверено 13 июля 2020 г.
  20. ^ Jump up to: а б Штробель, Стефан; Уль, Томас (1994). Linux: раскрываем возможности рабочей станции на вашем ПК . Спрингер-Верлаг. п. 54.
  21. ^ Jump up to: а б Джонс, М. Тим (17 февраля 2009 г.). «Анатомия ext4» . IBM Developer Works. Архивировано из оригинала 20 февраля 2015 г. Проверено 8 февраля 2012 года .
  22. ^ linux/kernel/git/torvalds/linux-2.6.git/commitdiff: , [ИСПРАВЛЕНИЕ] Файлы размером 2 ТБ: добавьте blkcnt_t, Автор: Такаши Сато, 26 марта 2006 г. 09:37:52 +0000 (01:37 -0800) — Commit, позволяющий использовать большие файлы, git.kernel.org
  23. ^ «Твердотельные накопители» . Суперталантливая технология.
  24. ^ Опденакер, Майкл (25 марта 2024 г.). «Драйвер файловой системы ext2 теперь помечен как устаревший — блог Bootlin» . Проверено 26 марта 2024 г.
  25. ^ "Журнал программиста", том 5, 1987, стр. 174
  26. ^ «Вторая расширенная файловая система» . www.nongnu.org . Проверено 11 декабря 2019 г.
  27. ^ «Руководство по файловой системе» . Обзоры Linux. Архивировано из оригинала 17 сентября 2011 г. Проверено 24 января 2008 г.
  28. ^ «Создание файловой системы Ext2. Понимание ядра Linux, второе издание» . www.oreilly.com . Проверено 25 июля 2023 г.
  29. ^ Рэндалл, Нил (18 сентября 2007 г.). «Linux: ты можешь это сделать!» . Журнал ПК . Том. 26, нет. 18. с. 76.
  30. ^ Уоллен, Джек (17 сентября 2012 г.). «Включить монтирование файловых систем ext2/3 на компьютере с Windows» . Техреспублика . Проверено 17 января 2016 г.
  31. ^ Кесслер, Тофер (22 июня 2012 г.). «Как управлять дисками Ext2/Ext3 в OS X» . CNET . Проверено 17 января 2016 г.
  32. ^ «Вторая расширенная файловая система — документация по ядру Linux» .

Примечания

[ редактировать ]

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 19e3c943ed505d6b7080958966d52787__1716598560
URL1:https://arc.ask3.ru/arc/aa/19/87/19e3c943ed505d6b7080958966d52787.html
Заголовок, (Title) документа по адресу, URL1:
ext2 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)