DRBDとNBD,またいかに安く済ませるか等
DRBDはRAID1の片方の玉をTCP越しに別マシンに飛ばしたようなものだ.実際しばしば「玉を飛ばす」機能専用のNBDと普通のRAIDの組み合わせ (md/NBD etc.) と比較されるし:
- http://lkml.indiana.edu/hypermail/linux/kernel/0905.1/02880.html Linux-Kernel Archive: Contrasting DRBD with md/nbd
でもDRBDはLINBIT社が "HA" (high availability) という意図を持ってまとめて開発してるものなので,典型的用途への特化やノウハウ含め色々いいことがあって人気... という感じなのかな.
さて次に自然な発想としてDRBDにもRAID10とかRAID5相当が欲しくなったりしないのかな? 最近は「RAID1なんてお子様,RAID6じゃないと不安で仕事やってれない」という声も聞こえてくる.私はアプリのプログラマでその辺は全然ゆるい仕事しかやってないので知らんのだけど... あと最近の(帯域に比して)ずいぶんと巨大化したHDD容量を考えるとRAIDもscrubbing (駄目セクタを積極的に探してfail earlyするため全領域readを繰り返す)無しでは事実上エラー耐性無いという話もあるんだった.DRBDだってその特性は引き継いでるだろうから「バックアップに引き継いで起動したらそっち側はDBのファイルが駄目セクタをまたいでて(次にそこを読んだ瞬間)死亡」という悲劇は起き得るはず.まぁそれはRAIDモードとは別の話だけど.
さてサーバが2台あって各々HDDは1玉しか持ってないけどパーティションを2個に分割しており,hostA:part0 + hostB:part1 でDRBD,hostB:part0 + hostA:part1 でDRBD という変態構成は安定性に寄与するだろうか? RAID1と同じ強さの耐障害性が,RAID非使用時と同じH/Wコストで実現できる気がするのだが.まぁシーケンシャルI/Oが阻害されて帯域出ないとかHDD内キャッシュミスとか微妙に色々あるだろうけど,それ位はひとまず無視で.うーん片方のサーバを落としてる間がけっこうヤバい... じゃあ3サーバに1玉ずつ積んでパーティション3個に切り分けてRAID5でどうだろう.これは md/NBD でしかできなさげ.
追記: DRBDベンチマークを見つけた.Protocol "A" == asynchronous や "B" が "C" == fully synchronous に負けてるって怪しすぎる...
- http://jfut.integ.jp/2008/07/24/ 2008-07-24 - ふたつの川うるおう日記 > DRBD + (ext3|GFS2) ベンチマーク
- http://etbe.coker.com.au/2012/01/05/drbd-benchmarking/ DRBD Benchmarking | etbe - Russell Coker
3年前からこの傾向が変わってないってどういうことなの? なの?