Вам не нужно дефрагментировать файловые системы 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