ext4
| ext4 | |
| Разработчик |
Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, Theodore Ts'o, Eric Sandeen, Sam Naghshineh и другие |
|---|---|
| Файловая система |
Fourth extended file system |
| Дата представления |
Стабильная версия: |
| Метка тома | |
| Структура | |
| Содержимое папок | |
| Размещение файлов | |
| Сбойные сектора |
Table |
| Ограничения | |
| Максимальный размер файла | |
| Максимум файлов | |
| Максимальная длина имени файла |
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 |
| Права доступа | |
| Фоновая компрессия |
Нет |
| Фоновое шифрование |
Нет |
| Поддерживается ОС | |
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 от нынешнего в зависимости от способа размещения данных.[источник не указан 1227 дней]
Поддержка в операционных системах[править | править код]
- 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:
- AgiliaLinux:
- ext4 — ФС по умолчанию.
См. также[править | править код]
Примечания[править | править код]
- ↑ Hashed B-tree
- ↑ Официальное объявление Эндрю Мортона о включении поддержки ext4 (англ.) (txt).
- ↑
mount -t ext4 /dev/sda2 /mnt/ -o rw,iversion - ↑ Include ext4 defragmenting tool
- ↑ Release Notes for Red Hat Enterprise Linux 6 - File Systems (англ.). Архивировано 3 июня 2012 года.
- ↑ Ts'o, Theodore. Android will be using ext4 starting with Gingerbread, Thoughts by Ted (12 December 2010). Проверено 20 декабря 2010.
- ↑ Android 2.3 Platform Highlights. Android Developers (6 December 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 года.
- acheron. «Интервью о состоянии поддержки ext4 в Fedora 9». linux.org.ru (12 марта 2008). — новость и обсуждение на ЛОР. Проверено 29 мая 2010. Архивировано 21 января 2012 года.
- apelsyn. «ext4: Еще тестируется или уже работает?». habrahabr.ru (8 июня 2008). — небольшая заметка о переходе на ext4 на Habrahabr. Проверено 29 мая 2010. Архивировано 21 января 2012 года.
- Родерик Смит. «IBM: Переход на ext4». IBM DeveloperWorks (20 ноября 2008). — Подготовка к новейшей файловой системе для Linux. Проверено 29 мая 2010. Архивировано 21 января 2012 года.
- Boten. «Полноценный доступ ко всем Linux-файловым системам в Windows 2000/XP/Vista/7 с помощью coLinux». habrahabr.ru (22 сентября 2009). — заметка на Habrahabr о способе получения доступа к томам с ext4 в системах MS Windows. Архивировано 21 января 2012 года.
Материалы на английском языке[править | править код]
- KernelTrap
- 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 года.
- LWN.net
- 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 года.