自宅サーバをリプレースしたので、ストレージ用に2TB x 2のHDDを使ってRAID1なbtrfsを組んでみました。
なぜ
最初はRAID1 + LVM + … な構成にしようと思ってたけど、どうせなら新しいものを触ってみたいということでbtrfsを選んだ。
btrfs vs zfsでちょっと迷ったけど、将来性があってLinuxとの親和性が高そうなbtrfsを選択。
構築
/dev/sdb
と/dev/sdc
が対象ディスク。
RAID1構成のbtrfsを組むにはこれだけ。パーティションも何も作成されてない状態で実行する。
ラベル(STORAGE
)を設定しとくとこれでマウントできるようになるのでおいしい。
mkfs.btrfs -L STORAGE -d raid1 -f /dev/sdb /dev/sdc
マウント
最終的なマウントオプションはこんな感じ。
LABEL=STORAGE /mnt/storage btrfs noatime,autodefrag,compress-force=lzo,space_cache 0 0
noatime
- atimeを更新しないようにする。パフォーマンスがめっちゃあがる。特にbtrfsだとそうらしい。autodefrag
- 自動でデフラグしてくれる。compress-force=lzo
- 圧縮を有効化する。lzoは速いやつ。space_cache
- キャッシュを高速化する。
参考: https://btrfs.wiki.kernel.org/index.php/Mount_options
確認
こんな感じになる。
$ df -h /mnt/storage
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/sdb 1.9T 17M 1.9T 1% /mnt/storage
/dev/sdb
がマウントされてることになってる。ちゃんとRAID1になってるのか…?
ってことで確認してみた。
$ sudo btrfs filesystem show /mnt/storage
Label: 'STORAGE' uuid: b1193efc-ef62-4633-bca1-d3f61b79a2fe
Total devices 2 FS bytes used 640.00KiB
devid 1 size 1.82TiB used 2.01GiB path /dev/sdb
devid 2 size 1.82TiB used 2.01GiB path /dev/sdc
# 圧縮されないように /dev/urandom
$ sudo dd if=/dev/urandom of=/mnt/storage/dummy bs=1M count=10240
$ btrfs filesystem show /mnt/storage
Label: 'STORAGE' uuid: b1193efc-ef62-4633-bca1-d3f61b79a2fe
Total devices 2 FS bytes used 10.02GiB
devid 1 size 1.82TiB used 12.01GiB path /dev/sdb
devid 2 size 1.82TiB used 12.01GiB path /dev/sdc
見る限りレプリケーションはされてるっぽい ✨
所感
思ってた以上に簡単で未来を感じた 😌 パフォーマンスとか安定性はこれからどうなるかですね 😎