ext3 - ext3

ext3
Разработчики) Стивен Твиди
Полное имя Третья расширенная файловая система
Введено Ноябрь 2001 г., Linux 2.4.15
Идентификатор раздела 0x83 ( MBR )
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 ( GPT )
Структуры
Содержимое каталога Таблица, хешированное B-дерево с включенным dir_index
Размещение файлов растровое изображение (свободное место), таблица (метаданные)
Плохие блоки Стол
Пределы
Максимум. размер тома 4 ТиБ - 32 ТиБ
Максимум. размер файла 16 ГиБ - 2 ТиБ
Максимум. количество файлов Переменная, выделенная во время создания
Максимум. длина имени файла 255 байт
Допустимые символы в именах файлов Все байты, кроме NUL ('\ 0') и '/'
Функции
Даты записаны модификация (mtime), модификация атрибута (ctime), доступ (atime)
Диапазон дат 14 декабря 1901 г. - 18 января 2038 г.
Разрешение даты 1 с
Атрибуты allow-undelete, append-only, h-tree (каталог), неизменяемый, журнал, no-atime, no-dump, secure-delete, синхронная запись, top (каталог)
Разрешения файловой системы Разрешения Unix, ACL и произвольные атрибуты безопасности (Linux 2.6 и новее)
Прозрачное сжатие Нет
Прозрачное шифрование Нет (предоставляется на уровне блочного устройства)
Дедупликация данных Нет
Другой
Поддерживаемые операционные системы Linux , BSD , ReactOS , Windows (через IFS )

ext3 , или третья расширенная файловая система , представляет собой журналируемую файловую систему, которая обычно используется ядром Linux . Раньше это была файловая система по умолчанию для многих популярных дистрибутивов Linux . Стивен Твиди впервые сообщил, что он работает над расширением ext2 в журнале файловой системы Linux ext2fs в статье 1998 года, а затем в публикации списка рассылки ядра в феврале 1999 года. Файловая система была объединена с основным ядром Linux в ноябре 2001 г., начиная с версии 2.4.15. Его основным преимуществом перед ext2 является журналирование , которое повышает надежность и устраняет необходимость проверять файловую систему после некорректного завершения работы. Его преемник - ext4 .

Преимущества

Производительность (скорость) ext3 менее привлекательна, чем у конкурирующих файловых систем Linux, таких как ext4, JFS , ReiserFS и XFS , но ext3 имеет значительное преимущество в том, что она позволяет выполнять обновление с ext2 на месте без необходимости резервного копирования и восстановления данных. . Тесты показывают, что ext3 также использует меньше мощности процессора, чем ReiserFS и XFS. Он также считается более безопасным, чем другие файловые системы Linux, из-за его относительной простоты и более широкой базы тестирования.

ext3 добавляет в ext2 следующие функции:

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

ext3 не хватает «современных» функций файловой системы, таких как динамическое выделение inode и экстентов . Иногда такая ситуация может быть недостатком, но с точки зрения возможности восстановления это существенное преимущество. Все метаданные файловой системы находятся в фиксированных, хорошо известных местах, а структуры данных имеют некоторую избыточность. При значительном повреждении данных ext2 или ext3 могут быть восстановлены, а файловая система на основе дерева - нет.

Ограничения по размеру

Максимальное количество блоков для ext3 - 2 32 . Размер блока может варьироваться, что влияет на максимальное количество файлов и максимальный размер файловой системы:

Размер блока Максимальный
размер файла
Максимальный
размер файловой системы
1 КБ 16 ГиБ 2 ТиБ
2 КБ 256 ГиБ 8 ТиБ
4 КБ 2 ТиБ 16 ТиБ
8 КБ 2 ТиБ 32 ТиБ
  1. ^ В Linux размер блока 8 КиБ доступен только на архитектурах, которые допускают страницы размером 8 КиБ, например Alpha .

Уровни ведения журнала

В реализации ext3 для Linux доступны три уровня журналирования :

Журнал (наименьший риск)
И метаданные, и содержимое файла записываются в журнал перед фиксацией в основной файловой системе. Поскольку журнал на диске относительно непрерывен, это может повысить производительность, если в журнале достаточно места. В других случаях производительность ухудшается, потому что данные должны быть записаны дважды - один раз в журнал и один раз в основную часть файловой системы.
Заказано (средний риск)
Журналируются только метаданные; содержимого файла нет, но гарантируется, что содержимое файла будет записано на диск до того, как связанные метаданные будут помечены как зафиксированные в журнале. Это значение по умолчанию во многих дистрибутивах Linux. Если произойдет отключение питания или паника ядра во время записи или добавления файла, в журнале будет указано, что новый файл или добавленные данные не были «зафиксированы», поэтому они будут удалены в процессе очистки. (Таким образом, добавляемые и новые файлы имеют тот же уровень защиты целостности, что и уровень «журналирования».) Однако перезаписываемые файлы могут быть повреждены, поскольку исходная версия файла не сохраняется. Таким образом, можно получить файл в промежуточном состоянии между новым и старым без достаточной информации для восстановления одного или другого (новые данные никогда не попадают на диск полностью, а старые данные нигде не хранятся). Хуже того, промежуточное состояние может перемежать старые и новые данные, потому что порядок записи оставлен на усмотрение оборудования диска.
Обратная запись (самый высокий риск)
Журналируются только метаданные; содержимое файла нет. Содержание может быть написано до или после обновления журнала. В результате файлы, измененные непосредственно перед сбоем, могут быть повреждены. Например, добавляемый файл может быть отмечен в журнале как больший, чем есть на самом деле, что приведет к появлению мусора в конце. Более старые версии файлов также могут неожиданно появиться после восстановления журнала. Отсутствие синхронизации между данными и журналом во многих случаях происходит быстрее. JFS использует этот уровень ведения журнала, но гарантирует, что любой «мусор» из-за незаписанных данных будет обнулен при перезагрузке. XFS также использует эту форму ведения журнала.

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

