Файловая система ext4¶
ext4 (Fourth Extended File System) — это журналируемая файловая система, представленная в 2008 году как развитие ext3, предназначенная для использования в операционных системах на ядре Linux. Является преемницей ext3 и наиболее распространённой файловой системой по умолчанию во многих дистрибутивах Linux. Поддерживает тома и файлы размером до 1 эксабайта (при размере блока 4 КБ) и отдельные файлы до 16 терабайт.
¶История
Разработка ext4 началась как набор обратно совместимых расширений для ext3. Основные работы велись под руководством Теодора Тсо (Theodore Ts'o), одного из ключевых разработчиков ext3. В 2006 году группа разработчиков, включая Тсо, представила набор патчей, которые добавляли в ext3 поддержку экстентов (extents) — механизма, позволяющего хранить информацию о размещении больших непрерывных блоков данных более эффективно, чем традиционная система косвенных блоков.
Первоначально эти изменения планировалось включить в ext3, но из-за опасений по поводу стабильности и обратной совместимости было решено выделить их в отдельную файловую систему. В 2008 году ext4 была включена в ядро Linux версии 2.6.28. С тех пор она стала стандартной файловой системой для большинства дистрибутивов Linux, вытеснив ext3.
¶Архитектура и ключевые особенности
¶Экстенты (Extents)
Основное отличие ext4 от ext3 — использование экстентов вместо косвенных блоков. Экстент представляет собой непрерывную последовательность блоков на диске. Вместо хранения списка всех блоков, занимаемых файлом, ext4 хранит один или несколько экстентов, каждый из которых описывает начальный блок и длину. Это значительно сокращает объём метаданных для больших файлов и ускоряет операции ввода-вывода.
¶Обратная совместимость
ext4 спроектирована с возможностью монтирования как ext3 (в режиме совместимости). Однако при монтировании в таком режиме теряются все преимущества ext4, включая экстенты. При этом раздел ext4 может быть смонтирован как ext3 только при условии, что он не содержит экстентов (то есть если все файлы были созданы в режиме ext3).
¶Журналирование
Как и ext3, ext4 является журналируемой файловой системой. Журнал (journal) — это область на диске, в которую перед записью данных вносятся записи о предстоящих изменениях. В случае сбоя системы (например, отключения питания) при следующем монтировании журнал воспроизводится, что позволяет восстановить целостность файловой системы без длительной проверки (fsck).
ext4 поддерживает три режима журналирования:
- journal — журналируются и метаданные, и данные (максимальная надёжность, но наименьшая производительность);
- ordered — журналируются только метаданные, но данные записываются на диск до их обновления (режим по умолчанию);
- writeback — журналируются только метаданные, данные могут быть записаны позже (высокая производительность, но риск потери данных).
¶Отложенное выделение (Delayed Allocation)
ext4 использует механизм отложенного выделения блоков. При записи данных файловая система не выделяет блоки немедленно, а накапливает запросы и выделяет пространство непосредственно перед сбросом данных на диск. Это позволяет лучше группировать данные, уменьшая фрагментацию, и повышает производительность при работе с большими файлами.
¶Мультиблочное выделение (Multiblock Allocator, mballoc)
Вместо выделения блоков по одному, как это делалось в ext3, ext4 использует мультиблочный аллокатор. Он старается выделять несколько смежных блоков за одну операцию, что снижает фрагментацию и ускоряет запись.
¶Поддержка больших размеров
- Максимальный размер тома: 1 эксабайт (при размере блока 4 КБ).
- Максимальный размер файла: 16 терабайт (при размере блока 4 КБ).
- Максимальное количество файлов в одном каталоге: 64 000 (по умолчанию; может быть увеличено до 4 миллиардов при использовании опции
dir_nlink).
¶Проверка целостности (fsck)
Благодаря использованию экстентов и других оптимизаций, проверка целостности (fsck) для ext4 выполняется значительно быстрее, чем для ext3. Время fsck для больших разделов может сокращаться в несколько раз.
¶Различия с ext3
| Характеристика | ext3 | ext4 |
|---|---|---|
| Максимальный размер файла | 2 ТБ | 16 ТБ |
| Максимальный размер тома | 16 ТБ | 1 ЭБ |
| Выделение блоков | Косвенные блоки | Экстенты |
| Отложенное выделение | Нет | Да |
| Мультиблочное выделение | Нет | Да |
| Максимальное количество файлов в каталоге | 32 000 | 64 000 (по умолчанию) |
| Время fsck (для больших разделов) | Длительное | Быстрое |
¶Применение
ext4 является файловой системой по умолчанию в большинстве дистрибутивов Linux, включая Ubuntu, Debian, Fedora, CentOS, openSUSE и многие другие. Она используется как на настольных системах, так и на серверах, встроенных устройствах и облачных платформах. Благодаря своей стабильности, производительности и обратной совместимости, ext4 остаётся популярным выбором для хранения данных общего назначения.
¶Ограничения и критика
Несмотря на широкое распространение, ext4 имеет ряд недостатков по сравнению с более современными файловыми системами:
- Отсутствие встроенной поддержки сжатия и шифрования на уровне файловой системы (хотя шифрование может быть реализовано на уровне блочного устройства, например, с помощью LUKS).
- Ограниченная поддержка снапшотов — в отличие от ZFS или Btrfs, ext4 не имеет встроенного механизма создания снапшотов.
- Нет поддержки контрольных сумм для данных — в ext4 проверяются только метаданные, что делает её уязвимой к «тихому» повреждению данных (bit rot).
- Фрагментация — хотя отложенное выделение уменьшает фрагментацию, со временем она всё же накапливается, особенно на системах с высокой нагрузкой на запись. Для дефрагментации существует утилита
e4defrag. - Отсутствие встроенной поддержки пулов томов — в отличие от Btrfs или ZFS, ext4 не может объединять несколько дисков в один логический том.
¶Будущее
Хотя ext4 остаётся стандартом де-факто для Linux, её развитие замедлилось. Основные усилия сообщества направлены на более современные файловые системы, такие как Btrfs (которая предлагает снапшоты, сжатие, контрольные суммы и пулы томов) и XFS (которая превосходит ext4 по производительности на больших томах и при работе с очень большими файлами). Тем не менее, ext4 продолжает поддерживаться и обновляться, и её ожидает ещё долгий срок службы благодаря стабильности и широкой совместимости.
¶Источники
- Theodore Ts'o, "Ext4: The Next Generation of Ext3", Linux Foundation, 2008.
- Документация ядра Linux:
Documentation/filesystems/ext4.txt. - "Understanding the Linux Kernel" by Daniel P. Bovet, Marco Cesati, 3rd Edition.
- "Linux File Systems" by Moshe Bar, 2001.
- Официальная документация ext4 на kernel.org.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


