Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

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

Оригинал: Defragment 'Ext4' File systems Using 'e4defrag' (Ubuntu)
Автор: Gayan
Дата публикации: 24 октября 2012 года
Перевод: А. Кривошей
Дата перевода: апрель 2015 г.

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

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

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

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

e4defrag

Это, в некоторой степени, действительно так. Но есть эксперты, такие как Такаши Сато, экспериментально проверившие влияние фрагментации на производительность основных файловых систем 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

На скриншоте свежеустановленная операционная система, поэтому степень фрагментации равна нулю.

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

$ 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

На этом все. Удачи.