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эксбибайт |
| Допустимые символы в названиях | все байты, кроме 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 (англ. fourth extended file system, ext4fs) —журналируемая файловая система, используемая преимущественно воперационных системах с ядромLinux, созданная на базеext3 в 2006 году.
Основные изменения в ext4 по сравнению с ext3:
- увеличен максимальный объём одного раздела диска до1эксбибайта (260байт) при размере блока 4 килобайта;
- увеличен размер одного файла до16тебибайт (244 байт);
- введён механизмпротяжённой (extent) записи файлов, уменьшающий фрагментацию и повышающий производительность (новая информация добавляется в конец области диска, выделенной заранее по соседству с областью, занятой файлом);
- поднято ограничение на число вложенных каталогов с 32 000 подкаталогов до 65 535 (при этом в некоторых случаях требуется изменить константы ядра).
История
[править |править код]Первая экспериментальная реализация выпущенаЭндрю Мортоном10 октября2006 года в виде патча к ядрам Linux версий 2.6.19[2].
Особенности
[править |править код]В сравнении с ext3 в ext4 увеличено адресное пространство и ускорена работа с данными.
Система адресации
[править |править код]Система адресации основана наэкстентах (англ. extent). В ext3 адресация данных выполнялась традиционным образом — поблочно, в связи с чем система сталкивалась с существенными ограничениями с ростом размера файлов. Экстенты позволяют адресовать большое количество (до 128МиБ) последовательно идущих блоков одним дескриптором; до четырёх указателей на экстенты может размещаться непосредственно вinode, этого достаточно для файлов малого и среднего размера.
Применены 48-битные номера блоков, при размере блока4KB это позволяет адресовать до одногоэксбибайта (248·(4КиБ) = 248·(22)·(210)Б =260Б =1ЭиБ).
Блоки и фрагментация
[править |править код]Выделение блоков группами (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, хранятся в отдельном блоке размером4KiB.
Журналирование и другие особенности
[править |править код]Для записей журнала реализовано вычислениеконтрольных сумм (англ. 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 (12 декабря 2010).Android will be using ext4 starting with Gingerbread.Thoughts by Ted.Архивировано 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 года.