среда, 24 августа 2016 г.

Про дефрагментацию в Linux


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

Что касается ОС Windows, то там ведутся аналогичные споры, начало возникновения которых восходит к концу 90-х г.г. прошлого столетия. Однако и там всё не так однозначно. Не исключено, что Вам будет интересен материал по файловой системе NTFS и, в частности, по вопросу фрагментации NTFS.

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

В файловых системах Ext2, Ext3 и Ext4 новые файлы равномерно “раскидываются” по всему диску. При увеличении объёма файла используется всё доступное свободное пространство между файлами и фрагментации, в большинстве случаев, не происходит. А если она всё же и происходит, то файловая система в фоновом режиме старается переносить дефрагментированные файлы в другое место, где фрагменты могут быть объединены. Таким образом, отдельные и регулярные процедуры дефрагментации не требуются.

Кстати, с таким фоновым переносом фрагментов файлов связана одна интересная особенность файловых систем Ext. Если диск заполнен более чем на 95% (80% по другим данным), то фрагментация всё же возможна. Чтобы предупредить снижение скорости чтения и записи файлов в этом случае следует задуматься о покупке нового, более просторного диска. Если этот вариант не для вас, то существует одна хитрость, позволяющая избавиться от фрагментации даже в случае переполненного диска. Перепишите все файлы фрагментированного раздела в другой раздел, а потом скопируйте обратно. Файловая система сама более разумно разместит вновь записываемые файлы, что позволит избавиться от фрагментации.

Источник: proubuntu.com.ua

Думающий человек (хочется мне надеяться, что я иногда думаю) никогда не будет принимать на веру публикуемые заявления, если будет иметь возможность проверить их истинность и сформировать по данному вопросу своё собственное мнение. Для этого имеет смысл проверить степень фрагментации файловой системы. Единственный найденный мной инструмент – e4defrag – входит в пакет системных утилит для ext2, ext3, ext4 под наименованием e2fsprogs. По умолчанию, в Ubuntu и Linux Mint пакет e2fsprogs уже имеется.

Следует отметить, что e4defrag не имеет графического интерфейса и запускается через команды терминала, поэтому таких картинок как в Windows Вы не увидите.


Windows. Процесс дефрагментации в Windows встроенными средствами.


Windows. Процесс дефрагментации в Windows сторонними средствами.

У меня имеется 3 физических жёстких диска, оформленных как первичные разделы с файловой системой ext4.
Первый диск – sda1 и sda2 (система и home).
Второй диск – sdb1.
Третий диск – sdс1.

Оценим степень фрагментации каждого раздела командами:

sudo e4defrag -c /dev/sda1

sudo e4defrag -c /dev/sda2

sudo e4defrag -c /dev/sdb1

sudo e4defrag -c /dev/sdc1


Как видно на рисунке выше, раздел sda1 в дефрагментации не нуждается (does not need defragmentation).

К моему удивлению, по мнению системы в дефрагментации не нуждаются и разделы sda2, sdb1, sdc1. И это при том, что на этих разделах производилось много операций создания новых и удаления старых данных.




На приведенных выше рисунках указано, что Fragmentation score = 0. В пояснениях ниже говорится, что при значениях этого параметра от 0 до 30-ти дефрагментация не требуется.

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

sudo e4defrag -v /dev/sda1

sudo e4defrag -v /dev/sda2

sudo e4defrag -v /dev/sdb1

sudo e4defrag -v /dev/sdc1



Системный раздел был обработан быстро. Остаточная фрагментация = 0 %

Раздел sda2 также, можно сказать, был обработан достаточно быстро, несмотря на его размер в 979 Гб. Большое количество мелких фрагментов было найдено в папках .mozilla, .local, .config, и синхронизируемых с облачными хранилищами папками pCloud Sync (клиент pCloud) и Dropbox (клиент Dropbox), а также загруженном из сети видео размера 1,4 Гб и более.

