Как дефрагментировать файловую систему ext4


66

Я не хочу никакого ответа о том, что в этом нет необходимости, пожалуйста!

Ответы:


67

Используйте e4defrag для дефрагментации ваших файлов

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

Просто проверьте уровень фрагментации следующим образом (чтобы увидеть подробности, вам нужно быть пользователем root):

sudo e4defrag -c /path/to/myfiles

Вот пример вывода, который вы можете получить:

$ sudo e4defrag -c iso/
<Fragmented files>                             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.

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

e4defrag /path/to/myfiles

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

e4defragнаходится в e2fsprogsпакете, и я думаю, он уже установлен в вашей системе Ubuntu.


2
e4defrag -c не возвращает ничего, кроме done. Означает ли это, что фрагментации нет?
хржу

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

@gerlos Что если я попытаюсь дефрагментировать корневую файловую систему /?
Павел Саекат

2
@PavelSayekat, вам просто нужно быть пользователем root (т.е. использовать sudo) e4defrag /, и не нужно делать ничего особенного. e4defragпроверим каждый файл там, так что будьте готовы подождать, пока ваш диск прочитает все. Помните, что это может быть большой тратой времени. В большинстве случаев, если у вас достаточно свободного места в файловой системе, у вас будет только несколько фрагментированных файлов, и часто они будут находиться в вашей домашней директории, связанной с вашей деятельностью в веб-браузере. Например, на моем настольном компьютере, который я использую каждый день, e4defragсообщается, что есть только 5 фрагментированных файлов, все в конфигурации Chromium и директории кэша.
Герлос

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

29

Взгляните на e2fsprogs . Это также доступно в пакетах Ubuntu. Это обеспечивает программа e4defrag.


5
Это действительно полезно только в файловых системах ext4, которые были созданы с параметром -O, который не используется по умолчанию.
Добей

Парень отвечает о дефрагментации, это может быть возможно с e4defrag, вопрос не в специфике внешнего журналирования или нет, он не заслуживает -1.
Фелипе Алькасибар

8
@dobey Ubuntu 12.04 (+0,3) LTS содержит extentв ext4строфе [fs_types]секции в /etc/mke2fs.conf- таким образом, это « по умолчанию». Хотя, независимо от конфигурации компьютера, к которому подключена файловая система, во время создания, лучше всего проверить саму файловую систему: tune2fs -l </dev/with/ext4> | grep extent(или посмотрите на строку «Функции файловой системы» в полном выводе tune2fs). Имейте в виду, я только что запустил e4defrag -c ...на 100% заполненную файловую систему объемом 1 ТБ extent, и есть только 5 фрагментированных файлов и «оценка фрагментации» 0. YMMV.
Ричард Майкл

@RichardMichael FYI: e2defrag -c /pathпечатает только первые 5 найденных фрагментированных файлов (даже самых фрагментированных). Запустите, e2defrag -v /pathчтобы увидеть, как это уменьшает количество экстентов.
Тино

17

Используйте Gparted для дефрагментации вашей файловой системы

Если на жестком диске достаточно места, вы можете использовать Gparted для дефрагментации вашей файловой системы ( ext2, ext 4, nfts и т . Д. ). Вы должны загрузиться с загрузочного диска CD / DVD / USB, потому что привод, на котором вы работаете, должен быть размонтирован. Для этого также необходимо иметь больше неиспользуемого пространства, чем используемого, и это может занять некоторое время.

  • Загрузиться с загрузочного диска.
  • Запустите gparted и уменьшите раздел, содержащий данные, которые вы хотите дефрагментировать, до объема ваших данных.
  • Убедитесь, что раздел, который вы хотите дефрагментировать, является последним разделом на диске, переместив его в конец (возможно, вам придется создать еще один пустой раздел перед ним, если на диске только один раздел).

С разделом, который вы хотите дефрагментировать как последний раздел на диске:

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

Это теперь дефрагментировано.

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


После сжатия и движения вправо, почему вы растете влево, а затем снова сжимаетесь вместо того, чтобы просто двигаться влево?
Джейсон С

Также я заметил, что после шага увеличения влево, сами данные фактически снова были перемещены влево (о чем свидетельствуют gparted движущиеся данные, проверенные впоследствии прямым исследованием блочного устройства), поэтому, если только это не зависит от версии / файловой системы, окончательное поведение shrink + regrow можно пропустить. Это кажется , что достаточно только сделать: 1) сжиматься и двигаться вправо, 2) применяются, 3) растут слева.
Джейсон C

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

Перемещение вправо делает переместить его в конце жесткого диска. Панель разделов в верхней части gparted GUI на самом деле является точным представлением макета данных (ну, по крайней мере, так, как это видно в ОС, флэш-устройства, например, сопоставляют логические и физические местоположения на другой стороне контроллера, но для типичный HDD, это точно). Это можно проверить, наблюдая за новым начальным местоположением в таблице разделов. :)
Джейсон C

Ах, мы неправильно общаемся. Вы имели в виду переупорядочить раздел, чтобы он был последним. Я имел в виду перенести раздел в конец диска, и это, как я думал, вы также имели в виду (вы можете перемещать разделы на диске с помощью gparted независимо от их переупорядочения). :)
Джейсон C

3

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

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

Используя команду apropos

e4defrag -vc /path #verbose output with count

2

Ubuntu 14.04 LTS помещается (по крайней мере, на основной диск) в раздел EXT4 при установке в чистой установке (не в верхней части Win-Junk).

В этом случае, если вы только что установили новую систему или отформатировали заново в старой системе, а затем выполнили чистую установку, то по умолчанию с 14.04 LTS у вас есть раздел EXT4 в /dev/sda1.

Теперь просто откройте терминал ( CTRL- ALT- T) и введите:

sudo e4defrag -c /dev/sda1

и будьте терпеливы, пока «проверка» не будет завершена, и вы получите отчет о фрагментации.

Если вы не уверены в наличии раздела EXT4 на диске вашей ОС, просто зайдите на ДОМОЙ и введите df -T. Посмотрите, на что настроены ваши разделы sda * (попробуйте это в 14.04LTS, и вы увидите EXT4, если вы не выбрали другой тип раздела при установке жесткого диска).


Получил немного не по теме и почти не добавил никакой ценности к вопросу, особенно с финальной напыщенной речью.
Фернандо Сильвейра

Вы можете выполнить дефрагментацию более чем одного раздела с помощью одной команды: sudo e4defrag / dev / sda1 / dev / sda2
ProgAndPlay

1

e2fsck -D /dev/sda1 оптимизирует каталоги, сортируя и переиндексируя их, что обычно ускоряет работу. Не может считаться полной дефрагментацией файловой системы, но не во всех системах есть e4defrag.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.