Команда e4defrag

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

Базовый синтаксис команды выглядит следующим образом:

# e4defrag [параметры] файл/директория/устройство

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

Примеры использования

Получение списка разделов с ФС ext4

Для того, чтобы использовать рассматриваемую утилиту, для начала следует выбрать разделы, в рамках которых она будет корректно функционировать. Для этой цели может использоваться утилита 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.

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