ext4

ext4 (также называется ext4fs) - Fourth Extended File System (четвертая версия расширенной файловой системы). Представляет собой журналируемую файловую систему, работающую под операционной системой Linux. ext4 построена на платформе своего предшественника - ext3 (операционная система по умолчанию в большинстве дистрибутивах GNU/Linux).  

Экспериментальная поддержка ext4 была впервые выпущена в виде патча для Linux версий 2.6.19-rc1-mm1 и 2.6.19-rc1-git8 10 октября 2006 года. Автор новой файловой системы extc4 - программист Эндрю Мортон.

Общая информация

Разработчики

Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, Theodore Ts'o, Eric Sandeen, Sam Naghshineh и другие

Дата представления

Стабильная версия:
21 октября 2008
Тестовая версия:
10 октября 2006
(Linux 2.6.28, 2.6.19)

Метка тома

0x83 (MBR)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)

Структура

Содержимое папок

Linked list, hashed B-tree

Размещение файлов

Extents/Bitmap

Сбойные сектора

Table

Ограничения

Максимальный размер файла

16 тебибайт (размер кластера 4 кибибайта)

Максимум файлов

4 миллиарда (specified at filesystem creation time)

Максимальная длина имени файла

256 байт

Максимальный размер тома

1 эксбибайт (ограничен до 16 тебибайт)

Допустимые символы в названиях

Все байты кроме NULL и '/'

Возможности

Свойства

modification (mtime), attribute modification (ctime), access (atime), delete (dtime), create (crtime)

Диапазон дат

14 декабря 1901 - 25 апреля 2514

Точность хранения даты

Наносекунда

Потоки метаданных

Нет

Атрибуты

extents, noextents, mballoc, nomballoc, delalloc, nodelalloc, data=journal, data=ordered, data=writeback, commit=nrsec, orlov, oldalloc, user_xattr, nouser_xattr, acl, noacl, bsddf, minixdf, bh, nobh, journal_dev

Права доступа

POSIX

Поддерживаемые ОС

Linux, Windows (чтение)

 
 


Характеристики

Главной особенностью новой файловой системы ext4 стал рост максимального объема одного раздела диска - до 1 эксбибайта (260 байт) при размере блока 4Kb, а также и увеличение размера одного файла до 16 тебибайт. 

Более того, в ext4 был представлен механизм пространственной (extent) записи файлов. Механизм работает следующим образом: новая информация добавляется в конец заранее выделенной области файла, расположенного по соседству. Это, в свою очередь, уменьшает фрагментацию и увеличивает производительность.

Функциональные особенности ext4

  • Экстенты. В файловой системе ext3 адресация данных выполнялась поблочно. Такой способ адресации становится менее эффективным с ростом размера файлов. Экстенты позволяют адресовать большое количество (до 128 MB) последовательно идущих блоков одним дескриптором. В inode может размещаться до 4-х указателей на экстенты, этого вполне достаточно для маленьких и средних файлов.
  • 48-битные номера блоков. При размере блока 4K есть возможность адресовать до одного эксбибайта (248*4KB = 250*1KB = 260 B = 1 EB).
  • Выделение блоков группами. ext4 сохраняет не только информацию о местоположении свободных блоков, но и количество свободных блоков, расположенных друг за другом. При выделении места файловая система находит такой фрагмент, в который данные могут быть записаны без фрагментации, что существенно снижает уровень фрагментации файловой системы в общем.
  • Отложенное выделение блоков. Выделение блоков для хранения данных файла происходит перед физической записью на диск, а не при вызове write. Так, операции выделения блоков можно делать не по одной, а группами, что минимизирует фрагментацию и ускоряет процесс выделения блоков. С другой стороны, это увеличивает риск потери данных в случае внезапного пропадания питания.
  • Превышен лимит в 32000 каталогов. В ext3, без специальных патчей, в одном каталоге можно создать не более 32000 подкаталогов.
  • Резервирование inode'ов при создании каталога. При создании каталога резервируется несколько inode'ов. Впоследствии, при создании файлов в этом каталоге сперва используются зарезервированные inode'ы, и если таковых не осталось, выполняется обычная процедура.
  • Размер inode. Размер inode увеличен с 128 до 256 байтов.
  • Временные метки с наносекундной точностью. Более высокая точность времен, хранящихся в inode. Также расширен и диапазон хранящихся времен: в прежней версии верхней границей хранимого времени было 18 января 2038 года, в новой - 25 апреля 2514 года.
  • Версия inode. В inode появился номер, увеличивающийся при каждом изменении inode файла. Это полезно в NFSv4 - чтобы узнавать, не изменился ли файл.
  • Хранение расширенных атрибутов в inode (EA in inode). Хранение расширенных атрибутов, таких как ACL, атрибутов SELinux и прочих, позволяет повысить производительность. Атрибуты, для которых недостаточно места в inode, хранятся в отдельном блоке размером 4KB. В будущем это ограничение наверняка снимут.
  • Контрольное суммирование в журнале. Хранение контрольных сумм журнальных транзакций позволяет быстрее найти и исправить ошибки при проверке системы после сбоя.
  • Предварительное выделение. Ранее для того, чтобы приложение могло гарантированно занять место в файловой системе, оно заполняло его нулями. В ext4 появилась возможность зарезервировать множество блоков для записи и не тратить на инициализацию лишнее время. Кроме того, удаленные данные защищены от несанкционированного прочтения.
  • Дефрагментация без размонтирования. Реализовано в самой последней версии e2fsprogs. (~/misc/e4defrag)
  • Неинициализированные блоки. Данная особенность пока не реализована. Но она позволяет ускорить проверку файловой системы при помощи fsck. Если блоки отмечены как неиспользуемые, детальная проверка производится только при условии, что проверка группы показала: внутри есть повреждения. Такая возможность может очень сильно ускорить процесс проверки целостности файловой системы.


Поддержка в ОС

Благодаря использованию технологии coLinux в системах MS Windows пользователь может получить доступ к томам ext4. Однако поддержка Просмотра и Чтения тома реализована в программе Ext2read. Частичный функционал работы с ext4 на уровне драйвера Windows реализован в Ext2Fsd Project.

#