ext4

Материал из Википедии — свободной энциклопедии
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 29 февраля 2024 года; проверки требуют7 правок.
Перейти к навигацииПерейти к поиску

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].

Особенности

[править |править код]
Информация должна бытьпроверяема, иначе она может быть удалена. Вы можетеотредактировать статью, добавив ссылки наавторитетные источники в видесносок.(6 апреля 2022)

В сравнении с 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(), который выделяет для файла блоки и устанавливает для них флаг «заполнены нулевыми байтами». При чтении из файла программа получит нулевые байты (так же, как при чтенииразрежённого файла). При записи в файл флаг «заполнены нулевыми байтами» будет снят. В отличие от разрежённых файлов запись в такой файл никогда не прервётся из-за нехватки свободного места.

Поддержка в операционных системах

[править |править код]
Информация должна бытьпроверяема, иначе она может быть удалена. Вы можетеотредактировать статью, добавив ссылки наавторитетные источники в видесносок.(6 апреля 2022)

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].

Комментарии

[править |править код]
  1. mount -t ext4 /dev/sda2 /mnt/ -o rw,iversion

Примечания

[править |править код]
  1. Hashed B-tree . Дата обращения: 20 марта 2010. Архивировано 18 июля 2019 года.
  2. Официальное объявление Эндрю Мортона о включении поддержки ext4 (англ.) (txt). Архивировано изоригинала 7 августа 2008 года.
  3. Include ext4 defragmenting tool . Дата обращения: 26 августа 2014. Архивировано 27 августа 2014 года.
  4. 3.1. Fourth Extended Filesystem (ext4) Support // 6.0 Release Notes : Release Notes for Red Hat Enterprise Linux 6 :[англ.] : [арх. 3 июня 2012]. — Red Hat, 2010.
  5. Ts'o, Theodore (12 декабря 2010).Android will be using ext4 starting with Gingerbread.Thoughts by Ted.Архивировано 15 декабря 2010. Дата обращения: 20 декабря 2010.
  6. 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 года.
Перейти к шаблону «Файловые системы»
Дисковые
Оптические диски
Флеш-память/SSD
Кластерные
Распределённые
(сетевые)
Специальные
Псевдо- и виртуальные
Шифрованные
Источник —https://ru.wikipedia.org/w/index.php?title=Ext4&oldid=150699274
Категории:
Скрытые категории: