ext3
ext3 — это журналируемая файловая система, используемая в операционных системах семейства Linux. Является прямой эволюцией файловой системы ext2, в которую была добавлена поддержка журналирования для повышения надёжности и целостности данных при сбоях. Разработана Стивеном Твиди (Stephen Tweedie) и впервые представлена в 2001 году в составе ядра Linux версии 2.4.15. На протяжении многих лет была стандартной файловой системой во многих дистрибутивах Linux, постепенно уступая место более современным системам, таким как ext4 и Btrfs.
История
Разработка ext3 началась в конце 1990-х годов как ответ на потребность в более надёжной файловой системе для Linux. Основной проблемой ext2 было отсутствие журналирования: при внезапном сбое питания или системном сбое восстановление целостности данных требовало длительной проверки файловой системы (fsck), которая могла занимать часы на больших разделах.
Стивен Твиди, работавший в компании Red Hat, предложил решение, которое не требовало полной переработки ext2, а добавляло журналирование как надстройку. Это позволило сохранить обратную совместимость: раздел ext3 мог быть смонтирован как ext2 (с потерей возможностей журналирования), и наоборот, ext2 мог быть преобразован в ext3 без переформатирования.
Первая стабильная версия ext3 вошла в ядро Linux 2.4.15 в ноябре 2001 года. В последующие годы она стала стандартной файловой системой в таких дистрибутивах, как Red Hat Linux, Fedora, Debian и Ubuntu. Однако с появлением ext4 в 2008 году, которая предлагала значительно большую производительность и поддержку больших объёмов, ext3 начала постепенно вытесняться. К середине 2010-х годов большинство дистрибутивов Linux перешли на ext4 по умолчанию, хотя ext3 остаётся поддерживаемой в ядре Linux и используется в некоторых встраиваемых системах и устаревших установках.
Архитектура и устройство
Журналирование
Ключевое отличие ext3 от ext2 — наличие журнала (journal), который представляет собой специальную область на диске, обычно занимающую от 32 до 128 мегабайт. Журнал записывает метаданные (и, опционально, данные) перед их фактическим применением к файловой системе. В случае сбоя система может восстановить целостность, воспроизведя или откатив операции из журнала, что занимает секунды, а не часы, как в ext2.
ext3 поддерживает три режима журналирования:
- Journal — записываются и метаданные, и данные. Самый надёжный, но и самый медленный режим, так как каждое изменение данных проходит через журнал.
- Ordered — записываются только метаданные, но данные гарантированно сбрасываются на диск до записи метаданных. Это режим по умолчанию, обеспечивающий хороший баланс между производительностью и надёжностью.
- Writeback — записываются только метаданные, без гарантии порядка записи данных. Самый быстрый, но наименее надёжный режим, при котором возможна потеря данных при сбое.
Структура на диске
ext3 сохраняет ту же базовую структуру, что и ext2:
- Суперблок (superblock) — хранит общую информацию о файловой системе: размер, количество блоков, состояние, флаги.
- Группы блоков (block groups) — файловая система делится на группы, каждая из которых содержит копию суперблока, дескрипторы групп, битовые карты, таблицу инодов и блоки данных.
- Иноды (inodes) — структуры данных, описывающие файлы и каталоги. Каждый инод хранит метаданные (размер, права доступа, временные метки, владелец) и указатели на блоки данных.
- Блоки данных — минимальные единицы хранения данных, размер которых обычно составляет 1024, 2048 или 4096 байт.
Ограничения
- Максимальный размер файла: 2 ТБ (при размере блока 4 КБ).
- Максимальный размер файловой системы: 16 ТБ (при размере блока 4 КБ).
- Максимальное количество файлов: ограничено количеством инодов, которое задаётся при создании файловой системы (обычно 1 инод на каждые 8–16 КБ пространства).
- Отсутствие поддержки разреженных файлов (sparse files) в полной мере, хотя частичная поддержка была добавлена в поздних версиях.
- Отсутствие встроенной поддержки сжатия и шифрования на уровне файловой системы — эти функции реализуются на уровне блочного устройства (например, LUKS или dm-crypt).
Применение
Серверы и рабочие станции
В период с 2001 по 2010 год ext3 была основной файловой системой для большинства Linux-серверов и рабочих станций. Её надёжность и простота делали её популярным выбором для систем, где важна стабильность, а не максимальная производительность. Многие корпоративные дистрибутивы, такие как Red Hat Enterprise Linux (RHEL) и SUSE Linux Enterprise Server (SLES), использовали ext3 по умолчанию до версий, где она была заменена на ext4.
Встраиваемые системы
Благодаря своей зрелости и низким требованиям к ресурсам, ext3 до сих пор используется во встраиваемых системах, таких как маршрутизаторы, сетевые хранилища (NAS) и устройства Интернета вещей (IoT). Однако в этих областях её постепенно вытесняют более современные файловые системы, такие как F2FS и UBIFS, оптимизированные для флеш-памяти.
Миграция с ext2
Одним из ключевых преимуществ ext3 была возможность преобразования существующей файловой системы ext2 в ext3 без переформатирования и потери данных. Это делало процесс обновления простым и безопасным, что способствовало быстрому распространению ext3.
Сравнение с другими файловыми системами
ext3 vs ext4
ext4, представленная в 2008 году, является прямым преемником ext3 и предлагает ряд улучшений:
- Поддержка файлов размером до 16 ТБ и файловых систем до 1 ЭБ.
- Использование экстентов (extents) вместо блочных карт, что повышает производительность при работе с большими файлами.
- Отложенное выделение (delayed allocation) — улучшает производительность и уменьшает фрагментацию.
- Встроенная поддержка разреженных файлов.
- Поддержка онлайн-дефрагментации.
ext3 не поддерживает эти возможности, что делает её менее подходящей для современных систем с большими объёмами данных.
ext3 vs XFS
XFS, разработанная компанией Silicon Graphics, изначально была ориентирована на высокую производительность при работе с большими файлами. Она поддерживает файловые системы до 8 ЭБ и имеет более продвинутое управление параллельным доступом. ext3, напротив, лучше подходит для систем с большим количеством мелких файлов и более простым шаблоном доступа.
ext3 vs Btrfs
Btrfs — более современная файловая система с поддержкой снимков (snapshots), сжатия на лету, контрольных сумм и управления томами. ext3 не имеет этих функций, что делает её менее гибкой, но и более простой и предсказуемой.
Безопасность и надёжность
ext3 считается одной из самых стабильных и проверенных временем файловых систем для Linux. За годы использования было выявлено и исправлено множество ошибок, что сделало её крайне надёжной. Однако её архитектура имеет некоторые недостатки с точки зрения безопасности:
- Отсутствие встроенной проверки целостности данных (контрольных сумм). Это означает, что ошибки в данных, вызванные, например, битовой деградацией (bit rot), не могут быть обнаружены на уровне файловой системы.
- Журнал не защищён от повреждений — повреждение журнала может привести к потере данных или невозможности монтирования.
- Отсутствие защиты от атак, направленных на повреждение суперблока или инодов.
Интересные факты
- ext3 была первой файловой системой, которая стала стандартной в дистрибутиве Red Hat Linux, начиная с версии 7.3 (2002 год).
- Разработчик ext3 Стивен Твиди также внёс значительный вклад в разработку ext4 и был одним из ключевых участников сообщества Linux в области файловых систем.
- Несмотря на то, что ext3 считается устаревшей, она всё ещё поддерживается в ядре Linux и может быть использована в современных системах, хотя это не рекомендуется для новых установок.
- В некоторых дистрибутивах, таких как Debian, ext3 оставалась файловой системой по умолчанию до версии 5.0 (Lenny), вышедшей в 2009 году, после чего была заменена на ext4.
Источники
- Стивен Твиди, «Journaling the Linux ext2fs Filesystem», Proceedings of the 4th Annual Linux Showcase and Conference, 2000.
- Документация ядра Linux: «Documentation/filesystems/ext3.txt» (включена в исходные коды ядра).
- Дэниел П. Бовет и Марко Чезати, «Понимание ядра Linux» (3-е издание), O'Reilly Media, 2005.
- Мэтт Уэлш и др., «Running Linux» (5-е издание), O'Reilly Media, 2005.
- Статья «Ext3» в архиве Linux Kernel Mailing List (LKML), 2001.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →