ext4

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
ext4
Разработчик

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

Файловая система

Fourth extended file system

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

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

Метка тома

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

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

Связный список, B-дерево[1]

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

Битовая карта/экстенты

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

Table

Ограничения
Максимальный размер файла

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

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

4 миллиарда (задаётся во время создания ФС)

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

255 байт

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

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

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

Все байты кроме 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 (IFS)

Fourth extended file system (четвёртая расширенная файловая система (ФС)), сокр. ext4, или ext4fs — журналируемая ФС, используемая в ОС с ядром Linux. Основана на ФС ext3, ранее использовавшейся по умолчанию во многих дистрибутивах GNU/Linux.

Первая экспериментальная реализация ext4 была написана Эндрю Мортоном (англ.) и выпущена 10 октября 2006 года в виде патча к ядрам Linux версий 2.6.19-rc1-mm1 и 2.6.19-rc1-git8 .[2]

Характеристика[править | править вики-текст]

Основные изменения по сравнению с ext3:

  • увеличение максимального объёма одного раздела диска до 1 эксбибайта (260 байт) при размере блока 4 кибибайт;
  • увеличение размера одного файла до 16 тебибайт (244 байт);
  • введение механизма пространственной (extent) записи файлов, уменьшающего фрагментацию и повышающего производительность. Суть механизма заключается в том, что новая информация добавляется в конец области диска, выделенной заранее по соседству с областью, занятой содержимым файла.

Особенности[править | править вики-текст]

  • Использование экстентов (англ. extent). В ФС ext3 адресация данных выполнялась традиционным образом — поблочно. Такой способ адресации стал менее эффективным с ростом размера файлов. Экстенты позволяют адресовать большое количество (до 128 MB) последовательно идущих блоков одним дескриптором. До четырёх указателей на экстенты может размещаться непосредственно в inode, этого достаточно для файлов маленького и среднего размера.
  • 48-битные номера блоков. При размере блока 4 KB это позволяет адресовать до одного эксбибайта (248·(4 KB) = 248·(22)·(210) B = 260 B = 1 EB).
  • Выделение блоков группами (англ. multiblock allocation). ФС хранит информацию не только о местоположении свободных блоков, но и о количестве свободных блоков, расположенных друг за другом. При выделении места ФС находит такой фрагмент, в который данные можно записать без фрагментации. Использование этой техники позволяет снизить уровень фрагментации ФС.
  • Отложенное выделение блоков (англ. delayed allocation). Выделение блоков для хранения содержимого файла происходит непосредственно перед записью на диск (например, при вызове sync), а не при вызове write. Из-за этого блоки можно выделять не по одному, а группами, что в свою очередь минимизирует фрагментацию и ускоряет процесс выделения блоков. С другой стороны, увеличивается риск потери данных в случае внезапного пропадания питания.
  • Поднято ограничение на число вложенных каталогов. ext3 (без использования патчей) позволяла размещать в одном каталоге не более 32 000 подкаталогов (до 65 535, если изменить константы ядра).
  • Резервирование inode’ов при создании каталога (англ. directory inodes reservation). При создании каталога резервируется несколько inode’ов. Впоследствии, при создании файлов в этом каталоге сначала используются зарезервированные inode’ы, и если таких не осталось, выполняется обычная процедура выделения inode.
  • Размер inode. Размер inode (по умолчанию) увеличен с 128 (ext3) до 256 байтов. Это позволило реализовать перечисленное ниже.
  • Временные метки с наносекундной точностью (англ. nanosecond timestamps). Точность временных меток, хранящихся в inode, повышена до наносекунд. Диапазон значений тоже расширен: у ext3 верхней границей хранимого времени было 18 января 2038 года, а у ext4 — 25 апреля 2514 года.
  • Версия inode. В структуре inode появилось поле, хранящее номер версии. Номер может увеличиваться при каждом изменении inode, если ФС монтирована с опцией iversion[3]. Это используется демонами сетевой файловой системы NFS версии 4 (NFSv4) для отслеживания изменений файлов.
  • Хранение расширенных атрибутов в структуре inode (англ. extended attributes (EA) in inode). Производительность файловой системы повышается из-за исключения операции поиска атрибутов в каком-либо другом месте диска. К расширенным атрибутам относятся списки контроля доступа ACL, атрибуты SELinux и другие. Атрибуты, для которых недостаточно места в структуре inode, хранятся в отдельном блоке размером 4 KB. В будущем планируется снять это[какое?] ограничение.
  • Вычисление контрольных сумм для записей журнала (англ. journal checksumming). Использование контрольных сумм для транзакций журнала позволяет быстрее находить и (иногда) исправлять ошибки системы после сбоя (при проверке целостности).
  • Предварительное выделение (англ. persistent preallocation). Для выделения места на ext2 и ext3 приложению приходилось записывать в файл нулевые байты. В ext4 появилась возможность резервирования блоков. Теперь не нужно тратить время на запись нулевых байт, достаточно использовать системный вызов fallocate. fallocate выделяет для файла блоки и устанавливает для них флаг «заполнены нулевыми байтами». При чтении из файла приложение получит нулевые байты (так же, как при чтении sparse файла). При записи в файл флаг «заполнены нулевыми байтами» будет снят. В отличие sparse файлов запись в такой файл никогда не прервётся из-за нехватки свободного места.
  • Дефрагментация без размонтирования (англ. online defragmentation). Дефрагментация выполняется утилитой e4defrag, поставляемой в составе пакета e2fsprogs с 2011 года[4].
  • Неинициализированные блоки (англ. uninitialised groups). Возможность пока не реализована и предназначена для ускорения проверки целостности ФС утилитой fsck. Блоки, отмеченные как неиспользуемые, будут проверяться группами, и детальная проверка будет производится только если проверка группы показала наличие повреждений. Предполагается, что время проверки будет составлять от 1/2 до 1/10 от нынешнего в зависимости от способа размещения данных.[источник не указан 693 дня]

Поддержка в операционных системах[править | править вики-текст]

  • coLinux — технология, позволяющая запустить ядро Linux под управлением ОС Windows. Возможен доступ к томам с ФС ext2/ext3/ext4.
  • Ext2read — программа, предоставляющая доступ к ФС ext2/ext3/ext4 и LVM2, но в режиме только для чтения, с интерфейсом, напоминающим проводник Windows.
  • Ext2Fsd — экспериментальный драйвер, добавляющий поддержку ФС ext2/ext3/ext4 для ОС Windows. Драйвер поддерживает не все возможности ФС.
  • Paragon ExtFS for Windows — бесплатное для личного пользования проприетарное ПО, предоставляющее доступ к ФС ext2/ext3/ext4 для чтения и записи.

Поддержка ext4 в дистрибутивах Linux[править | править вики-текст]

  • Ubuntu:
    • 9.04: ext4 доступна для выбора по желанию пользователя;
    • 9.10+: ext4 стала ФС по умолчанию.
  • Debian:
    • 6.0: ext4 доступна для выбора по желанию пользователя;
    • 7.0+: ext4 предлагается, как ФС по умолчанию.
  • Fedora:
    • >=9: ext4 доступна для выбора по желанию пользователя;
    • 11+: ext4 — ФС по умолчанию.
  • Sabayon Linux:
    • 3.5 Loop 3+: ext4 доступна.
  • ArchLinux.
  • Slackware.
  • OpenSUSE:
    • 11.2+: ext4 — ФС по умолчанию.
  • Mandriva Linux:
    • 2010+: ext4 — ФС по умолчанию.
  • Red Hat Enterprise Linux:
    • 6+: ext4 — ФС по умолчанию[5].
  • PCLinuxOS:
    • 2010+: ext4 — ФС по умолчанию.
  • Android:
    • 2.3+: ext4 доступна[6][7].
  • AgiliaLinux:
    • ext4 — ФС по умолчанию.

См. также[править | править вики-текст]

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]

Официальные ресурсы[править | править вики-текст]

Материалы на русском языке[править | править вики-текст]

Материалы на английском языке[править | править вики-текст]