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

23.10.2022, 02:33

Каждый юзер Windows знаком с тем, что есть дефрагментация диска. Она нужна для того, чтобы жесткий диск быстро функционировал,  при это м дефрагментировать нужно тот диск. на котором установлена ОС. Файловая система Ext4 в Linux не подвержена фрагментации. Но на практике известно, что в случае продолжительной работы за системой некоторая фрагментация накапливается. Дальше подробно расскажем о том, как правильно выполняется дефрагментация диска в Linux. Для этого мы рассмотрим пример файловой системы Ext4. 

Дефрагментация - что это? Простыми словами о сложном

Что такое фрагментация? Рассмотрим теорию: хард состоит из большого количества небольших секторов, в каждом хранится небольшая частичка данных.  Большие файлы разделены на несколько меньших фрагментов.

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

Для SSD дисков дефрагментация не нужна. Там нет движущихся частей.

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

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

Как происходит дефрагментация в Linux

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

$ sudo fsck -fn /dev/sdb1

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

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

Если у вас этот набор утилит ещё не установлен, установите его командой:

$ sudo apt install e2fsprogs

Дальше доступна дефрагментация нужного раздела. Тот же /dev/sdb1. Примонтируем раздел перед дефрагментацией:

$ sudo mount /dev/sdb1 /mnt

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

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

$ sudo e4defrag /dev/sdb1

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

Дальше можно снова проверить фрагментацию. Отмонтируйте перед этим раздел. Фрагментация 0%:

$ sudo fsck -fn /dev/sdb1

Вот и все. Не тратьте время только на дефрагментацию дисков SSD. Они в этом не нуждаются.