stringtranslate.com

ext3

ext3 , или третья расширенная файловая система , — это журналируемая файловая система , которая обычно используется с ядром Linux . Раньше она была файловой системой по умолчанию для многих популярных дистрибутивов Linux , но в целом была вытеснена своей последующей версией ext4 . [3] Главным преимуществом ext3 перед ее предшественником ext2 является журналирование , которое повышает надежность и устраняет необходимость проверки файловой системы после неправильного, то есть нечистого, выключения.

История

Стивен Твиди впервые сообщил, что он работает над расширением ext2 в Journaling the Linux ext2fs Filesystem в статье 1998 года, а затем в сообщении в списке рассылки ядра в феврале 1999 года. Файловая система была объединена с основным ядром Linux в ноябре 2001 года, начиная с версии 2.4.15. [4] [5] [6]

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

Скоростные характеристики ext3 менее привлекательны, чем у конкурирующих файловых систем Linux, таких как ext4, JFS , ReiserFS и XFS , но ext3 имеет существенное преимущество в том, что она позволяет производить обновления с ext2 на месте без необходимости резервного копирования и восстановления данных. Тесты показывают, что ext3 также использует меньше ресурсов ЦП, чем ReiserFS и XFS. [7] [8] Она также считается более безопасной, чем другие файловые системы Linux, из-за своей относительной простоты и более широкой базы тестирования. [9] [10]

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

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

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

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

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

  1. ^ В Linux размер блока 8 КиБ доступен только на архитектурах, которые поддерживают страницы размером 8 КиБ , например Alpha .

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

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

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

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

Недостатки

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

Поскольку ext3 стремится быть обратно совместимой с более ранней ext2, многие из структур на диске похожи на ext2. Следовательно, ext3 не имеет последних функций, таких как экстенты , динамическое распределение inodes и блочное подраспределение. [15] Каталог может иметь не более 31998 подкаталогов , поскольку inode может иметь не более 32000 ссылок (каждый прямой подкаталог увеличивает счетчик ссылок inode родительской папки в ссылке ".."). [16]

На ext3, как и для большинства современных файловых систем Linux, системный инструмент " fsck " не следует использовать, пока файловая система смонтирована для записи. [3] Попытка проверить файловую систему, которая уже смонтирована в режиме чтения/записи, (весьма вероятно) обнаружит несоответствия в метаданных файловой системы. Когда метаданные файловой системы изменяются, а fsck применяет изменения в попытке привести "несогласованные" метаданные в "согласованное" состояние, попытка "исправить" несоответствия повредит файловую систему.

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

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

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

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

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

Восстановить

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

Существует несколько методов [27] и некоторое бесплатное [28] и проприетарное [29] программное обеспечение для восстановления удаленных или утерянных файлов с использованием анализа журнала файловой системы; однако они не гарантируют какого-либо конкретного восстановления файла.

Сжатие

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

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

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

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

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

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

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

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

Почти полное исчезновение из-за ограничений в датировке

Ext3 хранит даты как время Unix , используя четыре байта в заголовке файла. 32 бита не дают достаточного объема для продолжения обработки файлов после 18 января 2038 года — проблема 2038 года . [43]

ext4

Зависимость времени fsck от количества инодов (ext3 против ext4)

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

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

