Ext4 теперь стандартная часть Linux.
В ядро Linux 2.6.28 включили поддержку файловой системы Ext4 как штатную часть ядра. Произошло это недавно - 25-го декабря 2008 года. Вероятно Ext4, со временем, заменит текущий стандарт для Linux - Ext3, как это ранее произошло с Ext2 и Ext. В новой инкарнации этой файловой системы добавлено много нужных и полезных возможностей.
Работать драйвер Ext4 может в трех режимах: режим совместимости с Ext3, чистый Ext4 и смешанный:
- Файловая система Ext4 обратно совместима с Ext3. Драйвер Ext4 позволяет смонтировать существующий раздел формата Ext3 в режиме совместимости. Никакие из новых возможностей Ext4, влияющих на формат раздела, при этом активироваться не будут.
- Возможна конвертация существующего Ext3 раздела в Ext4 при помощи утилит tune2fs и fsck. При этом на дисковом разделе будут присутствовать как старые структуры, так и новые.
- Лучшим и рекомендованным способом является создание раздела Ext4 с нуля - это обеспечит большую производительность и гарантирует поддержку всех нововведений.
Новые возможности, реализованные в Ext4:
- Поддержка больших размеров файлов, директорий и разделов. Сейчас Ext3 поддерживает файлы до 2 ТБ, 32000 поддиректорий в каждой директории и размер раздела до 16 ТБ. Ext4 поддерживает файлы до 16 ТБ, неограниченное число поддиректорий и размер файловой системы до 1 ЕБ (2 в степени 60).
- Поддержка экстентов (непрерывных областей) при выделении места в разделе под объекты файловой системы. Это существенно упрощает управление объектами и ускоряет работу. Особенно для больших файлов, где раньше - в Ext3 - использовалась двойная косвенность для адресации большого числа блоков. Также это сокращает фрагментацию, а также позволяет проводить автоматическую фоновую дефрагментацию.
- Выделение множества блоков одновременно. Ext3 выделяет блоки по необходимости - по одному за раз. Ext4 позволяет выделять сразу множество блоков. Эта возможность тесно связана с поддержкой экстентов и задержкой выделения. Она уменьшает фрагментацию и увеличивает производительность файловой системы.
- Задержка выделения блоков. Позволяет определить, что файлу необходим не один новый блок, а больше. Подобная возможность существует во многих современных файловых системах (XFS, ZFS, Reiser4).
- Быстрая проверка (fsck). Возможность связана с изменением структуры таблиц групп inode - хранением списка неиспользованных блоков. Она позволяет ускорить проверку от 2 до 20 раз, в зависимости от размеров раздела. Причем, первый запуск fsck создает эти списки и все последующие запуски проходят в ускоренном режиме.
- Контрольные суммы в журнале. Эта возможность повышает надежность журнала, чтобы в случае аппаратного сбоя диска можно было определить сбойные блоки журнала и не переносить их в файловую систему. Побочным эффектом стала возможность однофазной записи в замен реализованной в Ext3 двухфазной, что может дать увеличение производительности записи до 20%.
- Фоновая дефрагментация. Полезная для поддержки постоянной производительности возможность. К сожалению, она не включена в ядро 2.6.28 - возможно она будет в следующих релизах.
- Досрочное выделение места под файлы. Эта возможность появилась еще в последних версиях Ext3, а для не поддерживающих ее файловых систем - эмулировалась библиотекой glibc. Она позволяет попросить систему выделить место в разделе и создать необходимые структуры до фактической записи полезных данных в файл. Примером использования могут быть программы для скачивания файлов из интернета, которые выделяют место под файл заранее.
- Барьеры в механизме журнала. Эта возможность несколько снижает производительность и может быть отключена при монтировании, но повышает надежность файловой системы. Описание ее работы довольно сложное: http://lwn.net/Articles/283161/.
- Поддержка наносекундной точности для временных меток. Традиционно, файловые системы поддерживают временные метки с секундной точностью (к примеру, FAT поддерживает точность всего 2 секунды) - теперь эти метки могут быть более точными.
- Восстановление удаленных файлов. Эта возможность в текущем релизе пока отсутствует.
Разработка файловой системы Ext4 продолжается и со временем в ней могут появится новые функции.