В конечном итоге удалось добиться неплохого результата, снизив фрагментацию с 5-ти % до нулевого значения. При этом раздел был занят данными на 97%.


А вот на разделе sdb1 e4defrag обрабатывал данные очень долго. Смотрим, чем же он там занимается.




Всё понятно. Сразу вспомнилось: "Фильм, фильм, фильм!". Назначение раздела  – мультимедийный контент. Попробуйте "повращать" данные раздела в 2 Тб, содержащий практически только фильмы.


Может возникнуть вопрос: а почему показывается /home/manager/AG-2, если дефрагментируется другой раздел (sdb1), расположенный на другом физическом диске? Ответ: данный раздел (метка G-2) монтируется при старте системы с точкой монтирования AG-2 домашнего каталога пользователя manager (подробности). И если открыть файловый менеджер, то всё станет ясно:




Вернёмся, всё-таки, "к нашим баранам". Дефрагментация продолжалась более 6-ти часов и была завершена с результатом: с 11-ти процентов до 5-ти.


Возьмём ad notam (на заметку).Теперь посмотрим на аналогичный раздел sdc1.

На первый взгляд, положение дел здесь похуже, так как заполненность раздела данными составляет 99 %. И действительно, через некоторое время система вывела "грозное" предупреждение:


Попробуем на свой страх и риск проигнорировать и продолжить. Как-то, возможно немного медленнее, но процесс продолжается.


Через некоторое время вновь возникло предупреждение от системы, хотя уже и не такое "страшное", как раньше.


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

Время, затраченное на дефрагментацию раздела, составило 3,5 часа. Результат:


Т.е., несмотря на более "плотную" загрузку раздела данными, дефрагментация завершилась с лучшим результатом, чем на аналогичном разделе sdb1. При этом раздел sdb1 был занят данными на 85%, а sdc1 на 99%.

Дефрагментация разделов sdb1 и sdc1 производилась впервые. По данным SMART, общее время непрерывной работы дисков (отформатированы по принципу 1 диск – 1 раздел) составило:

2 года, 6 месяцев и 18 дней – sdb1
1 год, 9 месяцев и 9 дней – sdc1

Итак, выводы:

Фрагментация в Linux имеет место.

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

Длительность дефрагментации зависит от степени заполненности конкретного раздела и объёма, занимаемого каждым файлом. Длительность дефрагментации может быть большой, если практически все файлы на разделе являются мультимедийными файлами больших размеров (avi, mp4, flac, ts и т.п.).

Чтобы не допускать высокой фрагментации раздела необходимо следить за тем, чтобы его заполненность данными не превышала 90% (рекомендовано из других источников).

Примечание. В ОС Windows также существует негласная рекомендация не заполнять диск более, чем на 88 %. Это обусловлено тем, что до 12 % диска отводится на нужды зоны MFT. Кстати говоря, встроенный в Windows дефрагментатор, к слову удивительно напоминающий freeware версию утилиты Diskeeper 4, не гарантирует качественной дефрагментации, если на диске имеется менее 15% свободного пространства.

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

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


8 комментариев:

  1. Хорошая, полезная статья. Спасибо.

    ОтветитьУдалить
  2. Все верно. Только не забудьте добавить, что вышесказанное относится конкретно к ext4. Она быстрая и надежная, но с большими файлами работает похуже чем, например, btrfs.

    ОтветитьУдалить
    Ответы
    1. Уж лучше ext4 чем суперская btrfs в которой можно настроить и авто фрагментацию и сжатие. Всеми способами пытался перетащить suse leap 15.2 btrfs на новый жесткий диск, так и не вышло. Не из-за криворукости могу подметить. А вот с btrfs на ext4 перенёс систему на раз два. Кстати в btrfs есть косяк когда диск начинает сыпаться и повреждённая файловая система ничё вам не отдаст.

      Удалить
  3. В Ubuntu 21.04 e4defrag по умолчанию нет.

    ОтветитьУдалить