Недостатки

Функциональность

Поскольку ext3 стремится быть обратно совместимой с более ранней версией ext2, многие структуры на диске аналогичны структурам ext2. Следовательно, ext3 не хватает недавних функций, таких как экстенты , динамическое выделение inodes и суб-выделение блоков . Каталог может иметь не более 31998 подкаталогов , потому что индексный дескриптор может иметь максимум 32 000 ссылок (каждый прямой подкаталог увеличивает счетчик ссылок на индексный дескриптор родительской папки в ссылке "..").

ext3, как и большинство современных файловых систем Linux, не следует редактировать с помощью fsck, пока файловая система смонтирована для записи. Попытка проверить файловую систему, которая уже смонтирована в режиме чтения / записи, (очень вероятно) обнаружит несоответствия в метаданных файловой системы. Если метаданные файловой системы изменяются, и fsck применяет изменения в попытке привести «несогласованные» метаданные в «согласованное» состояние, попытка «исправить» несоответствия приведет к повреждению файловой системы.

Дефрагментация

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

Существуют инструменты дефрагментации пользовательского пространства, такие как Shake и defrag. Встряхивание работает, выделяя пространство для всего файла как одну операцию, что обычно заставляет распределитель находить непрерывное дисковое пространство. Если есть файлы, которые используются одновременно, Shake попытается записать их рядом друг с другом. Дефрагментация копирует каждый файл поверх самого себя. Однако эта стратегия работает только в том случае, если в файловой системе достаточно свободного места. Настоящего инструмента дефрагментации для ext3 не существует.

Однако, как указано в Руководстве системного администратора Linux: «Современные файловые системы Linux сводят фрагментацию к минимуму, сохраняя все блоки в файле близко друг к другу, даже если они не могут быть сохранены в последовательных секторах. Некоторые файловые системы, такие как ext3, эффективно выделить свободный блок, ближайший к другим блокам в файле. Поэтому не нужно беспокоиться о фрагментации в системе Linux ».

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

Отменить удаление

ext3 не поддерживает восстановление удаленных файлов. Драйвер ext3 активно удаляет файлы, стирая inodes файлов из соображений безопасности при сбоях.

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

Сжатие

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

Отсутствие поддержки снимков

В отличие от ряда современных файловых систем, ext3 не имеет встроенной поддержки моментальных снимков , т.е. способности быстро фиксировать состояние файловой системы в произвольное время. Вместо этого он полагается на менее эффективные по занимаемому пространству моментальные снимки уровня тома, предоставляемые Linux LVM . Next3 файловая система представляет собой модифицированную версию ext3 , который предлагает снимки поддержки, но сохраняет совместимость с ext3 на диске формата.

Нет контрольной суммы в журнале

ext3 не производит контрольную сумму при записи в журнал. На запоминающем устройстве с дополнительным кешем, если в качестве параметра монтирования не включен барьер = 1/ etc / fstab ), и если оборудование выполняет кэширование записи вне очереди, существует риск серьезного повреждения файловой системы во время авария. Это связано с тем, что устройства хранения с кешами записи сообщают системе, что данные были полностью записаны, даже если они были записаны в (энергозависимый) кеш.

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

Файловые системы, проходящие через интерфейс устройства сопоставления (включая программные реализации RAID и LVM), могут не поддерживать барьеры и будут выдавать предупреждение, если используется этот параметр монтирования. Есть также некоторые диски, которые не реализуют должным образом расширение очистки кеша записи, необходимое для работы барьеров, что вызывает аналогичное предупреждение. В этих ситуациях, когда барьеры не поддерживаются или не практичны, надежное упорядочение записи возможно путем отключения кеша записи диска и использования data=journalопции монтирования. Отключение кеша записи на диске может потребоваться даже при наличии барьеров.

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

Ближайшее исчезновение из-за ограничения даты

Ext3 хранит даты как время Unix, используя четыре байта в заголовке файла. 32 бита не дают достаточно возможностей для продолжения обработки файлов после 18 января 2038 года - проблемы 2038 года . Ожидается, что это «Тысячелетие компьютерщиков» вызовет массовые сбои, если не будет своевременно устранено.

ext4

Временная зависимость fsck от количества inode (ext3 vs. ext4)

28 июня 2006 г. Теодор Ц'о , главный разработчик ext3, анонсировал расширенную версию под названием ext4. 11 октября 2008 г. патчи, помечающие ext4 как стабильный код, были объединены в репозитории исходного кода Linux 2.6.28, что ознаменовало завершение фазы разработки и рекомендовало его принятие. В 2008 году Ц'о заявил, что хотя ext4 имеет улучшенные функции, такие как намного более быстрая, чем ext3, это не является большим достижением, она использует старую технологию и является временным препятствием; Ц'о считает, что Btrfs - лучшее направление, потому что «он предлагает улучшения в масштабируемости, надежности и простоте управления». Btrfs также имеет «ряд тех же дизайнерских идей, что и у reiser3 / 4 ».

Смотрите также

использованная литература

внешние ссылки