Файловые системы Linux. Ext4

Одна из сильных сторон Linux – поддержка обширного набора файловых систем на все случаи жизни, их только в официальном ядре насчитывается порядка десяти-пятнадцати. Сегодня мы рассмотрим файловую систему (ФС), которая негласно принята за стандартную в мире Linux. Более того, её можно назвать эталоном современной ФС – настолько она быстра и надёжна. Конечно, речь идёт об Ext4.

Сильные стороны Ext4.

Героиня статьи, как можно догадаться – четвёртая по счёту представительница файловых систем семейства Ext. Де-факто она предлагается как ФС по умолчанию почти во всех крупнейших дистрибутивах. Когда вы при установке Linux выбираете автоматическую разметку, установщик форматирует раздел именно в Ext4.

Отформатировать раздел легко и вручную – достаточно одной команды:

Она создаст на нужном разделе ФС Ext4, автоматически включив все её возможности. А таковых немало:

256-битные иноды, реализующие наносекундную точность временных меток и поддержку расширенных атрибутов;

48-битная адресация, повышающая лимит размера ФС до 260 байт, а возможное количество вложенных каталогов – до бесконечности;

экстенты – большие файлы записываются одним последовательным куском, что здорово повышает скорость;

контрольные суммы для записей журнала и механизм барьеров – изменения в ФС записываются порциями и подтверждаются хэш-суммами;

предварительное выделение места для снижения фрагментации, а также выделение места группами блоков;

обратная совместимость с Ext3 и Ext2 – их можно сконвертировать в Ext4 и обратно, отключив неподдерживаемые опции;

шифрование на уровне каталогов и файлов;

дефрагментация без предварительного размонтирования раздела.

Последний пункт списка наверняка напомнит о Windows с её утилитой для дефрагментации диска, которую приходилось использовать регулярно. Прелесть Ext4 в том, что фрагментируется она в год по чайной ложке, и нужды в дефрагментации просто нет. Вот, например, Ext4 на моём жёстком диске:

Как видите, спустя 3 года использования и 3,6 Тб записанных данных уровень фрагментации равен нулю – фрагментировано всего 5 файлов из почти 200 тысяч! Вспоминаю, как NTFS вся покрывалась красными полосками за месяц-другой использования…

Впрочем, даже у значительно фрагментированной Ext4 не сильно страдает производительность. А производительность у неё практически на потолке возможностей файловых систем – скорость чтения и записи сравниваются с показателями голого железа. Особенно если отключить журналирование, которое хоть и совсем чуть-чуть, но замедляет ФС. Например, Google на своих серверах использует именно Ext4 без журнала – по их заверениям, более быстрой ФС просто не существует.

Журнал можно отключить на этапе создания Ext4:

Либо на уже созданной ФС (она должна быть размонтирована):

Конечно, отключив журнал, вы отдаёте свои данные на волю случая – любой сбой, любое некорректное отключение может повредить или уничтожить их. Поэтому журнал обычно отключают там, где нужна максимальная скорость, а данные не столь важны: всякие кэши, временные файлы, и т. д.

Одна из приятных фич Ext4, пришедшая в ядрах 4.1 и новее – встроенное шифрование. Использовать его несложно:

Как видно, после удаления ключа шифрования имя файла в зашифрованном каталоге превратилось в кашу, а прочитать его содержимое стало невозможно. Так что не теряйте свои ключи, если уж зашифровали что-то.

Слабые стороны Ext4.

Даже у такой прекрасной ФС есть свои недостатки. И хотя рядовой пользователь вряд ли столкнётся с ними когда-нибудь, знать о них не будет лишним.

Иноды выделяются при создании ФС. Их достаточно много, но в редких случаях они могут кончиться, а это значит, что даже при наличии свободного места вы не сможете создавать новые файлы и каталоги. К тому же, иноды занимают немало места – до 10% от объёма раздела.

Несмотря на надёжность Ext4, иногда она всё-таки портит файлы, когда происходит внезапное отключение питания при записи в них. За 3 года я так потерял несколько фотографий, так что не забывайте про бэкапы.

Если хранить в одном каталоге более миллиона файлов, скорость работы с ними будет ну о-о-очень низкой. Так что соблюдайте иерархию, раскладывайте файлы по каталогам, не устраивайте свалки.

Ext4 – тупиковая ветвь эволюции, развиваться она не будет. Из архитектуры Ext больше ничего нельзя выжать, да и разработчики сконцентрировали усилия на Btrfs, о которой пойдёт речь в одной из будущих статей.