ext4
ext4 (англ. fourth extended file system, ext4fs) — журналируемая файловая система, используемая преимущественно в операционных системах с ядром Linux, созданная на базе ext3 в 2006 году.
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) |
Основные изменения в ext4 по сравнению с ext3:
- увеличен максимальный объём одного раздела диска до 1 эксбибайта (260 байт) при размере блока 4 кибибайт;
- увеличен размера одного файла до 16 тебибайт (244 байт);
- введён механизм протяжённой (extent) записи файлов, уменьшающий фрагментацию и повышающий производительность (новая информация добавляется в конец области диска, выделенной заранее по соседству с областью, занятой файлом);
- поднято ограничение на число вложенных каталогов с 32 000 подкаталогов до 65 535 (при этом в некоторых случаях требуется изменить константы ядра).
ИсторияПравить
Первая экспериментальная реализация выпущена Эндрю Мортоном 10 октября 2006 года в виде патча к ядрам Linux версий 2.6.19[2].
ОсобенностиПравить
В разделе не хватает ссылок на источники (см. также рекомендации по поиску). |
В сравнении с ext3 в ext4 увеличено адресное пространство и ускорена работа с данными.
Система адресацииПравить
Система адресации основана на экстентах (англ. extent). В ext3 адресация данных выполнялась традиционным образом — поблочно, в связи с чем система сталкивалась с существенными ограничениями с ростом размера файлов. Экстенты позволяют адресовать большое количество (до 128 MB) последовательно идущих блоков одним дескриптором; до четырёх указателей на экстенты может размещаться непосредственно в inode, этого достаточно для файлов малого и среднего размера.
Применены 48-битные номера блоков, при размере блока 4 KB это позволяет адресовать до одного эксбибайта (248·(4 KB) = 248·(22)·(210) B = 260 B = 1 EB).
Блоки и фрагментацияПравить
Выделение блоков группами (multiblock allocation) позволяет снизить уровень фрагментации файловой системы: система хранит информацию не только о местоположении свободных блоков, но и о количестве свободных блоков, расположенных друг за другом, таким образом, при выделении места система находит такой фрагмент, в который данные можно записать без фрагментации.
Поддерживается дефрагментация без размонтирования (online defragmentation) — утилитой e4defrag, поставляемой в составе пакета e2fsprogs с 2011 года[3].
Групповая запись блоковПравить
Отложенное выделение блоков (delayed allocation) обеспечивает непосредственную запись на блочное устройство только при необходимости (например, при вызовах sync(), но не при каждом вызове write()), что позволяет записывать блоки не по одному, а группами, что в свою очередь минимизирует фрагментацию и ускоряет процесс выделения блоков. С другой стороны, увеличивается риск потери данных в случае внезапного пропадания питания.
Изменения в inodeПравить
Резервирование несколько inode при создании каталога (англ. directory inodes reservation) позволяет сначала использовать зарезервированные inode, и только если таковых не осталось, выполняется обычная процедура выделения inode. Размер inode по умолчанию увеличен с 128 (ext3) до 256 байтов, что позволило реализовать временные метки с наносекундной точностью (англ. nanosecond timestamps) и расширить их диапазон (в ext3 предельная дата — 18 января 2038 года, а у ext4 — 25 апреля 2514 года), добавить поле версии inode и поддержать расширенные атрибуты inode. Номер версии inode может увеличиваться при каждом её изменении, в частности, если файловая система смонтирована с опцией iversion
[К. 1]: это используется демонами сетевой файловой системы NFS версии 4 (NFSv4) для отслеживания изменений файлов.
Хранение расширенных атрибутов в структуре inode (англ. extended attributes (EA) in inode), таких как списки контроля доступа (ACL), атрибуты SELinux и другие, позволяет повысисть производительность за счёт исключения операций поиска атрибутов в другом месте. Атрибуты, для которых недостаточно места в структуре inode, хранятся в отдельном блоке размером 4 KB.
Журналирование и другие особенностиПравить
Для записей журнала реализовано вычисление контрольных сумм (англ. journal checksumming), что позволяет быстрее находить и в некоторых случаях исправлять ошибки системы после сбоя.
Предварительное выделение (persistent preallocation), в отличие от ext2 и ext3 (где программам приходилось записывать в файл нулевые байты), реализовано как отдельный системный вызов fallocate()
, который выделяет для файла блоки и устанавливает для них флаг «заполнены нулевыми байтами». При чтении из файла программа получит нулевые байты (так же, как при чтении разрежённого файла). При записи в файл флаг «заполнены нулевыми байтами» будет снят. В отличие разрежённых файлов запись в такой файл никогда не прервётся из-за нехватки свободного места.
Поддержка в операционных системахПравить
В разделе не хватает ссылок на источники (см. также рекомендации по поиску). |
Ext4 поддерживается в ядре Linux начиная с версии 2.6.20. Существуют программы и драйверы для работы с ext4 в Windows: Ext2read (в режиме только для чтения), Ext2Fsd, Paragon ExtFS for Windows.
Во многих дистрибутивах Linux ext4 используется как файловая система по умолчанию:
- Ubuntu: с 9.04 доступна для выбора по желанию пользователя, начиная с 9.10 — по умолчанию;
- Debian: с 6.0: доступна для выбора, начиная с 7.0 — используется по умолчанию;
- Fedora : начиная с 9 доступна для выбора, с 11 по 32 — по умолчанию.
- OpenSUSE: начиная с 11.2 используется по умолчанию;
- Mandriva Linux: от версии 2010 применяется по умолчанию;
- Red Hat Enterprise Linux: начиная с версии 6 — по умолчанию[4];
- PCLinuxOS: начиная с версии 2010 используется по умолчанию.
Файловая система ext4 доступна для Android начиная с версии 2.3[5][6].
КомментарииПравить
- ↑
mount -t ext4 /dev/sda2 /mnt/ -o rw,iversion
ПримечанияПравить
- ↑ Hashed B-tree (неопр.). Дата обращения: 20 марта 2010. Архивировано 18 июля 2019 года.
- ↑ Официальное объявление Эндрю Мортона о включении поддержки ext4 (англ.) (txt). Архивировано из оригинала 7 августа 2008 года.
- ↑ Include ext4 defragmenting tool (неопр.). Дата обращения: 26 августа 2014. Архивировано 27 августа 2014 года.
- ↑ 3.1. Fourth Extended Filesystem (ext4) Support // 6.0 Release Notes : Release Notes for Red Hat Enterprise Linux 6 : [англ.] : [арх. 3 июня 2012]. — Red Hat, 2010.
- ↑ Ts'o, Theodore. Android will be using ext4 starting with Gingerbread, Thoughts by Ted (12 декабря 2010). Архивировано 15 декабря 2010 года. Дата обращения: 20 декабря 2010.
- ↑ Android 2.3 Platform Highlights (англ.) (недоступная ссылка — история). Android Developers (6 декабря 2010). Дата обращения: 7 декабря 2010. Архивировано 21 января 2012 года.
СсылкиПравить
- Ext4 (and Ext2/Ext3) Wiki (англ.) (wiki) (недоступная ссылка — история). kernel.org. Дата обращения: 29 мая 2010. Архивировано 19 мая 2012 года.
- Ext4 Development project (англ.) (недоступная ссылка — история). bullopensource.org. — Страница проекта по разработке файловой системы ext4 (с 2009 года эта страница более не поддерживается). Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- ext4 (неопр.) (wiki) (недоступная ссылка — история). xgu.ru. — подробное описание преимуществ ext4 по сравнению с ext3. Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- «Интервью о состоянии поддержки ext4 в Fedora 9» (неопр.) (недоступная ссылка — история). linux.org.ru (12 марта 2008). — новость и обсуждение на ЛОР. Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- Родерик Смит. «IBM: Переход на ext4» (неопр.) (недоступная ссылка — история). IBM DeveloperWorks (20 ноября 2008). — Подготовка к новейшей файловой системе для Linux. Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- Jeremy Andrews. «ext4 2.6.25 Merge Plans» (неопр.) (недоступная ссылка — история) (22 января 2008). Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- Jeremy Andrews. « Linux: ext4 Filesystem» (неопр.) (недоступная ссылка — история) (29 июня 2006). Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- Jonathan Corbet. «A better ext4» (неопр.) (недоступная ссылка — история) (23 января 2008). Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- Theodore Ts'o. «ext4 merge plans for 2.6.25» (неопр.) (недоступная ссылка — история) (21 января 2008). Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- Jonathan Corbet. «Time for ext4?» (неопр.) (недоступная ссылка — история) (12 июня 2006). Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- Ext4: The Next Generation of Ext2/3
- Features/Ext4 (неопр.) (wiki) (недоступная ссылка — история). Fedora Project. Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- Jonathan Corbet. «Linux Weather Forecast/filesystems» (неопр.) (26 января 2009). — обзор множества новых файловых систем в Linux, в том числе ext4 и прогнозы что их ждёт. Дата обращения: 29 мая 2010. Архивировано из оригинала 15 апреля 2009 года.
- Avantika Mathur, Mingming Cao, Andreas Dilger. «ext4: the next generation of the ext3 file system» (неопр.) (недоступная ссылка — история). Originally published in «login: The USENIX Magazine», 32, #3 (Berkeley, CA: USENIX Association, 2007) (2007). — очень подробное объяснение каждой новой возможности ext4. Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.
- First benchmarks of the ext4 file system (неопр.) (недоступная ссылка — история). linuxinsight.com (21 октября 2006). — Тестирование возможностей ext4. Дата обращения: 29 мая 2010. Архивировано 21 января 2012 года.