Все ленты — последние статьи

Дефрагментация файловой системы Ext4 с помощью утилиты e4defrag

 

Различные операционные системы используют разные файловые системы. Например, GNU/Linux поддерживает большое количество файловых систем, но наиболее часто используется Ext4 (которая в будущем во
зможно будет заменена на Btrfs). И когда речь идет о файловых системах, первое, что приходит в голову — это фрагментация, которая оказывает прямое воздействие на производительность файловой системы.

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

Если операционная система не может найти достаточно большой кусок свободного пространства, данные записываются отдельными блоками и оказываются распределенными по жесткому диску. В результате головке жесткого диска требуется больше времени для чтения данных, так как время тратится на перемещение ее к каждому блоку данных.

Некоторые источники утверждают, что файловым системам GNU/Linux, таким как Ext4, не требуется дефрагментация (в отличие от файловых систем для Windows), так как они спроектированы таким образом, что минимизируют фрагментацию данных.
Это, в некоторой степени, действительно так. Но есть эксперты, такие как Такаши Сато, экспериментально проверившие влияние фрагментации на производительность основных файловых систем GNU/Linux.
Он написал прекрасную статью под названием "ext4 online defragmentation" (последние ее версии можно найти здесь), в которой можно найти следующие выводы:

"Было создано 50 фрагментированных файлов размером 1 Гб (в файловой системе ext4). Перед и после фрагментации замерялась скорость чтения данных…"
"…Замеры показали, что для одного файла размером 1 Гб дефрагментация может повысить производительность при чтении на 25%. После дефрагментации всех файлов скорость доступа к ним повысилась на 29%".
Такаши Сато и Акира Фуджита создали простую в использовании утилиту командной строки для дефрагментации файловой системы ext4. Она называется "e4defrag", и начиная с Ubuntu 12.04 LTS она предустанавливается в системе по умолчанию. Но необходимо помнить, что она работает только с файловой системой ext4".

Использование e4defrag
Очень просто. Откройте терминал и введите следующую команду:

$ e4defrag /location
"location" может быть любым смонтированным устройством с файловой системой ext4 (включая корневую файловую систему), а также любой директорией или даже отдельным файлом внутри файловой системы ext4.

Получение отчета
Еще одна прекрасная функция e4defrag — возможность сканирования смонтированной файловой системы ext4 (директории или файла) с получением отчета, в котором указывается степень фрагментации. Основываясь на этом показателе, e4defrag выдаст вам рекомендации, требуется ли дефрагментация данной системы.

Замечание: если степень дефрагментации находится в диапазоне 0-30, дефрагментация не требуется. При степени фрагментации более 56% дефрагментация обязательна.
На скриншоте свежеустановленная операционная система, поэтому степень фрагментации равна нулю.

Сканирование запускается с помощью следующей команды:

$ e4defrag -c /location
Несколько примеров
Сканирование и дефрагментация своей домашней директории:

$ sudo e4defrag -c ~/
$ sudo e4defrag ~/
Сканирование и дефрагментация корневой файловой системы:

$ sudo e4defrag -c /
$ sudo e4defrag /
Замечание: в процессе дефрагментации выводятся сообщения, сообщающие о выполнении операций. Если вы там увидите сообщения с пометкой "Failure", не переживайте, это нормально, так как некоторые системные файлы невозможно переместить.

Не забывайте, что в GNU/Linux все ваши файлы смонтированы в корневой файловой системе ("/"), поэтому если у вас смонтировано несколько файловых систем ext4, они также будут дефрагментированы, что, в зависимости от их размера и количества файлов, может занять достаточно продолжительное время.
Если у вас несколько разделов с файловой системой ext4, и вы хотите дефрагментировать их индивидуально, но не знаете имя устройства (/dev/sda…), вы можете сделать это, воспользовавшись приведенными ниже инструкциями.

1. Введите приведенную ниже команду в терминале, чтобы получить список имеющихся разделов и их файловых систем.

$ sudo fdisk -l /dev/sda

2. Затем в выводе команды найдите поле "id". Разделы, у которых в этом поле стоит "83", имеют файловую систему ext4. Затем в этой же строке найдите столбец "Device", там вы увидите имя устройства. На приведенном ниже скриншоте у меня два таких устройства — "sda5" и "sda6".

3. Затем просто скопируйте имя устройства и вставьте его в приведенную ниже команду:

$ sudo e4defrag /dev/

В зависимости от типа раздела (установлена или нет на нем операционная система), вам может понадобиться "sudo".

Если вас заинтересовала эта утилита и ее возможности, более подробную информацию можно получить, прочитав краткое руководство:

$ man e4defrag