Библиотека сайта rus-linux.net
Дефрагментация файловой системы Ext4 с помощью утилиты e4defrag
Оригинал: Defragment 'Ext4' File systems Using 'e4defrag' (Ubuntu)Автор: Gayan
Дата публикации: 24 октября 2012 года
Перевод: А. Кривошей
Дата перевода: апрель 2015 г.
Различные операционные системы используют разные файловые системы. Например, 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
На этом все. Удачи.