btrfs系の調べもの
btrfsのincremental backup向けツールにbtrbkがあるらしい
dockerがストレージドライバーとしてbtrfsを使うので放っておくとbtrfsのsubvolumeがめちゃくちゃ溜まる。
docker system prune
とかで一掃できる。
systemd-nspawnのルートにbtrfsのスナップショットを設定できる
LXDはストレージバックエンドとしてbtrfsを使うのは出てくるけどbtrfsのスナップショットをLXDのベースイメージにする方法は見当らなかった
btrfsを暗号化する話
あんまり意識してなかったけど、rootにマウントしてるsubvolumeとbtrfsのrootって別なんだな。btrfsのrootをマウントするとrootにマウントしてる @ とかが見える。
$ sudo mount -osubvolid=5,noatime /dev/nvme0n1p2 /pool
$ ls /pool
@ @home
@apt-snapshot-release-upgrade-jammy-2022-04-22_21:11:51 backups
@apt-snapshot-release-upgrade-jammy-2022-04-22_21:11:54 ubiquity-apt-clone
@apt-snapshot-release-upgrade-jammy-2022-04-22_21:13:23 var
deja-dupがあまりに遅いのでbtrbkで毎時スナップショットを取ることにした。全部btrbkにしたかったけどスナップショット単位での管理だから特定のディレクトリだけ除外ができなくてダメだった。
rootをマウントしたことでsnapshotとかの使い方がイメージつくようになったのでsystemd-nspawnのrootにbtrfsのスナップショット使うやつ試してるけどCPU 100%使って張り付いたままだ
-b
オプションつけなかったら大丈夫だった。arch wikiにもデフォルトでパスワードレスログインできないから -b
はつけるなって書いてあった。
まとめると、こういう感じのコマンドで systemd-nspawn
のインスタンス用意できるのかな?
# btrfsのrootをマウントして@のスナップショットを作っておく
$ sudo mount -osubvolid=5,noatime /dev/nvme0n1p2 /pool
$ sudo mkdir /pool/machines
$ sudo btrfs subvolume snapshot /pool/@ /pool/machines/test
# スナップショットから一旦マシンを作る。マシンを作るときにサブボリュームを作っているようで、オプションを正確に把握できてないのでこれを使う。
$ sudo mkdir -p /var/lib/machines/test-machine
$ sudo systemd-nspawn --template=/pool/machies/test -D /var/lib/machines/test-machine
# マシンからログアウトして @home をマウントする
$ sudo mount -osubvol=@home /dev/nvme2n1p2 /var/lib/machines/test-machine/home
# ログインできる。ログイン後にsu userとかする。
$ sudo systemd-nspawn -D /var/lib/machines/test-machine
メモ: -b つけるとsystemdがCPU 100%使うのはネットワークブリッジの設定をしてないからかもしれない
/bootマウントしてないせいか?