Btrfs Дефрагментация файлов / папок

9

Я только что установил Ubuntu 11.10 в файловую систему Btrfs и хочу задать вопрос о дефрагментации файлов.

Мне действительно нужно дефрагментировать файлы или всю систему?

Дефрагментация # btrfs файловая система дефрагментация / пул1 Дефрагментация

Btrfs дефрагментация

Один ноль
источник
Нет, btrs, ext4,3,2, ETC ... не требуют от вас дефрагментации дисков, они страдают от этого, как и любая другая файловая система.
Ури Эррера
Но нигде не так же, как NTFS.
Ури Эррера

Ответы:

13

Вам не нужно дефрагментировать файловые системы Btrfs вручную.

Да, Btrfs - это COW (копирование при записи), что подразумевает, что он фрагментирует файлы гораздо больше, чем Ext, но это решается в нескольких аспектах проекта, включая возможность легкой дефрагментации файловой системы, когда она находится в сети. Этот отрывок дает более подробную информацию (выделено мной):

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

У файловых систем COW (копирование при записи) есть много преимуществ, но у них также есть некоторые недостатки, например, фрагментация. Btrfs выкладывает данные последовательно, когда файлы записываются на диск впервые, но конструкция COW подразумевает, что любая последующая модификация файла не должна записываться поверх старых данных, а помещаться в свободный блок, который будет вызвать фрагментацию (базы данных RPM являются частым случаем этой проблемы). Кроме того, он страдает от проблем фрагментации, общих для всех файловых систем.

Btrfs уже предлагает альтернативы для решения этой проблемы: во-первых, он поддерживает онлайн-дефрагментацию с помощью команды btrfs filesystem defragment. Во-вторых, у него есть опция монтирования -o nodatacow, которая отключает COW для данных. Теперь btrfs добавляет третий параметр - параметр -o autodefragмонтирования. Этот механизм обнаруживает небольшие случайные записи в файлы и ставит их в очередь для автоматического процесса дефрагментации, поэтому файловая система будет дефрагментировать себя во время использования. Он пока не подходит для виртуализации или больших рабочих нагрузок базы данных, но хорошо работает для небольших файлов, таких как базы данных rpm, SQLite или bdb.

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

Чтобы проверить фрагментацию файлов, вы можете использовать утилиту filefrag :

$ find /path -type f -exec filefrag {} + >frag.list
# Now you can use your favourite tools to sort the data

В системах Systemd, /var/log/journal/вероятно, будет наиболее фрагментированным. Вы также можете посмотреть ~/.mozillaи другие базы данных браузеров.

Для дефрагментации используйте:

$ sudo btrfs fi defrag -r /path
Феликс Сапарелли
источник
откуда мне знать его дефрагментацию .... или нет ... команды для проверки статуса дефрагментации
One Zero
3
Этот ответ является неправильным в соответствии с Btrfs вики: Btrfs подводных камней . Проблему фрагментации файлов легко можно воспроизвести, запустив systemd-journald на томе btrfs. Хотя я еще не тестировал inhowfar, опция autodefrag решает эту проблему.
Йонас Шефер
Я использую btrfs полный рабочий день в течение по крайней мере 18 месяцев с systemd, firefox и т. Д. Быстрая проверка filefragпоказывает, что файлы журнала действительно сильно фрагментированы (в среднем по 10 тыс. Экстентов каждый), но я не наблюдал ни скачков ЦП, ни влияние на производительность. У меня нет autodefragна, включу его и доложу при следующей перезагрузке.
Феликс Сапарелли
Итак: фрагментация файлов действительно имеет место, autodefragпомогает, влияние производительности на второстепенные системы в лучшем случае незначительно. Очевидно, что серверам с высокой нагрузкой может потребоваться измерить и настроить все, но опять же это альфа-программное обеспечение, так что вы все равно можете его избежать.
Феликс Сапарелли
find /path -type f -exec filefrag {} + >frag.listизбегает всех FIBMAP unsupportedошибок из каталогов и других нестандартных файлов и не разбивается на странные имена файлов.
Питер Кордес
0

Ради этой темы я думаю, что лучше уточнить, что:

Любая файловая система! = Утилиты восстановления / управления

Имейте в виду, что файловая система - это то, как данные организованы на физическом оборудовании, все остальные действия выполняются с помощью дополнительного программного обеспечения и утилит, которые, особенно в GNU / Linux, выполняются людьми, которые, вероятно, не связаны строго с тем, кто сделал файловая система.

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

Ответ на ваш вопрос - «нет», но это «нет», относящееся к нормальному поведению общей файловой системы, и каждая утилита, которую вы можете найти по этому поводу, - просто отдельный проект.

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

Микро
источник
0

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

btrfs filesystem defragment sync -r -v -f [-czlib] / /home
user615852
источник
0

На основании этого ответа я придумал:

sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr

Сначала перечисляются самые фрагментированные файлы в формате:

<num-fragments> <pathname>
Том Хейл
источник