参考サイト
http://www.obenri.com/_raid_build/after_install_raid.html#target_pictprocmdstat01
https://raid.wiki.kernel.org/index.php/Mdstat#md_config.2Fstatus_line
RAIDについて
RAIDと言われると、いつも「ああアレね!なんか……冗長するやつ」ってなるので、覚え書きです。
cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md_d0 : active raid5 sde1[0] sdf1[4] sdb1[5] sdd1[2] sdc1[1]
1250241792 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/5] [UUUUU]
bitmap: 0/10 pages [0KB], 16384KB chunk
unused devices: <none>
項目 | 意味 |
---|---|
md_d0 | RAIDデバイス |
active | active 動作状態 |
raid5 | RAIDレベル |
sde1[0] | パーティション[認識番号] |
1250241792 blocks | RAIDサイズ(block) |
super | スーパーブロックのこと |
64k chunk | データがストライプされる単位 |
algorithm 2 | RAID5には、ストライピングにいくつかのパターンがあり、algorythmオプションとして指定できる |
[5/5] | RAID構成パーティション/稼働パーティション |
[UUUUU] | U=Upのこと。Downは_で表示される |
bitmap: 0/10 pages [0KB] | write intent bitmapのこと。突然のシャットダウンや、RAID再構築時にRAIDを素早くビルドするために使われるらしい |
パリティ(Parity)とは
コンピュータのビット列誤り検出のこと。
ビット列(8つの0または1の列)の中に、
1が奇数個ある→パリティは0
1が偶数個ある→パリティは1
という単純な話。
11001001 なら、パリティは1
パリティを合わせたビット列は110010011
【パリティがRAIDの何の役に立つのか】
ABCのサーバが、それぞれ1、1、0のビットを持っていたとする。
例えば、Bのサーバが落ちてしまった場合、
1、X、0 と、Xのところのビットがわからなくなってしまう。
こんな場合でも、パリティビットさえ保存されていれば、
1、X、0と、パリティ1から
1は偶数個必要だから、Xは1だと断定できる。
パリティビットは、耐障害性を高めるため、サーバに分散して保存される。
下の表は、A,B,C,D の4台のサーバでRAIDを構築した場合、データがどのように保存されるかを示している。
(PとP'はパリティを表す)
RAID | 呼び名 | A | B | C | D |
---|---|---|---|---|---|
0 | Striping | 1 5 |
2 6 |
3 7 |
4 8 |
1 | Mirroring | 1 2 |
1 2 |
1 2 |
1 2 |
5 | Striping with Parity |
1 4 |
2 P |
P 5 |
3 6 |
6 | Striping with Dual Parity |
P' 3 |
1 P |
P 4 |
2 P' |
● RAID0
ストライピング。複数のディスクに同時にデータをread/writeする。ディスクのread/write速度が上がる。冗長性は無い。
● RAID1
ミラーリング。同じデータを複数のサーバで保持する。
● RAID5
ストライピングでデータを保存し、パリティを付けることで耐障害性を確保する。
● RAID6
ストライピングでデータを保存し、二種類のパリティを付ける。RAID5では1台のサーバに対する耐障害性しかないが、RAID6なら2台同時に落ちてもデータを復元できる。
【RAIDの組み合わせ】
RAIDは、1種類だけ使うよりも、複数のRAIDを組み合わせて使うことの方が多い。
組み合わせることで、耐障害性やディスクへのアクセス速度向上を図る。
RAID | 効果 |
---|---|
0 + 1 | 0 : アクセス速度向上、大容量 1 : 冗長性 |
5 + 0 | 0 : アクセス速度向上、大容量 5: 耐障害性 |
【RAIDの分類】
もうひとつ、RAIDを分けるものとして、分割するディスクの単位がある。
RAID2,3,4だとその辺の区別があるらしい。
ほとんど使われないそうなので割愛します。
Block(Sector): 512byte(磁気ディスク)
2048byte(光ディスク)
Bit : 1か0どちらかのこと。一桁
Byte : 8桁の1か0の並び。