Ext4 — журналируемая файловая система, предлагаемая для использования по умолчанию инсталятором Ubuntu, начиная с версии 9.10. Количество индексных дескрипторов (i-node) задается только при создании ФС и в дальнейшем может быть только уменьшено1). При создании ФС приблизительно 1,8% объёма диска занимается служебными структурами ФС2), в дальнейшем размер этих данных увеличиваться будет только на размер каталогов файлов. Кроме того еще 5% (по умолчанию) резервируется для root3). Как и в других ФС, используемых в Linux, регистр в именах файлов имеет значение, то есть «Документ.txt» и «документ.txt» — это разные файлы, и они без проблем могут находиться в одной директории.
В отличии от Ext3 в Ext4 пространство под файлы выделяется экстентами: extent - последовательная цепочка блоков, для идентификации которой используется только указатель на начало и длина в блоках (тогда как в Ext2/3 при выделении места используются отдельные блоки и требовалось перечислять все блоки, в которых размещен файл).

Все утилиты требуемые для работы с Ext4 содержатся в пакете e2fsprogs.

Форматирование раздела

Для того, чтоб отформатировать раздел достаточно выполнить комманду:

sudo mkfs.ext4 /dev/<xxx>

где <xxx> - название раздела на котором требуется создать файловую систему Ext4. Например, sda4 (смотри «Системный монитор - Файловые системы»).

Последствия этой команды необратимы. Вся информация, хранящаяся на разделе к которому она применялась, будет утеряна.

Конвертация Ext3 разделов в Ext4

Монтирование раздела как Ext4

Этот способ можно считать самым безопасным, так как физически на диске ничего не меняется и вернуться обратно к Ext3 не составит труда. При монтировании Ext3 как Ext4 будут доступны некоторые оптимизации добавленые в Ext4.

Конвертация в Ext4

Полная конвертация раздела добавит большую часть нововведений Ext4, но некоторые из них будут применяться только к новым файлам. Для того, чтобы выполнить конвертацию раздела в Ext4 достаточно выполнить следующие действия:

  1. Включение новых возможностей на разделе с Ext3:

    sudo tune2fs -O extents,uninit_bg,dir_index /dev/<xxx>
  2. Проверка раздела на наличие ошибок:

    sudo e2fsck -pDf /dev/<xxx>

где <xxx> - название раздела который требуется конвертировать в Ext4.

После выполнения этой команды монтирование раздела в Ext3 будет невозможно. Если раздел прописан в fstab, не забудьте внести соответствующие правки.

Дефрагментация

ФС в Linux изначально спроектированы так, чтобы фрагментация файлов была как можно меньше. Тем не менее, фрагментированность файлов имеет место быть, и в некоторых случаях может привести к заметному падению производительности дисковой подсистемы.

Для Ext4 есть несколько дефрагментаторов:

  • e2fsprogs. Онлайн дефрагментатор из стандартного набора утилит.
  • Defrag. Дефрагментатор от Кона Коливаса. Случаются перерывы в разработке, но проект живой, в 2010 появился PPA-репозиторий: ppa:e2defrag/ppa.
  • Shake. Онлайн-дефрагментатор, PPA-репозиторий: ppa:un-brice/ppa.

e2fsprogs

  1. Проверка необходимости дефрагментации:

    sudo e4defrag -c /dev/<xxx>

    где <xxx> - название раздела, который требуется дефрагментировать. Например, sda4.

  2. запуск дефрагментации:

    sudo e4defrag /dev/<xxx>

    где <xxx> - название раздела, который требуется дефрагментировать. Например, sda4.

  3. проверка результата (в последней строке вывода должно быть ⩽0.3% non-contiguous):

    sudo fsck -n /dev/<xxx>

Оптимизация дискового пространства

На свежесозданном разделе с Ext4 обычно выделяется заметно меньше свободного дискового пространства чем размер раздела. Это происходит потому, что используется порядка 1,8% на служебные нужды: заголовки групп блоков, бинарные поля для учета свободного места, индексные дискрипторы (i-node), основной и множество резервных копий суперблока.
Также по умолчанию, дополнительно резервируется 5% от объема раздела для нужд учетной записи суперпользователя (root) и системных служб (daemons). Обычно это полезно для системного корневого раздела, но на пользовательских разделах необходимости в этом резерве нет, особенно на разделах большого размера, где 5% превращаются в очень приличные объемы (недоступные пользователю).

Изменение процента зарезервированных блоков для нужд суперпользователя

По умолчанию резервируется 5% от объема раздела или диска. Значение 0 отключает резервирование блоков, значение 5 - устанавливает резервирование на 5%.

sudo tune2fs -m 0 /dev/<xxx>

Изменение числа зарезервированных под служебные нужды блоков

Значение 0 отключает резервирование блоков, значение 5 - устанавливает резервирование 5-и блоков.

sudo tune2fs -r 0 /dev/<xxx>

Ссылки

1) хотя по умолчанию число дескрипторов задается довольно большим, но при записи огромного числа маленьких файлов возможна ситуация когда дескрипторов не хватит, а место на диске еще есть:-(
2) в частности на i-node
3) этот резерв можно отключить утилитой tune2fs