0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

btrfsのとりあえずの設定

Last updated at Posted at 2023-03-27

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?