BtrfsでRAID1を構築する
BtrfsのRAID1はmdadmで構成できる通常のソフトウェアRAIDのRAID1(以下、RAIDのRAID1)とは別物に思える
容量の異なる複数のディスクでRAID1を構成できる
各ディスクの容量が極端に違わなければ、合計ディスク容量/2 の容量をもったストレージプールができる
RAIDのRAID1はディスクを増やしてもディスクアレイ全体の容量は増えないが、BtrfsのRAID1はディスクを増やせば増やすだけ容量も増える
つまり、通常のRAID1よりBtrfsのRAID1のほうがディスクの利用効率がいい
RAID5ならRAID1よりディスクの利用効率がいいようだが、BtrfsのRAID5/6はまだ不安定なので使わないほうがいいとのこと
最初、RAID5で構築しようとしていたが、BtrfsだとRAID1とRAID5ではディスクの利用効率が5割なのか7割なのかの違いぐらいで、3台以上のディスクをつないだときの使い勝手はあんまり変わらなさそう
試した環境
RaspberryPi 4B 4GB
RaspberryOS
128GBのUSBメモリが2本挿さっている
code:sh
$ ls -1 /dev/sd*
/dev/sda
/dev/sdb
$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
|__ Port 1: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
|__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 2: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
btrfsコマンドのインストール
code:sh
sudo apt install btrfs-progs
ストレージプールの作成
code:sh
sudo mkfs.btrfs -f /dev/sda
マウント
code:sh
sudo mount /dev/sda /mnt/nas
sdb をストレージプールに追加
code:sh
sudo btrfs device add -f /dev/sdb /mnt/nas
RAID1に変換する
code:sh
sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /mnt/nas
code:sh
$ sudo btrfs filesystem show
Label: none uuid: d4003fe2-0cbd-4c61-815c-0c5afc6da8dc
Total devices 2 FS bytes used 640.00KiB
devid 1 size 114.61GiB used 2.04GiB path /dev/sda
devid 2 size 114.61GiB used 2.03GiB path /dev/sdb
code:sh
$ sudo btrfs filesystem usage /mnt/nas
Overall:
Device size: 229.22GiB
Device allocated: 4.06GiB
Device unallocated: 225.16GiB
Device missing: 0.00B
Used: 1.25MiB
Free (estimated): 113.58GiB (min: 113.58GiB)
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 3.25MiB (used: 0.00B)
Data,RAID1: Size:1.00GiB, Used:512.00KiB (0.05%)
/dev/sda 1.00GiB
/dev/sdb 1.00GiB
Metadata,RAID1: Size:1.00GiB, Used:112.00KiB (0.01%)
/dev/sda 1.00GiB
/dev/sdb 1.00GiB
System,RAID1: Size:32.00MiB, Used:16.00KiB (0.05%)
/dev/sda 32.00MiB
/dev/sdb 32.00MiB
Unallocated:
/dev/sda 112.58GiB
/dev/sdb 112.58GiB
sudo btrfs filesystem show で表示されるUUIDをfstabに指定したら
code:/etc/fstab
$ cat /etc/fstab
LABEL=writable / ext4 defaults 0 0
LABEL=system-boot /boot/firmware vfat defaults 0 1
UUID=d4003fe2-0cbd-4c61-815c-0c5afc6da8dc /mnt/nas btrfs defaults 0 0
sudo dd if=/dev/zero of=/mnt/nas/hoge bs=1M count=20000 を実行して20GBのファイルを書き込んでいる最中のtop
code:top
top - 06:42:38 up 14 min, 4 users, load average: 8.34, 6.47, 3.35
Tasks: 196 total, 2 running, 194 sleeping, 0 stopped, 0 zombie
%Cpu0 : 0.0 us, 3.1 sy, 0.0 ni, 44.4 id, 51.4 wa, 0.0 hi, 1.0 si, 0.0 st
%Cpu1 : 0.7 us, 3.4 sy, 0.0 ni, 5.4 id, 89.2 wa, 0.0 hi, 1.3 si, 0.0 st
%Cpu2 : 0.0 us, 3.1 sy, 0.0 ni, 56.6 id, 40.0 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu3 : 3.4 us, 7.1 sy, 0.0 ni, 36.9 id, 51.9 wa, 0.0 hi, 0.7 si, 0.0 st
MiB Mem : 3793.3 total, 22.8 free, 316.3 used, 3454.2 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 3415.7 avail Mem
load averageが8を越えているので、CPU負荷はかなり高いかもしれない?
↓20GB書き込んでみた結果
code:sh
$ sudo dd if=/dev/zero of=/mnt/nas/hoge bs=1M count=20000
20000+0 records in
20000+0 records out
20971520000 bytes (21 GB, 20 GiB) copied, 1549.53 s, 13.5 MB/s
参考
See Also: