RAID1なbtrfsでストレージ組んだ

created at 2017/02/25 17:48:18

自宅サーバをリプレースしたので、ストレージ用に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

見る限りレプリケーションはされてるっぽい :sparkles:

所感

思ってた以上に簡単で未来を感じた :relieved:
パフォーマンスとか安定性はこれからどうなるかですね :sunglasses: