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)
|
Структура |
Содержимое папок |
hashed B-tree
|
Размещение файлов |
Extents/Bitmap
|
Сбойные сектора |
Table
|
Ограничения |
Максимальный размер файла |
16 тебибайт (размер кластера 4 кибибайта)
|
Максимум файлов |
4 миллиарда (specified at filesystem creation time)
|
Максимальная длина имени файла |
256 байт
|
Максимальный размер тома |
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 (только чтение)
|
Fourth Extended File System (четвёртая версия расширенной файловой системы), сокр. ext4, или ext4fs — журналируемая файловая система, используемая в ОС с ядром Linux. Основана на файловой системе ext3, которая является файловой системой по умолчанию во многих дистрибутивах GNU/Linux.
Впервые экспериментальная поддержка ext4 была выпущена в виде патча для Linux версий 2.6.19-rc1-mm1 и 2.6.19-rc1-git8 10 октября 2006 года программистом Эндрю Мортоном (англ.).[1]
Характеристика
Основной особенностью стало увеличение максимального объёма одного раздела диска до 1 эксбибайта (260 байт) при размере блока 4Kb, и увеличение размера одного файла до 16 тебибайт. Кроме того, в ext4 представлен механизм пространственной (extent) записи файлов (новая информация добавляется в конец заранее выделенной по соседству области файла), уменьшающий фрагментацию и повышающий производительность.
Особенности
- Использование экстентов. В файловой системе ext3 адресация данных выполнялась традиционным образом, поблочно. Такой способ адресации становится менее эффективным с ростом размера файлов. Экстенты позволяют адресовать большое количество (до 128 MB) последовательно идущих блоков одним дескриптором. До 4х указателей на экстенты может размещаться непосредственно в inode, что достаточно для файлов маленького и среднего размера.
- 48-битные номера блоков. При размере блока 4K это позволяет адресовать до одного эксбибайта (248*4KB = 250*1KB = 260 B = 1 EB).
- Выделение блоков группами (multiblock allocation). Файловая система хранит не только информацию о местоположении свободных блоков, но и количество свободных блоков, идущих друг за другом. При выделении места файловая система находит такой фрагмент, в который данные могут быть записаны без фрагментации. Это снижает уровень фрагментации файловой системы в целом.
- Отложенное выделение блоков (delayed allocation). Выделение блоков для хранения данных файла происходят непосредственно перед физической записью на диск (например, при вызове sync), а не при вызове write. В результате, операции выделения блоков можно делать не по одной, а группами, что в свою очередь минимизирует фрагментацию и ускоряет процесс выделения блоков. С другой стороны, увеличивает риск потери данных в случае внезапного пропадания питания.
- Превышен лимит в 32000 каталогов. В ext3, если не использовать специальные патчи, в одном каталоге можно было создать не более 32000 подкаталогов (или, если быть совсем точным, до 65535 каталогов, но только изменяя константы ядра).
- Резервирование inode'ов при создании каталога (directory inodes reservation). При создании каталога резервируется несколько inode'ов. Впоследствии, при создании файлов в этом каталоге сначала используются зарезервированные inode'ы, и если таких не осталось, выполняется обычная процедура.
- Размер inode. Размер inode (по умолчанию) увеличен с 128 до 256 байтов. Это дало возможность реализовать те преимущества, которые перечислены ниже.
- Временные метки с наносекундной точностью (nanosecond timestamps). Более высокая точность времён, хранящихся в inode. Диапазон хранящихся времён тоже расширен: если раньше верхней границей хранимого времени было 18 января 2038 года, то теперь это 25 апреля 2514 года.
- Версия inode. В inode появился номер, который увеличивается при каждом изменении inode файла. Это будет использоваться, например, в NFSv4, для того чтобы узнавать, изменился ли файл.
- Хранение расширенных атрибутов в inode (EA in inode). Хранение расширенных атрибутов, таких как ACL, атрибутов SELinux и прочих, позволяет повысить производительность. Атрибуты, для которых недостаточно места в inode, хранятся в отдельном блоке размером 4KB. Предполагается снять это ограничение в будущем.
- Контрольное суммирование в журнале (Journal checksumming). Контрольные суммы журнальных транзакций. Позволяют лучше найти и (иногда) исправить ошибки при проверке целостности системы после сбоя.
- Предварительное выделение (persistent preallocation). Сейчас для того, чтобы приложению гарантированно занять место в файловой системе, оно заполняет его нулями. В ext4 появилась возможность зарезервировать множество блоков для записи и не тратить на инициализацию лишнее время. Если приложение попробует прочитать данные, оно получит сообщение о том, что они не проинициализированы. Таким образом, несанкционированно прочитать удалённые данные не получится.
- Дефрагментация без размонтирования (online Defragmentation). Реализовано в самой последней версии e2fsprogs. (~/misc/e4defrag)
- Неинициализированные блоки (uninitialised groups). Пока не реализовано. Позволяет ускорить проверку файловой системы с помощью fsck. Блоки, отмеченные как неиспользуемые, проверяются группами, и детальная проверка производится только если проверка группы показала, что внутри есть повреждения. Предполагается, что эта возможность может очень сильно ускорить процесс проверки целостности файловой системы; в зависимости от способа размещения данных время проверки будет составлять от 1/2 до 1/10 от нынешнего.
Поддержка в операционных системах
В системах Ext2read. Частичный функционал работы с ext4 на уровне драйвера Ext2Fsd Project.
Дистрибутивы Linux
См. также
Примечания
- Официальное объявление Эндрю Мортона о включении поддержки ext4 (англ.) (txt).
- Release Notes for Red Hat Enterprise Linux 6 - File Systems (англ.). Архивировано из первоисточника 3 июня 2012.
- 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). Архивировано из первоисточника 21 января 2012. Проверено 7 декабря 2010.
Ссылки
Официальные ресурсы
- Ext4 (and Ext2/Ext3) Wiki (англ.) (Архивировано из первоисточника 19 мая 2012. Проверено 29 мая 2010.
- Ext4 Development project (англ.). bullopensource.org. — Страница проекта по разработке файловой системы ext4 (с 2009 года эта страница более не поддерживается). Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
Материалы на русском языке
- ext4 (Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- acheron «Интервью о состоянии поддержки ext4 в Fedora 9». Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- apelsyn «ext4: Еще тестируется или уже работает?». Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- Родерик Смит «IBM: Переход на ext4». IBM DeveloperWorks (20 ноября 2008). — Подготовка к новейшей файловой системе для Linux. Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- Boten «Полноценный доступ ко всем Linux-файловым системам в Windows 2000/XP/Vista/7 с помощью coLinux». Архивировано из первоисточника 21 января 2012.
Материалы на английском языке
- KernelTrap (англ.)
- Jeremy Andrews «ext4 2.6.25 Merge Plans» (22 января 2008). Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- Jeremy Andrews « Linux: ext4 Filesystem» (29 июня 2006). Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- LWN.net
- Jonathan Corbet «A better ext4» (23 января 2008). Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- Theodore Ts'o «ext4 merge plans for 2.6.25» (21 января 2008). Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- Jonathan Corbet «Time for ext4?» (12 июня 2006). Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- Ext4: The Next Generation of Ext2/3
- Features/Ext4 (Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- Jonathan Corbet «Linux Weather Forecast/filesystems» (26 января 2009). — обзор множества новых файловых систем в Linux, в том числе ext4 и прогнозы что их ждёт.(недоступная ссылка — история) Проверено 29 мая 2010.
- 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. Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.
- First benchmarks of the ext4 file system. linuxinsight.com (21 октября 2006). — Тестирование возможностей ext4. Архивировано из первоисточника 21 января 2012. Проверено 29 мая 2010.