Ссылки

  1. ^ Максимальное количество инодов (и, следовательно, максимальное количество файлов и каталогов) задается при создании файловой системы. Если V — размер тома в байтах, то количество инодов по умолчанию задается как V /2 13 (или количество блоков, в зависимости от того, что меньше), а минимальное — как V /2 23 . Значение по умолчанию считается достаточным для большинства приложений. Максимальное количество подкаталогов в одном каталоге зафиксировано на уровне 32000.
  2. ^ "ReactOS 0.4.2 Released". reactos.org . Получено 17 августа 2016 г. .
  3. ^ ab "Глава 6. Файловая система Ext4 Red Hat Enterprise Linux 6".
  4. ^ Стивен К. Твиди (май 1998 г.). "Журналирование файловой системы Linux ext2fs" (PDF) . Труды 4-й ежегодной конференции LinuxExpo, Дарем, Северная Каролина . Получено 23 июня 2007 г.
  5. ^ Стивен К. Твиди (17 февраля 1999 г.). "Re: fsync для больших файлов". Список рассылки по ядру Linux .
  6. Роб Радез (23 ноября 2001 г.). "2.4.15-final". Список рассылки по ядру Linux .
  7. ^ Пищ, Джастин. «Тестирование файловых систем, часть II». Linux Gazette (122).
  8. ^ Айверс, Ганс. "Сравнение файловых систем (ext3, reiser, xfs, jfs) в Debian Etch". Архивировано из оригинала 2008-09-13 . Получено 2010-11-03 . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  9. ^ Смит, Родерик В. (2003-10-09). "Введение в файловые системы и файлы Linux". Linux.com. Архивировано из оригинала 30 августа 2011 г.
  10. ^ Трагесер, Джеймс (23.04.2010). «Какую файловую систему Linux выбрать для вашего ПК? Ext2, Ext3, Ext4, ReiserFS (Reiser3), Reiser4, XFS, Btrfs».
  11. ^ Цао, Минмин. "Индексация каталогов". Функции, найденные в Linux 2.6 . Архивировано из оригинала 2019-07-18 . Получено 2009-04-01 .
  12. ^ Мэтью Уилкокс. "Documentation/filesystems/ext2.txt". Документация по исходному коду ядра Linux .
  13. ^ ab Daniel Robbins (2001-12-01). "Общие потоки: Расширенное руководство по реализации файловой системы, часть 8". IBM developerWorks . Архивировано из оригинала 2007-10-13.
  14. ^ любопытный наблюдатель: Ускорение файловых систем ext3. Evuraan.blogspot.com (2007-01-09). Получено 2013-06-22.
  15. ^ Радез, Роб (2005). "Экстенты, отложенное выделение". будущее ext3 . Архивировано из оригинала 2008-07-08 . Получено 2008-07-30 .
  16. ^ Роберт Николс (2007-04-03) Re: Сколько подкаталогов? Архивировано 2008-10-06 на Wayback Machine linux.derkeiler.com
  17. ^ Андреас Дилгер. "Отправить сообщение в список рассылки ext3-users". сообщение в списке рассылки ext3-users .
  18. ^ Shake. Vleu.net. Получено 22.06.2013.
  19. ^ Дефрагментация, написанная в оболочке. Ck.kolivas.org (2012-08-19). Получено 2013-06-22.
  20. ^ Дефрагментация написана на Python. Bazaar.launchpad.net. Получено 22.06.2013.
  21. ^ RE: поиск программы ext3 defrag/file move. Redhat.com (2005-03-04). Получено 2013-06-22.
  22. ^ 5.10. Файловые системы. Tldp.org (2002-11-09). Получено 2013-06-22.
  23. ^ "#849 закрыто Улучшение (исправлено) - предварительное выделение для предотвращения фрагментации". trac.transmissionbt.com . Файловая система Ubuntu по умолчанию ("ext3") будет фрагментировать большие (>1 ГБ), медленно растущие файлы (<1 МБ/с)
  24. ^ Оливер Дидрих (27 октября 2008 г.). «Настройка файловой системы Linux Ext3». Мы обнаружили сильно фрагментированные свободные области на интенсивно используемом сервере IMAP, который хранит все свои письма в отдельных файлах – хотя более 900 ГБ из общего дискового пространства в 1,4 ТБ все еще были доступны
  25. ^ Ext4 – Linux Kernel Newbies. Kernelnewbies.org (19.05.2011). Получено 22.06.2013.
  26. ^ Linux ext3 FAQ. Batleth.sapienti-sat.org. Получено 22.06.2013.
  27. ^ КАК восстановить удаленные файлы в файловой системе ext3 Архивировано 19 сентября 2010 г. на Wayback Machine . Xs4all.nl (07 февраля 2008 г.). Получено 22 июня 2013 г.
  28. ^ PhotoRec – GPL-файл Recovery. Cgsecurity.org. Получено 22.06.2013.
  29. ^ UFS Explorer Standard Recovery версии 4. Ufsexplorer.com. Получено 22.06.2013.
  30. ^ e3compr – сжатие ext3. Sourceforge.net. Получено 22.06.2013.
  31. ^ Джонатан Корбет. «Файловая система Next3». LWN.
  32. ^ ab Re: Частое повреждение метаданных в ext3 + жесткое отключение питания Архивировано 28.09.2007 на Wayback Machine . Archives.free.net.ph. Получено 22.06.2013.
  33. ^ Re: Частое повреждение метаданных в ext3 + жесткое отключение питания Архивировано 28.09.2007 на Wayback Machine . Archives.free.net.ph. Получено 22.06.2013.
  34. ^ Red Hat Enterprise Linux, Глава 20. Барьеры записи
  35. ^ ext4: Добавить функцию контрольной суммы журнала. Article.gmane.org (2008-02-26). Получено 2013-06-22.
  36. ^ Re: поддерживается ли барьер записи через устройство сопоставления или нет? Архивировано 2009-05-04 на Wayback Machine . Oss.sgi.com. Получено 2013-06-22.
  37. ^ XFS и обнуленные файлы Архивировано 30 апреля 2008 г. на Wayback Machine . Madduck.net (11 июля 2008 г.). Получено 22 июня 2013 г.
  38. ^ Barrier Sync. forums.opensuse.org (март 2007 г.)
  39. ^ Re: Предложение для «правильных» прочных fsync() и fdatasync(). Mail-archive.com (2008-02-26). Получено 2013-06-22.
  40. ^ Барьеры ввода-вывода, начиная с версии ядра 2.6.31. Mjmwired.net. Получено 22.06.2013.
  41. ^ Виртуализация и режимы ввода-вывода = дополнительная сложность. Mysqlperformanceblog.com (2011-03-21). Получено 2013-06-22.
  42. ^ SSD, XFS, LVM, fsync, кэш записи, барьер и потерянные транзакции. Mysqlperformanceblog.com (2009-03-02). Получено 2013-06-22.
  43. ^ Кларк, Либби (19 февраля 2015 г.). «10 основных моментов отчета Джона Корбета о ядре Linux» . Получено 26.01.2019 .
  44. ^ "Theodore Ts'o": Предложение и план будущей разработки ext2/3. LKML. Получено 22.06.2013.
  45. ^ Райан Пол (2009-04-13). «Участники дискуссии обсуждают ядро ​​на саммите Linux Collaboration Summit». Ars Technica . Получено 2009-08-22 .
  46. ^ Теодор Цо (01.08.2008). "Re: reiser4 для 2.6.27-rc1". linux-kernel (список рассылки) . Получено 31.12.2010 .

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