Дефрагментирование BTRFS со снапшотами

У меня был read only снапшот примерно 1.5 ТБ данных, на диске было свободно около 900 ГБ. Запeстил дефрагментацию (btrfs defrag). В итоге получил ошибку, что не осталось свободного места, а место реально закончилось. Это произошло потому, что снапшот был read only, то есть доступен только на чтение, при дефрагментации выполнялось копирование файлов в новое расположение, а из read only снапшота их удалить нельзя, поэтому место закончилось. Удалили снапшот, место освободилось.
Нагуглил по этому вопросу:
1) «Is it dangerous to defragment subvolume which has readonly snapshots?»
2) Обсуждение в рассылке «defragmenting best practice?»

Особенность чистки файлового хранилища на BTRFS

Решил почистить файловое хранилище на BTRFS. Чистка включает в себя:

  1. анализ, чем занято место на диске, через консольную утилиту ncdu, удаление ненужного
  2. удаление старых снапшотов (резервных копий)
  3. проведение btrfs balance /точка_монтирования

Выше написан правильный порядок действий. А я сначала удалил ненужные снапшоты, а потом начал пытаться запустить ncdu. В результате фоном работает процесс btrfs-cleaner, который создает большую нагрузку на ввод-вывод с небыстрого HDD диска, и все остальное работает очень медленно. Нужно было делать в той последовательности, которая описана выше, чтобы фоновые операции, создающие большую нагрузку на систему, выполнялись уже после завершения всех работ человеком.

Плюсы и минусы BTRFS

Напишу пришедшие в голову плюсы и минусы BTRFS после нескольких лет ее использования.

Плюсы BTRFS (сочиняю на ходу, может быть путано):
Читать далее Плюсы и минусы BTRFS

Откат снапшота BTRFS

mount /dev/sda1 /tmp/0

ls /tmp/0 выдаст:
@ @home (подтома как папки)

btrfs subvol snapshot /tmp/0/@ /tmp/0/@_snapshotname
btrfs subvol snapshot /tmp/0/@home /tmp/0/@home_snapshotname

ls /tmp/0 выдаст:
@ @home @_snapshotname @home_snapshotname (подтома как папки)

umount /tmp/0

Для отката как на горячую, так и из лайва/в чруте:
mv -v /tmp/0/@_rolledback
mv -v /tmp/0/@_snapshotname /tmp/0/@
reboot

dumasnap v0.2

В dumasnap добавлен таймер systemd, который раз в сутки автоматически через apt-btrfs-snapshot создает снапшот (снимок) корня системы, установленной в подтом BTRFS ‘@’.

Читать далее dumasnap v0.2