Я только что установил Ubuntu 11.10 в файловой системе Btrfs, и я хочу задать вопрос о дефрагментации файлов.
Я должен действительно дефрагментировать файлы или целую систему?
Дефрагментируйте # btrfs дефрагментация файловой системы/pool1 Дефрагментация
Вы не должны действительно дефрагментировать файловые системы Btrfs вручную.
Да, Btrfs является COW (копия на записи), которая подразумевала бы его файлы фрагментов намного больше, чем Расширение, но это обращено в нескольких аспектах дизайна, включая способность легко дефрагментировать файловую систему, в то время как это онлайн. Эта выборка обеспечивает больше детали (шахта акцента):
Автоматическая дефрагментация
COW (копия на записи), файловые системы имеют много преимуществ, но у них также есть некоторые недостатки, например, фрагментация. Btrfs размечает данные последовательно, когда файлы записаны в диск в первый раз, но дизайн COW подразумевает, что любая последующая модификация в файл не должна быть записана сверху старых данных, но помещена в свободном блоке, который вызовет фрагментацию (базы данных об/мин являются общим падежом этой проблемы). Кроме того, это переносит проблемы фрагментации, характерные для всех файловых систем.
Btrfs уже предлагает альтернативы для борьбы с этой проблемой: Во-первых, это поддерживает дефрагментацию онлайн с помощью команды
btrfs filesystem defragment
. Во-вторых, это имеет опцию монтирования,-o nodatacow
, это отключает COW для данных. Теперь btrfs добавляет третью опцию,-o autodefrag
смонтируйте опцию. Этот механизм обнаруживает маленькие случайные записи в файлы и ставит их в очередь для автоматического процесса дефрагментации, таким образом, файловая система будет дефрагментировать себя, в то время как это используется. Это еще не подходит для виртуализации или больших рабочих нагрузок базы данных, но работает хорошо на меньшие файлы, такие как об/мин, SQLite или bdb базы данных.
Так, пока Вы не планируете запустить программное обеспечение IO-intensive как база данных при значительной загрузке, необходимо быть всей пользой, пока Вы монтируете свои файловые системы с 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
Для пользу этой темы, я думаю, лучше разъяснить что:
Любая файловая система! = утилиты восстановления/управления
Следует иметь в виду, что файловая система о том, как данные организованы на физическом оборудовании, любое действие сделано с дополнительным программным обеспечением и утилитами, которые, особенно в GNU/linux, сделаны народами, которые, вероятно, строго не связаны с тем, кто сделал файловую систему.
Это - вероятно, не случай Btrfs, но иногда мы близко к этому, потому что настольные среды и корпоративная среда могут предоставить различные решения с различными классами realiability.
Ответ на Ваш вопрос является "нет", но является "нет", связанным с нормальным поведением универсальной файловой системы, и каждая утилита, которую можно найти об этом, является просто различным проектом.
Когда необходимо дефрагментироваться файловая система имеют в виду, что Вы собираетесь использовать внешнее программное обеспечение, которое действительно не связано с жизнью самой файловой системы со всеми за и против.
Команда для дефрагментации btrfs файловой системы
btrfs filesystem defragment sync -r -v -f [-czlib] / /home
На основе этого ответа я придумал:
sudo find / -xdev -type f -exec filefrag {} + | sed -En 's/(.+): (\w+) extent.*/\2 \1/p' | sort -nr
Это перечисляет наиболее фрагментированные файлы сначала с форматом:
<num-fragments> <pathname>