Я только что установил Ubuntu 11.10 в файловую систему Btrfs и хочу задать вопрос о дефрагментации файлов.
Мне действительно нужно дефрагментировать файлы или всю систему?
Дефрагментация # btrfs файловая система дефрагментация / пул1 Дефрагментация
Я только что установил Ubuntu 11.10 в файловую систему Btrfs и хочу задать вопрос о дефрагментации файлов.
Мне действительно нужно дефрагментировать файлы или всю систему?
Дефрагментация # btrfs файловая система дефрагментация / пул1 Дефрагментация
Ответы:
Вам не нужно дефрагментировать файловые системы 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
filefragпоказывает, что файлы журнала действительно сильно фрагментированы (в среднем по 10 тыс. Экстентов каждый), но я не наблюдал ни скачков ЦП, ни влияние на производительность. У меня нет autodefragна, включу его и доложу при следующей перезагрузке.
autodefragпомогает, влияние производительности на второстепенные системы в лучшем случае незначительно. Очевидно, что серверам с высокой нагрузкой может потребоваться измерить и настроить все, но опять же это альфа-программное обеспечение, так что вы все равно можете его избежать.
find /path -type f -exec filefrag {} + >frag.listизбегает всех FIBMAP unsupportedошибок из каталогов и других нестандартных файлов и не разбивается на странные имена файлов.
Ради этой темы я думаю, что лучше уточнить, что:
Любая файловая система! = Утилиты восстановления / управления
Имейте в виду, что файловая система - это то, как данные организованы на физическом оборудовании, все остальные действия выполняются с помощью дополнительного программного обеспечения и утилит, которые, особенно в GNU / Linux, выполняются людьми, которые, вероятно, не связаны строго с тем, кто сделал файловая система.
Вероятно, это не относится к Btrfs, но иногда мы приближаемся к этому, потому что настольные и корпоративные среды могут предоставлять разные решения с разной степенью надежности.
Ответ на ваш вопрос - «нет», но это «нет», относящееся к нормальному поведению общей файловой системы, и каждая утилита, которую вы можете найти по этому поводу, - просто отдельный проект.
Когда вам нужно выполнить дефрагментацию вашей файловой системы, имейте в виду, что вы собираетесь использовать внешнее программное обеспечение, которое на самом деле не связано с жизнью самой файловой системы, со всеми плюсами и минусами.
Команда для дефрагментации файловой системы 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>