Содержание
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 достаточно выполнить следующие действия:
Включение новых возможностей на разделе с Ext3:
sudo tune2fs -O extents,uninit_bg,dir_index /dev/<xxx>
Проверка раздела на наличие ошибок:
sudo e2fsck -pDf /dev/<xxx>
где <xxx> - название раздела который требуется конвертировать в Ext4.
Дефрагментация
ФС в Linux изначально спроектированы так, чтобы фрагментация файлов была как можно меньше. Тем не менее, фрагментированность файлов имеет место быть, и в некоторых случаях может привести к заметному падению производительности дисковой подсистемы.
Для Ext4 есть несколько дефрагментаторов:
- e2fsprogs. Онлайн дефрагментатор из стандартного набора утилит.
- Defrag. Дефрагментатор от Кона Коливаса. Случаются перерывы в разработке, но проект живой, в 2010 появился PPA-репозиторий:
ppa:e2defrag/ppa
. - Shake. Онлайн-дефрагментатор, PPA-репозиторий:
ppa:un-brice/ppa
.
e2fsprogs
Проверка необходимости дефрагментации:
sudo e4defrag -c /dev/<xxx>
где <xxx> - название раздела, который требуется дефрагментировать. Например, sda4.
запуск дефрагментации:
sudo e4defrag /dev/<xxx>
где <xxx> - название раздела, который требуется дефрагментировать. Например, sda4.
проверка результата (в последней строке вывода должно быть ⩽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>
Ссылки
- дефрагментация ext4 — статья на форуме
- Outline of Ext4 File System & Ext4 Online Defragmentation Foresight (англ., pdf) — презентация от Akira Fujita
- All about ureadahead - Ubuntu Forums — Scott James Remnant о нужности дефрагментации.
- git.kernel.org — коммит в ядро, добавляющий поддержку дефрагментации Ext4.