きっかけ
仮想マシンサーバとして24時間起動させているPCがあったんですが、ディスクもCPUも使用率が低く、遊ばせておくのも勿体ないのでバックアップサーバーも兼用させてみました。
まぁ、今までもバックアップを保存していたんですが、以下のような問題を色々と抱えていました。。。
・HDDの電源が切れると再起動するまで見えなくなる(HDD見失い病と言うらしい・・・)
・常時電源ONにする設定がWindowsの更新でたまに消える
・ディスクの利用効率が悪い
見えなくなってデータが消えるのが一番怖いので、とりあえず耐障害性のあるRAID5とかRAID6にしたかったんですが、一気に同じ容量のHDD買うなんて無理です。
そこで気になるのが「Beyond RAID」とか「Synology Hybrid RAID」。異なる容量のHDDを上手いこと組み合わせ、RAID5やRAID6相当の信頼性で動作するとの事。
でもめっちゃ高い。。。
というわけで調べてみたら、Linuxであれば簡単に似たようなことが出来るという事のようです。
効果
仕組みとしては、パーティションを区切ってソフトウェアRAIDを構築し、LVMで束ねるという事でした。
やり方や詳細な仕組みは参考元だけで充分だと思うので、結論だけでいうと、
・容量の異なるHDD(2~4[TB]x6つ)でRAID5相当のNASを構築できた。
・LVMでパーティションを1つに出来たのでディスクの利用効率が上がった。
・Hyper-VのHDDパススルー接続機能で仮想→物理サーバー化出来る(かも)
・めっちゃ早い! (完全に想定外!)
はまった点
- partedでファイルシステムをext4に変更すると上手くフォーマットされない
→デフォルト(ext2)のままだと上手くいく模様。 - ネットワークが不安定
→クライアントHyper-Vが有効な状態で、VirutalBoxのクライアントPCを作成・起動していたから?
→ホストOSとNICを共有していたから?
念のためUSBのNICを追加し、Hyper-Vのクライアント専用と設定。 - Windows10 Build 10586にアップデートしたら起動しない
→アップデートで権限の設定が初期化された模様。Hyper-Vマネージャ上で物理HDDを削除・再度追加で解決。 - RAID5のくせに性能が出ない(ホストから仮想マシンへのファイルコピーで書き込みが80~120[MB/s]くらい)
→当初「Hyper-V上の仮想マシンなのでやむなし?」と思っていたが、NICがボトルネックだった。
何故Hyper-Vか
はまった点の最後ですが、「RAID5のなのにちょっと遅いなぁ~」とか「ホストPCー別の物理PC間だともう少し早いからネットワークじゃないしなぁ~」とか思ってたらネットワークでした・・・
Hyper-Vだと内部ネットワークのリンク速度が10Gbpsなので、それなりの速度でアクセス出来るようになるみたいです。
参考までにベンチマーク結果を乗せておきます。
というわけで、HDD6つくらい使えばSSD位の速度でアクセス出来るので、Hyper-Vを使うのがお勧めです。
参考元
具体的な手順や仕組みは以下のサイトを参考としてください。
mdadm と LVM で作る、全手動 BeyondRAID もどき