Debian Wheezy — Проблемы с btrFS

Никогда бы в такое не поверил если бы ктото рассказал. Но случилось со мной, поэтому верьте-неверьте расскажу как было дело.
Стал мой рабочий комп дико тормозить. Нет, не сразу! Постепенно … давно заметил за ним такую тенденцию. Скажу сразу — ПК у меня не супер-пупер, но и не чахлик. «Под капотом» всетаки Intel Core i3 + 8GB RAM, HDD 320GB 16MB Cache — для работы хватает с головой! OS Debian Wheezy установлена уже больше года назад, поначалу шуршала как самолет, но вот постепенно стал замечать за этим компом какуюто тормознутость, неспешность чтоли? Сказать что наворотил я за год использования на нее какихто мега-сервисов? Та нет! Ничего особенного, только то что нужно для работы: LibreOffice, google-chrome, pidgin да и konsole несколько окон. Иногда слушаю музычку в наушничках через VLC. И это все умудрялось тормозить … и притом тупизна доходила до того что утром приходилось шевелить мышкой (на ночь я комп не вырубаю) и идти готовить кофе, так как PC роздуплится только через пару минут — не раньше, притом после такого «пробуждения» он более-менее сносно работал, хотя чувства что сидиш за i3 + 8GB RAM не было уже давно 🙂 Итак, по мере возможностей и времени пробовал разобраться ….

Первое что пришло в голову — чтото не то с винтом! Думал может «долгочитаемые блоки» или «бэды» появились. Но dmesg этого не подтвердил, я уже имел дело с битыми винтами и знаю что в таком случае dmesg пестрит I/O Error-ами.
Второе — посмотреть top. Тут уже чтото стало проясняться. В частности выяснил что львиную долю ресурсов мой комп тратил на некие процессы:
flush-btrfs-1
btrfs-worker-4
btrfs-endio-wri

Притом они грузили как память так и cpu. Ну я уже догадался что идея ставить систему на BtrFS была не самая удачная … но всетаки пробуем разобраться ПОЧЕМУ ТАК? Ведь с самого начала такого не было, система была очень отзывчивая и шустрая. Погуглив немного, нашлись братья по нещастью 🙂 Ну отлично! Значит и рецепт найдется! И нашелся, оказывается причиной всему было 3 проблемы:
1. Нужно оставлять побольше свободного места (10 … 20%), очень не любит btrFS заполнения «под завязку»
2. Дефрагментация! Я уж и забыл это слово, времена Windows для меня давно прошли, и за 10 лет работы с Linux/BSD я восновном пользовался EXT3 и ReiserFS где слово «дефрагментация» вызывало лишь смешки да хахоньки и упоминалось лишь любителями «затюнить» сервак в попытках получить 0.1% увеличение производительности 🙂
3. Пробуеш чтото новое — удостой вниманием документацию! Хоть немного пробежать глазами стоит, как оказалось на официальном сайте проекта btrfs все написано и даже есть готовые решения!

Начал с чистки диска, кстати сказать, мусора было навалом — успевай удалять 🙂 На рабочем компе так всегда — реально нужные доки/скрипты/бэкапы занимают 1% места, останое ХЛАМ 🙂 В основном личного характера … Дочистил до 30% свободного места. Дальше дефрагментация, у меня этот процесс занял часы! Поэтому чтобы не повторять эту процедуру в будущем, написал коротенький скриптец и скормил его cron-у для автозапуска по ночам каждый день:

#!/bin/bash
find / -xdev -size -1024k -type f -exec btrfs filesystem defragment -v -f -czlib '{}' \;
find / -xdev -size +1024k -type f -exec btrfs filesystem defragment -v '{}' \;

Если кто хочет более интересного решения по дефрагментации btrfs, есть скриптик на github, писал не я, но вроде написан толково 🙂

И еще один интересный нюанс, то для чего заточен btrfs я не использую совсем. Ни пулы, ни снэпшоты … вообще нифига 🙂 А учитывая показатели тестов производительности FS для Linux я вообще понял что затупил с выбором. Надо было систему на EXT4 ставить, она не имеет всяких ZFS-подобных плюшек (которые мне и нафик не нужны!) так еще и по производительности лучше. Эх …. все как обычно! Не знаешь броду — не ходи в воду!

Хай щастить!

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?