Команда e4defrag используется для задействования одноименной утилиты, предназначенной для онлайн-дефрагментации файловых систем ext4. Хотя файловые системы в Linux и мало подвержены фрагментации, производительность дисковой подсистемы может быть незначительно улучшена благодаря использованию данной утилиты, особенно в случае использования обычных жестких дисков. Кроме того, данная утилита крайне проста в использовании и весьма надежна.
Базовый синтаксис команды выглядит следующим образом:
# e4defrag [параметры] файл/директория/устройство
В случае использования команды без параметров будет осуществляться непосредственная дефрагментация указанного файла, директории или дискового устройства. Если вы хотите лишь оценить степень фрагментации, вы можете воспользоваться параметром -c. Для вывода подробной информации о ходе процесса дефрагментации следует использовать параметр -v. Других параметров утилита не поддерживает, что, впрочем, не мешает ей выполнять свои задачи.
Для того, чтобы использовать рассматриваемую утилиту, для начала следует выбрать разделы, в рамках которых она будет корректно функционировать. Для этой цели может использоваться утилита lsblk:
$ lsblk -o NAME,FSTYPE,MOUNTPOINT
NAME FSTYPE MOUNTPOINT
sda
├─sda1
├─sda2 ext4
├─sda3 ext4
├─sda5 swap [SWAP]
├─sda6 ext4
├─sda7 ext4
└─sda8 ext4 /
sdb ext4
sdc
├─sdc1 swap
├─sdc2 ext4
└─sdc4 ext4 /home
sdd vfat /media/alex/sd card
Устройства с метками ext4 подходят для дефрагментации с помощью рассматриваемой утилиты.
Для оценки фрагментации ФС ext4 достаточно использовать утилиту с параметром -c. При этом файловая система может быть смонтирована — операция будет осуществлена в онлайн-режиме:
# e4defrag -c /
e4defrag 1.45.5 (07-Jan-2020)
<Fragmented files> now/best size/ext
1. /var/log/wtmp 62/1 4 KB
2. /var/snap/lxd/common/lxd/storage-pools/default/containers/snapcraft-lark/rootfs/var/log/wtmp
18/1 4 KB
3. /var/log/apt/term.log 13/1 4 KB
4. /var/log/alternatives.log.1 6/1 4 KB
5. /var/lib/gdm3/.cache/mesa_shader_cache/index
102/1 5 KB
Total/best extents 302128/295163
Average size per extent 56 KB
Fragmentation score 1
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This directory (/) does not need defragmentation.
Done.
Для примера была использована корневая файловая система. Очевидно, что утилита не обнаружила проблем с ее фрагментацией.
Утилита может дефрагментировать как всю ФС или директорию, так и отдельные файлы. Давайте дефрагментируем файл с самым большим коэффициентом фрагментации (102/1):
# e4defrag -v /var/lib/gdm3/.cache/mesa_shader_cache/index
e4defrag 1.45.5 (07-Jan-2020)
ext4 defragmentation for /var/lib/gdm3/.cache/mesa_shader_cache/index
[1/1]/var/lib/gdm3/.cache/mesa_shader_cache/index: 99% extents: 102 -> 71[ OK ]
Success: [1/1]
Файл дефрагментирован. Если оценить фрагментацию файловой системы снова, он исчезнет из списка:
# e4defrag -c /
e4defrag 1.45.5 (07-Jan-2020)
<Fragmented files> now/best size/ext
1. /var/log/wtmp 62/1 4 KB
2. /var/snap/lxd/common/lxd/storage-pools/default/containers/snapcraft-lark/rootfs/var/log/wtmp
18/1 4 KB
3. /var/log/apt/term.log 13/1 4 KB
4. /var/log/alternatives.log.1 6/1 4 KB
5. /var/log/auth.log 4/1 4 KB
Total/best extents 302079/295164
Average size per extent 56 KB
Fragmentation score 1
[0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
This directory (/) does not need defragmentation.
Done.
Аналогичным образом могут быть дефрагментированы другие файлы либо по отдельности, либо группами путем указания содержащих их директорий или устройств.