LINUX.ORG.RU
решено ФорумAdmin

BTRFS на SSD для LXC

 , , ,


1

2

Приветствую! Есть несколько одинаковых серверов с LXD, хранилища на SSD в BTRFS. Все сервера выполняют разные задачи но нагруженость ФС приблизительно одинакова.

Один из серверов очеь быстро исчерпывает SSD диск. Два раза в неделю балансировку с тримом делать начал, остальные сервера раз в месяц регламентно выполняют и никаких проблем.

btrfs fi df

Data, single: total=223.46GiB, used=119.09GiB
System, single: total=32.00MiB, used=48.00KiB
Metadata, single: total=5.00GiB, used=2.92GiB
GlobalReserve, single: total=512.00MiB, used=0.00B

btrfs fi show

Label: 'datastore'  uuid: e5570b60-0000-0000-0000-ffffffffffff
	Total devices 1 FS bytes used 122.00GiB
	devid    1 size 238.47GiB used 228.49GiB path /dev/sdc

Делаю трим для ssd и балансировку

fstrim -v "$mountpoint"

if /bin/btrfs fi balance start -dusage=55 "$mountpoint"; then
    echo 'BTRFS balancing compleate'
else
    echo 'Running rescue balancing'

    mount -oremount,clear_cache "$mountpoint"

    for size in 0 1 2 3 4 5 10 20 30 40 50 60 70 80 90; do
        time /bin/btrfs balance start -v -musage=$size -dusage=$size "$mountpoint" 2>&1 
    done

    echo 'Rescue BTRFS balancing finished'
fi

Получаю:

/var/lib/lxd/storage-pools/datastore: 11,1 GiB (11877240832 bytes) trimmed
Done, had to relocate 99 out of 230 chunks

btrfs fi df

Data, single: total=133.46GiB, used=119.08GiB
System, single: total=32.00MiB, used=48.00KiB
Metadata, single: total=5.00GiB, used=2.89GiB
GlobalReserve, single: total=512.00MiB, used=0.00B

btrfs fi show

Label: 'datastore'  uuid: e5570b60-0000-0000-0000-ffffffffffff
	Total devices 1 FS bytes used 121.97GiB
	devid    1 size 238.47GiB used 138.49GiB path /dev/sdc

Подскажите знакомые с BTRFS, куда копать и чем смотреть?

Есть подозрение на реплику MySQL в одном из контейнеров, бинлоги летают часто - может быть он виновник, но шевелить без четкого вердикта не осмелюсь.

btrfs

MySQL

Отключи copy-on-write на файлах БД, если ты этого ещё не сделал:

mkdir /var/lib/mysql.new
chattr +C /var/lib/mysql.new
cp -aT /var/lib/mysql{,.new}
rm -r /var/lib/mysql
mv /var/lib/mysql{.new,}
intelfx ★★★★★
()

Btrfs, как и вообще файловые системы с copy-on-write, очень плохо дружит с базами данных, особенно с теми, куда идёт частая запись мелкими порциями.

Для баз данных желательно монтировать subvol с опцией nodatacow.

Deleted
()
Ответ на: комментарий от Deleted

Для баз данных желательно монтировать subvol с опцией nodatacow.

Ну или так, да.

Не «ну или так», а только так. btrfs(5):

Note
most mount options apply to the whole filesystem and only options in the first mounted subvolume will take effect. This is due to lack of implementation and may change in the future. This means that (for example) you can’t set per-subvolume nodatacow, nodatasum, or compress using mount options.

(выделение моё)

intelfx ★★★★★
()
Ответ на: комментарий от intelfx

Вон оно что. А я как-то раз понять не мог, почему сжатие для отдельного тома не отключается.

Deleted
()
Ответ на: комментарий от Deleted

Сжатием вообще нет смысла управлять как-либо кроме btrfs prop set. Я до сих пор не понимаю, почему +C и прочие атрибуты ещё не продублированы в properties.

intelfx ★★★★★
()

BTRFS
Два раза в неделю балансировку с тримом делать начал

Это ж как надо любить употреблять в пищу кактусы...

anonymous
()
Ответ на: комментарий от intelfx

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

Контейнер то мигрировал из ESXi и не дорабатывался.

WoozyMasta
() автор топика
Ответ на: комментарий от WoozyMasta

Имей в виду, что chattr +C работает только на новых и пустых файлах (от каталогов наследуется), т. е. просто рекурсивно выставить на /var/lib/mysql или где у тебя там лежит база — не получится. Нужно именно так, как я написал — создать новый каталог, выставить на нём chattr +C и скопировать базу туда.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Спасибо, помогло. Крепкого здоровья и светлого ума тебе, добрый человек!

WoozyMasta
() автор топика
30 января 2019 г.
Ответ на: комментарий от greenman

Прикольно, спасибо. Жаль, что это не вынесено в атрибуты.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.