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

Дефрагментация файловой системы Ext4 с помощью утилиты e4defrag

Различные операционные системы используют разные файловые системы. Например, GNU/Linux поддерживает большое количество файловых систем, но наиболее часто используется Ext4 (которая в будущем возможно будет заменена на Btrfs). И когда речь идет о файловых системах, первое, что приходит в голову — это фрагментация, которая оказывает прямое воздействие на производительность файловой системы.

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

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

Некоторые источники утверждают, что файловым системам GNU/Linux, таким как Ext4, не требуется дефрагментация (в отличие от файловых систем для Windows), так как они спроектированы таким образом, что минимизируют фрагментацию данных.

Это, в некоторой степени, действительно так. Но есть эксперты, такие как Такаши Сато, экспериментально проверившие влияние фрагментации на производительность основных файловых систем GNU/Linux.
Он написал прекрасную статью под названием «ext4 online defragmentation» (последние ее версии можно найти здесь ), в которой можно найти следующие выводы:

«Было создано 50 фрагментированных файлов размером 1 Гб (в файловой системе ext4). Перед и после фрагментации замерялась скорость чтения данных. »
«. Замеры показали, что для одного файла размером 1 Гб дефрагментация может повысить производительность при чтении на 25%. После дефрагментации всех файлов скорость доступа к ним повысилась на 29%».
Такаши Сато и Акира Фуджита создали простую в использовании утилиту командной строки для дефрагментации файловой системы ext4. Она называется «e4defrag», и начиная с Ubuntu 12.04 LTS она предустанавливается в системе по умолчанию. Но необходимо помнить, что она работает только с файловой системой ext4″.

Использование e4defrag

Очень просто. Откройте терминал и введите следующую команду:

«location» может быть любым смонтированным устройством с файловой системой ext4 (включая корневую файловую систему), а также любой директорией или даже отдельным файлом внутри файловой системы ext4.

Получение отчета

Еще одна прекрасная функция e4defrag — возможность сканирования смонтированной файловой системы ext4 (директории или файла) с получением отчета, в котором указывается степень фрагментации. Основываясь на этом показателе, e4defrag выдаст вам рекомендации, требуется ли дефрагментация данной системы.

Замечание: если степень дефрагментации находится в диапазоне 0-30, дефрагментация не требуется. При степени фрагментации более 56% дефрагментация обязательна.

На скриншоте свежеустановленная операционная система, поэтому степень фрагментации равна нулю.

Сканирование запускается с помощью следующей команды:

Несколько примеров

Сканирование и дефрагментация своей домашней директории:

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

Замечание: в процессе дефрагментации выводятся сообщения, сообщающие о выполнении операций. Если вы там увидите сообщения с пометкой «Failure», не переживайте, это нормально, так как некоторые системные файлы невозможно переместить.

Не забывайте, что в GNU/Linux все ваши файлы смонтированы в корневой файловой системе («/»), поэтому если у вас смонтировано несколько файловых систем ext4, они также будут дефрагментированы, что, в зависимости от их размера и количества файлов, может занять достаточно продолжительное время.
Если у вас несколько разделов с файловой системой ext4, и вы хотите дефрагментировать их индивидуально, но не знаете имя устройства (/dev/sda. ), вы можете сделать это, воспользовавшись приведенными ниже инструкциями.

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

Читайте также:  Быстродействие linux или windows

2. Затем в выводе команды найдите поле «id». Разделы, у которых в этом поле стоит «83», имеют файловую систему ext4. Затем в этой же строке найдите столбец «Device», там вы увидите имя устройства. На приведенном ниже скриншоте у меня два таких устройства — «sda5» и «sda6».

3. Затем просто скопируйте имя устройства и вставьте его в приведенную ниже команду:

В зависимости от типа раздела (установлена или нет на нем операционная система), вам может понадобиться «sudo».

Если вас заинтересовала эта утилита и ее возможности, более подробную информацию можно получить, прочитав краткое руководство:

Источник

Дефрагментация в 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

Читайте также:  Создать загрузочную флешку manjaro windows

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

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

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

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

Источник

Дефрагментация Ubuntu.

e4defrag — дефрагментация ext4 в Linux.

Автор: admin.

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

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

Лично я к примеру, никогда не сталкивался с этой проблемой в Linux, общий процент фрагментации никогда не превышал предела в 0.4%. Возможно, что я не совершал чего-то такого, что может вызывать подобный эффект. Но если, подобные эффекты существуют, то вполне закономерно можно утверждать, что дефрагментация все-таки нужна, вопрос только в том, насколько часто?

Единственно-правильным решением в данной сложившиеся ситуации, я считаю, это необходимость иметь весь нужный инструмент, который позволяет сначала определить степень фрагментации, а затем уже ее дальнейшее устранение. Таким образом, каждый самостоятельно сможет определить для себя лично, насколько данная проблема имеет место быть и, если она все же возникает, то как часто с этим придется сталкиваться? У каждого это может быть по-разному, но если смотреть на все глобально, то как ни крути, а в конечном итоге можно сделать однозначный вывод, что фрагментация в Linux, как таковая, имеет место быть. Ну, а раз «оно» имеет свойство появляться, то нужно знать, как этому противостоять.

