btrfsのとりあえずの設定
複数のHDDを使用する目的で使用する。
ただし、3TBと6TBのHDDの混在でRAIDが使えない。
一時的なデータ置き場としての用途で他の手段で二重化しているので堅牢性とかは考えていない。
sudo mkfs.btrfs /dev/sda
これで、btrfsのファイルシステムを作成し、HDDを追加して容量を増やしていく。
mountされた状態でないとコマンドが実行できないようだった。
sudo mount /dev/sda /mnt/
sudo btrfs device add /dev/sdb /mnt/
sudo btrfs device add /dev/sdc /mnt/
これ、sdaがmountできなくなったらどうなるのか?と思って、/dev/sdbをマウントしたら、それでもマウント可能だった。
sdaが故障してもなんとかなりそう。
homeのバックアップとして使用したい。
かつ、snapshotを使いたいのでsubvolumeを作成する。
ディレクトリを作成した後、subvolumeとして指定するのは動かなかった。
最初からsubvolumeを作成する必要があるようだ。
試しに、subvolumeを作成し、スナップショットを取る。
sudo btrfs subvolume create home
sudo btrfs subvolume snapshot -r home home.snapshot # -r : read onlyのsubvolumeを作成するという意味
ls
sudo btrfs subvolume delete home.snapshot
fstabに設定を書き込む
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /mnt/btrfs btrfs defaults,autodefrag,noatime,lazytime,compress-force=zstd:13 0 2
UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /home btrfs defaults,autodefrag,noatime,lazytime,compress-force=zst:13,subvol=home 0 2
/mnt/btrfs以下にhomeのスナップショットを置く予定。autodefrag, noatimeなどは、負荷が少なくなるように、圧縮率は高く設定している。
スナップショットの設定
crontab -e
で以下の設定を行う。
crontab -e
# 以下を記述
59 23 * * * /usr/bin/btrfs subvolume snapshot -r /mnt/btrfs/home /mnt/btrfs/home_`date '+\%Y\%m\%d'`_daily
59 23 * * 5 /usr/bin/btrfs subvolume snapshot -r /mnt/btrfs/home /mnt/btrfs/home_`date '+\%Y\%m\%d'`_weekly
59 23 28 * * /usr/bin/btrfs subvolume snapshot -r /mnt/btrfs/home /mnt/btrfs/home_`date '+\%Y\%m\%d'`_monthly
59 23 28 * * bash -c 'btrfs subvolume delete /mnt/btrfs/home_*_daily'
0 0 1 * * btrfs scrub start /mnt/btrfs/
これで1日に1回スナップショットが取られる。
念の為、weekly, monthlyを作成して、dailyは月末(28日)に消すなどをする予定。
最後の行は、月1のscrubを行う予定。
スナップショットを削除するときは、以下で可能。
btrfs subvolume delete /mnt/btrfs/home_XXXXX
で可能。
とりあえず、これで運用する。
ディスクの削除
btrfs device remove /dev/sdXXXXXX /mnt/btrfs/
btrfs fi show /mnt/btrfs/
sleep 600s
btrfs fi show /mnt/btrfs/
みたいな感じで、ディスクを削除するのだがbtrfsは進捗を表示しないので、btrfs fi show
で表示させている。
ちなみに、600Gのデータで10時間くらいかかる予定で、途中で再起動しても大丈夫だった。
表示としては以下のようになり、device sizeが0になるようだった。
root@myhost:~/btrfs# btrfs fi show /mnt/btrfs/
Label: none uuid: b770844b-6cfb-4814-9f47-e7b3ba7eb77c
Total devices 6 FS bytes used 2.85TiB
devid 1 size 5.46TiB used 567.03GiB path /dev/sdd
devid 2 size 2.73TiB used 517.03GiB path /dev/sdc
(中略)
devid 5 size 0.00B used 351.00GiB path /dev/sde