Linux дефрагментация файловой системы

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

При использовании носителей информации неизбежно возникает фрагментация данных — разбиение файлов на блоки, которые записываются в разных областях носителя. Поговорим о том, как исправить излишнюю фрагментацию данных в Linux.

Первым делом нужно сказать, что процедуру дефрагментации рекомендуется проводить только для жёстких дисков. Flash-накопители и SSD используют метод прямого доступа к памяти. Это значит, что время обращения к любой ячейке сравнительно мало, а её местонахождение становится не таким уж важным. Более того, поскольку количество циклов перезаписи у таких накопителей всё ещё меньше, чем у жёстких дисков, дефрагментация может наносить урон по продолжительности «жизни» накопителя. А вот позиционирующим головкам внутри жёстких дисков после дефрагментации приходится меньше перемещаться, что позитивно сказывается на времени обращения к файлам.

В Linux-сообществе нет единодушной позиции относительно того, полезна или бесполезна процедура дефрагментации в Linux. Дело в том, что файловые системы ext2, ext3 и ext4 стараются равномерно «раскидывать» новые файлы по диску. Если файл увеличивается в объёме, файловая система использует всё свободное пространство вокруг него. Если фрагментация всё же происходит, то файловая система старается в фоновом режиме переносить файлы в те места, где их фрагменты могут быть объединены. Успех? Не совсем.

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

Фрагментация жесткого диска

Для проведения дефрагментации в Linux можно использовать утилиты e2defrag и e4defrag (для ext2 и ext4 соответственно). Утилита e2defrag может работать и с ext3, но только при условии временного преобразования файловой системы в ext2. Есть и другой способ — утилита Shake, которая может работать с разными файловыми системами.

Допустим, что нам нужно оценить, нуждается ли в дефрагментации раздел /dev/sda2. Это делается командой

Время выполнения команды зависит от того объёма информации, что предстоит проанализировать утилите. По окончании анализа вы увидите отчёт.

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

Если вы видите надпись «This device does not need defragmentation», то дефрагментация диску (разделу) не требуется.

Нужна ли дефрагментация можно также определить по значению Fragmentation score. Если оно лежит в диапазон от 0 до 30, то дефрагментация не требуется. Если значение представляет собой число от 31 до 55, то есть небольшие проблемы с фрагментацией файлов. При Fragmentation score от 56 и выше нужно провести процедуру дефрагментации.

Если вы хотите провести принудительную процедуру дефрагментации, воспользуйтесь командой

Естественно, если нужно произвести дефрагментацию другого раздела, то вместо /dev/sda2 следует указать нужное имя.

Читайте также:  Will windows games run on linux

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

По итогам работы команды следует обратить внимание на показатель Fragmented percentage. Он показывает сколько было фрагментированных файлов и сколько стало. В нашем случае всё было хорошо и до дефрагментации, поэтому эта процедура толком ничего не изменила. Но бывают ситуации и похуже.

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

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

Командой выше мы переместили файлы в каталоге /home/test.

Если необходимо только посмотреть, насколько сильно фрагментирован файл или каталог, нужно использовать опции —pretend —verbose —verbose или -pvv

Можно использовать и более сложные конструкции. Команда ниже проведёт дефрагментацию всех mp3-файлов в каталоге и рассортирует их.

find -iname '*.mp3' | sort | shake

Для более эффективной работы утилиты её автор рекомендует включать расширенные пользовательские атрибуты (user_xattr).

Shake нечасто встретишь в репозиториях. У программы есть страница на GitHub, а также PPA-репозиторий на Launchpad, но он не обновлялся уже пять лет. Так что, скорее всего, программу вам придётся устанавливать вручную. Более подробно о синтаксисе Shake вам подскажет справка, которую можно вызвать командой

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

Итак, фрагментация файлов в Linux имеет место быть. Она не является острой проблемой благодаря достоинствам файловых систем ext2, ext3 и ext4. Однако, если жёсткий диск или раздел забит файлами, рекомендуется периодически проводить проверку на наличие фрагментации. В этой статье, безусловно, описаны не все утилиты, что умеют проводить дефрагментацию в Linux. Здесь тот обязательный минимум, который пригодится любому пользователю Linux.

Источник

How to defrag an ext4 filesystem

Yes, finally, a Q&A that actually targets «HOW» and not «why not». Lot of people have to operate on disks near to max capacity without an ability to upgrade the capacity.

6 Answers 6

Use e4defrag to defrag your files

If your ext4 file system is created with the extent option (it’s default in recent distros), you can use the e4defrag utility to check and defragment it online i.e. without umounting.

Just check fragmentation level with something like this (you need to be root to see details):

sudo e4defrag -c /path/to/myfiles 

Here’s an example of the output you can get:

$ sudo e4defrag -c iso/ now/best size/ext 1. /home/gerlos/iso/debian-live-7.5.0-i386-rescue.iso 7/1 111177 KB 2. /home/gerlos/iso/systemrescuecd-x86-4.4.1.iso 4/1 100897 KB 3. /home/gerlos/iso/debian-live-7.5.0-amd64-rescue.iso 6/1 116053 KB 4. /home/gerlos/iso/ubuntu-14.04.2-server-amd64.iso 8/1 76160 KB 5. /home/gerlos/iso/ubuntu-14.10-desktop-amd64.iso 15/1 75712 KB Total/best extents 40/5 Average size per extent 90577 KB Fragmentation score 0 [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag] This directory (iso/) does not need defragmentation. Done. 

As in this example, most of the time it will tell you that no defragmentation is needed, but if you want to do it anyway you can use (you don’t need to use sudo to defrag your own files):

Читайте также:  Установка msfconsole kali linux

Your users can even run it on their own files, there’s no need to be root unless you want to work on other user’s or system files.

e4defrag is in the e2fsprogs package, and I guess it’s already installed on your Ubuntu system.

Источник

Дефрагментация в Linux — как делать и нужно ли?

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

Описываемый в статье процесс подходит только для дисковых накопителей информации (HDD дисков). Фотография в свободном доступе.

Что такое дефрагментация и зачем она нужна?

Прежде, чем я буду рассказывать о том, как запустить дефрагментацию в Linux, следует рассказать, что это вообще за процесс, и зачем он нужен. Жёсткий диск вашего компьютера состоит из миллионов маленьких разделов, в каждом из которых хранится маленький кусочек данных. Распространённые файловые системы, используемые под Windows (FAT и NTFS) имеют свойство выделять ограниченный сектор под конкретные файлы, то есть, создав папку с данными на диске, вы занимаете конкретный адрес (сектор) на пластине жёсткого диска. Но наполняя папку файлами, вы помещаете их уже в другие сектора на накопителе (процесс для пользователя неочевидный, но изнутри это так и выглядит) — такова особенность файловой системы.

Фрагментированный (слева) и дефрагментированный (справа) жёсткие диски. Диаграммы показывают слитность информации, соответственно, быстрый к ней доступ. Изображение в свободном доступе.

Разбросанные по секторам файлы увеличивают время выполнения запроса (во время обращения к ним), следовательно замедляют работу системы.

Но ведь Linux зачастую устанавливается под другой файловой системой, скажете вы? И вы будете правы, в подавляющем большинстве случаев ОС Линукс устанавливается под ext4, которая не подвергает файлы фрагментации, выделяя на поверхности жёсткого диска больше места для записи данных — и пока сектор не заполнится, запись не переместится в другую ячейку памяти. Таким образом, фрагментация (а именно дробление данных и увеличение времени доступа к файлу) происходит намного реже. Однако при переполнении файловой системы ext4, возможны некоторые глюки системы — от небольших лагов до серьёзных зависаний.

Читайте также:  Чтение файла linux команда

Дефрагментация HDD в Линукс не обязательна, но иногда без неё никак. Изображение в свободном доступе.

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

Напоминаю, для SSD-дисков процесс дефрагментации не то что не нужен, но даже вреден!

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

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

Причём под /dev/sdb1 следует указать именно тот диск, который вы хотите проверить. Посмотреть программный адрес диска можно в файловом менеджере, запросив свойства носителя.

Фрагментация по результатам выполнения данной команды указывается в скобках и зачастую демонстрирует мизерные значения (не более 1%). Но в некоторых случаях процент фрагментированных данных составляет 10 и более процентов — в этих случаях переназначить сектора сам Торвальд велел, ибо не распыли данных по диску своему, да будет тебе счастье. Но для дефрагментации ЖД необходимо установить утилиту e4defrag, входящую в пакет e2fsprogs. Если у вас данный пакет не установлен в системе, то установите его прямо в терминале при помощи команды

sudo apt install e2fsprogs

А после установки этой утилиты, вы можете провести дефрагментацию нужного раздела, к примеру, тот же самый dev/sdb1. Однако перед этим его нужно примонтировать к операционной системе при помощи команды

sudo mount /dev/sdb1 /mnt

И лишь потом переходить непосредственно к процессу дефрагментации данных в файловой системе ext4, которая выполняется при помощи команды sudo e4defrag /dev/sdb1

Процесс относительно недолгий, но его длительность напрямую связана с заполнением файловой системы. То есть, чем больше мелких разрозненных файлов, тем дольше продлится процесс. По завершении процесса, необходимо ещё раз проверить состояние фрагментации файлов — если значение равно нулю, то всё прекрасно. Если же нет — видимо, вы ошиблись в каком-то моменте, и процесс лучше провести заново.

Заключение

Проведение фрагментации в файловой системе ext4 не обязательно, но может сэкономить пользователю пару секунд времени — для многих это критичный показатель. Однако следует помнить, что это даст эффект только в случае заполненности файловой системы, в остальных случаях это равносильно рисованию на воде!

Проводите ли вы дефрагментацию ваших жёстких дисков?

С вами был IT-джедай, а для развития канала – не поленитесь нажать на кнопку «Нравится» и подпишитесь на канал.

Источник

Оцените статью
Adblock
detector