Выбирать программы для дефрагментации в Linux, практически не с чего, а говорить о графическом интерфейсе вообще не приходится. Наиболее известная утилита, это «e4defrag», которая в собственном исполнении пока еще не существует, но входит в пакет системных утилит для: ext2; ext3; ext4 под общим названием «e2fsprogs». По умолчанию, в Ubuntu 12.04 LTS этот пакет уже установлен, поэтому сразу к делу.

Шаг первый.

1) Сначала нужно определить на каком устройстве (разделе) находится наша корневая система, выполнив команду:

Получиться должно так или что-то наподобие, здесь главное определить корневое расположение « / ».

В конкретном примере, на снимке видно, что корневой раздел системы находится на /dev/sda6, у вас может быть по-другому, но это не важно, главное найти « / ».

Шаг второй.

2) Теперь определяем, в каком месте находится нужная нам утилита, выполнив команду:

Должны получить примерно следующий результат.

Читайте также:  Какую систему windows лучше установить

На снимке четко видно, что данная утилита находится в директории: /usr/sbin/.

Шаг третий.

3) Выясняем состояние нашей системы в плане фрагментации.

// Заходим в директорию, где находится дефрагментатор. Дело в том, что любые действия с дефрагментатором, мы можем выполнять только, если находимся в той деректории, где находится сам дефрагментатор, запомните это?!

// Определяем степень фрагментации, способ № 1, быстрый для системы в целом.

/dev/sda6 — это то, что мы определили на первом шагу. Получаем такой результат.

Здесь нас интересует предпоследняя строчка: «This device (/dev/sda6) does not need defragmentation», что означает примерно следующее: «Данное устройство (/dev/sda6) в дефрагментации не нуждается». Если у вас будет такая надпись, то можно смело нечего не делать, правда должен сказать, что, как выглядит надпись, когда дефрагментация будет нужна, я не знаю, потому, как ни разу не сталкивался с этой проблемой.

// Определение фрагментации, способ № 2, медленный, сканирует все файлы системы.

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

Последняя строчка: «Fragmented percentage» (процентная фрагментированность) — указывает на состояние нашей системы. Здесь на примерах понятно, что никакая дефрагментация не нужна, но мы будем считать, что она нужна и поэтому идем дальше. А вообще, дефрагментацию нужно проводить, когда фрагментированность достигает 5-7% и более.

Шаг четвертый.

4) Дефрагментируем систему.

// Находясь в директории с дефрагментатором: « /usr/sbin/ », запускаем процесс.

Теперь можно смело пойти покурить или зайти к соседке на пару «па». Когда все закончится, можно вновь проверить систему на наличие фрагментов, шаг № 3.

Несколько полезных советов:

1) Перед началом дефрагментации закройте все открытые приложения и по возможности позакрывайте апплеты, которые закрываются, отключите соединение в апплете «Ubuntu One».

2) Во время процесса дефрагментации, не работайте на компьютере.

3) Очень желательно, перед началом всего этого, сделать «бэкап» системы для ее восстановления в случае непредвиденных сбоев.

4) После окончания дефрагментации, перезагрузите систему, можно использовать команду: «sudo reboot».

5) Проверять систему вторично на фрагментированость по завершению дефрагментации, нужно после перезагрузки системы.

Проверялось на Ubuntu 12.04 LTS, Unity (32 bit).

Второй вариант дефрагментации (кликни на меня).

Напоследок, предлагаю еще один вариант дефрагментации, но использовать его нужно лишь в том случае, если пакет «e2fsprogs» в системе не установлен и установить его обычным способом нет возможности, по каким-либо неизвестным причинам. Проверить, установлен ли в системе пакет «e2fsprogs», можно через «Центр приложений Ubuntu», через команду «whereis e2fsprogs» проверять не стоит, т.к. она его не находит, если этот пакет установлен в системе по умолчанию. Кстати, если данный пакет установлен по умолчанию, то удалить его из системы невозможно. Правда можно воспользоваться командой «sudo aptitude purge e2fsprogs», если установлен «aptitude», но тогда перед удалением будут заданы вопросы, ответив на которые положительно, все удалится, но система при этом полностью слетит. Это так, к сведению, а теперь установка. Здесь я не буду повторяться и описывать шаги по проверке системы на фрагментированность, а сразу преступаю к установке нужных пакетов и самой дефрагментации, непосредственно.

// Переходим в папку с исходниками.

// Забираем последнюю версию «e2fsprogs».

sudo git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git

// Переходим в папку с программой.

// Запускаем дефрагментацию, перейдя в нужную папку.

Это все, как бы одним махом, если все делать по шагам, как здесь описано. Отдельно процесс дефрагментации запускается так:

cd /usr/src/e2fsprogs/misc/
sudo ./e4defrag /dev/sdaХХХ

Где «sdaХХХ» устройство (корневой раздел системы), который вы определяете на шаге № 1. Все.

Проверялось на Ubuntu 12.04 LTS, Unity (32 bit).

Источник

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