Дефрагментация диска Linux

Пользователи Windows знают, что для того, чтобы операционная система работала быстро, надо время от времени дефрагментировать жесткий диск, на котором она установлена. Файловая система Ext4 в Linux не подвержена фрагментации. Однако при долгом использовании при определённых условиях незначительная фрагментация может всё же накапливаться.

Жесткий диск состоит из множества маленьких секторов, в каждом из которых хранится небольшая частичка данных. Если файл большой он разделяется на несколько секторов. Когда вы записываете файл в файловых системах FAT или NTFS, под него выделяется определённое количество секторов, а после него записываются уже следующие файлы, поэтому если вы захотите обновить файл и добавить в него информацию, то для этого уже будут использоваться секторы в другой части диска. Если таких операций будет много, то файл может оказаться раскиданным по всему диску и при чтении диску придется очень часто перемещать читающую головку, что замедлит производительность. Это и есть фрагментация.

Но Ext4 большой фрагментации не подвержена, потому что файловая система выделяет много места после записанного файла и использует его. А даже если возникает фрагментация, то она пытается переместить файл в свободное место. Здесь фрагментация может возникнуть только если файловая система переполнена и то это возникает довольно редко.

Чтобы посмотреть какая сейчас фрагментация диска можно использовать утилиту fsck. Ей надо передать параметр -f. Чтобы в файловую систему не вносились никакие изменения используйте опцию -n:

sudo fsck -fn /dev/sdb1

Здесь /dev/sdb1 - это раздел, который надо проверить. Фрагментация указывается в скобках и измеряется в процентах, обычно она очень маленькая и не достигает даже одного процента. Не рекомендуется выполнять проверку на примонтированной системе, иначе вы получите кучу ложных ошибок. Для дефрагментации нам понадобится утилита e4defrag:

sudo apt install e2fsprogs

Теперь можете дефрагментировать нужный раздел. Например, тот же /dev/sdb1. Но перед дефрагментацией раздел надо примонтировать:

sudo mount /dev/sdb1 /mnt

Затем дефрагментация Ext4:

sudo e4defrag /dev/sdb1

После этого можно снова проверить фрагментацию. Если есть возможность, лучше отмонтировать перед этим раздел.

sudo fsck -fn /dev/sdb1

В этой статье мы рассмотрели как выполняется дефрагментация диска Linux с файловой системой Ext4. Только не надо дефрагментировать SSD диски, это только уменьшит срок их службы.