Справочная информация
про свой опыт решения некоторых проблем и использования ряда возможностей ОС и приложений
среда, 24 августа 2016 г.
Про дефрагментацию в Linux
Вопрос о дефрагментации в Linux остаётся актуальным до сих пор. Сторонники дефрагментации приводят доводы, подтверждающие неизбежность этой процедуры, противники возражают, указывая на отсутствие в этом необходимости, так как используемая Linux файловая система практически не подвержена фрагментации.
Что касается ОС Windows, то там ведутся аналогичные споры, начало возникновения которых восходит к концу 90-х г.г. прошлого столетия. Однако и там всё не так однозначно. Не исключено, что Вам будет интересен материал по файловой системе NTFS и, в частности, по вопросу фрагментации NTFS.
После ознакомления со статьями из различных источников, которые были мне предложены Яндексом (его ещё по-другому называют Яша), наиболее взвешенной мне показалась следующая точка зрения.
В файловых системах Ext2, Ext3 и Ext4 новые файлы равномерно “раскидываются” по всему диску. При увеличении объёма файла используется всё доступное свободное пространство между файлами и фрагментации, в большинстве случаев, не происходит. А если она всё же и происходит, то файловая система в фоновом режиме старается переносить дефрагментированные файлы в другое место, где фрагменты могут быть объединены. Таким образом, отдельные и регулярные процедуры дефрагментации не требуются.
Кстати, с таким фоновым переносом фрагментов файлов связана одна интересная особенность файловых систем Ext. Если диск заполнен более чем на 95% (80% по другим данным), то фрагментация всё же возможна. Чтобы предупредить снижение скорости чтения и записи файлов в этом случае следует задуматься о покупке нового, более просторного диска. Если этот вариант не для вас, то существует одна хитрость, позволяющая избавиться от фрагментации даже в случае переполненного диска. Перепишите все файлы фрагментированного раздела в другой раздел, а потом скопируйте обратно. Файловая система сама более разумно разместит вновь записываемые файлы, что позволит избавиться от фрагментации.
Думающий человек (хочется мне надеяться, что я иногда думаю) никогда не будет принимать на веру публикуемые заявления, если будет иметь возможность проверить их истинность и сформировать по данному вопросу своё собственное мнение. Для этого имеет смысл проверить степень фрагментации файловой системы. Единственный найденный мной инструмент – e4defrag – входит в пакет системных утилит для ext2, ext3, ext4 под наименованием e2fsprogs. По умолчанию, в Ubuntu и Linux Mint пакет e2fsprogs уже имеется.
Следует отметить, что e4defrag не имеет графического интерфейса и запускается через команды терминала, поэтому таких картинок как в 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 вообще и о предпринятых в ней мерах против фрагментации в частности.
Источник
Дефрагментация в Linux
При использовании носителей информации неизбежно возникает фрагментация данных — разбиение файлов на блоки, которые записываются в разных областях носителя. Поговорим о том, как исправить излишнюю фрагментацию данных в Linux.
Первым делом нужно сказать, что процедуру дефрагментации рекомендуется проводить только для жёстких дисков. Flash-накопители и SSD используют метод прямого доступа к памяти. Это значит, что время обращения к любой ячейке сравнительно мало, а её местонахождение становится не таким уж важным. Более того, поскольку количество циклов перезаписи у таких накопителей всё ещё меньше, чем у жёстких дисков, дефрагментация может наносить урон по продолжительности «жизни» накопителя. А вот позиционирующим головкам внутри жёстких дисков после дефрагментации приходится меньше перемещаться, что позитивно сказывается на времени обращения к файлам.
В Linux-сообществе нет единодушной позиции относительно того, полезна или бесполезна процедура дефрагментации в Linux. Дело в том, что файловые системы ext2, ext3 и ext4 стараются равномерно «раскидывать» новые файлы по диску. Если файл увеличивается в объёме, файловая система использует всё свободное пространство вокруг него. Если фрагментация всё же происходит, то файловая система старается в фоновом режиме переносить файлы в те места, где их фрагменты могут быть объединены. Успех? Не совсем.
Вышеописанные процедуры хорошо работают с дисками, у которых сравнительно много незанятого пространства. Но когда количество свободного пространства уменьшается, фрагментация становится возможной.
Для проведения дефрагментации в Linux можно использовать утилиты e2defrag и e4defrag (для ext2 и ext4 соответственно). Утилита e2defrag может работать и с ext3, но только при условии временного преобразования файловой системы в ext2. Есть и другой способ — утилита Shake, которая может работать с разными файловыми системами.
Допустим, что нам нужно оценить, нуждается ли в дефрагментации раздел /dev/sda2. Это делается командой
Время выполнения команды зависит от того объёма информации, что предстоит проанализировать утилите. По окончании анализа вы увидите отчёт.
Если вы видите надпись «This device does not need defragmentation», то дефрагментация диску (разделу) не требуется.
Нужна ли дефрагментация можно также определить по значению Fragmentation score. Если оно лежит в диапазон от 0 до 30, то дефрагментация не требуется. Если значение представляет собой число от 31 до 55, то есть небольшие проблемы с фрагментацией файлов. При Fragmentation score от 56 и выше нужно провести процедуру дефрагментации.
Если вы хотите провести принудительную процедуру дефрагментации, воспользуйтесь командой
Естественно, если нужно произвести дефрагментацию другого раздела, то вместо /dev/sda2 следует указать нужное имя.
По итогам работы команды следует обратить внимание на показатель Fragmented percentage. Он показывает сколько было фрагментированных файлов и сколько стало. В нашем случае всё было хорошо и до дефрагментации, поэтому эта процедура толком ничего не изменила. Но бывают ситуации и похуже.
Теперь посмотрим на утилиту Shake. Это тоже весьма полезный дефрагментатор, который работает на основе эвристики и не требует внесения изменений в ядро или остановки работы системы. Суть работы утилиты Shake в том, что она просто перемещает файлы.
В целом, пользоваться утилитой очень просто — достаточно указать файл или каталог, который необходимо переместить.
Командой выше мы переместили файлы в каталоге /home/test.
Если необходимо только посмотреть, насколько сильно фрагментирован файл или каталог, нужно использовать опции —pretend —verbose —verbose или -pvv
Можно использовать и более сложные конструкции. Команда ниже проведёт дефрагментацию всех mp3-файлов в каталоге и рассортирует их.
Для более эффективной работы утилиты её автор рекомендует включать расширенные пользовательские атрибуты (user_xattr).
Shake нечасто встретишь в репозиториях. У программы есть страница на GitHub, а также PPA-репозиторий на Launchpad, но он не обновлялся уже пять лет. Так что, скорее всего, программу вам придётся устанавливать вручную. Более подробно о синтаксисе Shake вам подскажет справка, которую можно вызвать командой
Итак, фрагментация файлов в Linux имеет место быть. Она не является острой проблемой благодаря достоинствам файловых систем ext2, ext3 и ext4. Однако, если жёсткий диск или раздел забит файлами, рекомендуется периодически проводить проверку на наличие фрагментации. В этой статье, безусловно, описаны не все утилиты, что умеют проводить дефрагментацию в Linux. Здесь тот обязательный минимум, который пригодится любому пользователю Linux.
Источник