Slide 1

Slide 1 text

データ冗長化のしくみ RAID ~ 基礎概念とRAID1編~ Apr. 14th, 2024 Satoru Takeuchi X: satoru_takeuchi 1

Slide 2

Slide 2 text

RAIDとは何か ● 複数のディスクを束ねることによって高信頼性、高可用性、高速性、大容量などの 特性を実現する技術 ○ 一般に全て容量が等しいディスクで構成する ● Redundant Arrays of Inexpensive Disksの略 ○ 生まれた当時は上記特性の実現には高価な専用ディスクを使う必要があった ○ これらの特性を安価なディスクの組み合わせによって実現するというコンセプトだったので Inexpensiveを含む名前がついた ○ 「高価な専用ディスク」は廃れたので InexpensiveをIndependentと書くことも 2

Slide 3

Slide 3 text

RAIDの実現方法 ● 複数のディスクを束ねて1台の仮想的な一台のディスクとして見せる ○ ユーザからは普通のディスクと同じようにアクセスできる ● 仮想ディスクに書き込むと、RAIDを構成する複数のディスクに書き込む ● 誰がこれらの機能を実現するかは色々な方法がある ○ ハードウェアRAID ○ ソフトウェアRAID ○ fake RAID ● 📝 詳しくは別動画「RAIDの実現方法」を参照 3

Slide 4

Slide 4 text

RAIDレベル ● RAIDの個々のディスクに何を書き込むかの仕組みごとに名前がついている ○ それぞれの方法を「RAIDレベルn」あるいは「RAID n」と表記する ○ よく使われるRAIDレベルは「1」「0」「10」「5」「6」 ● 本動画ではRAID1(ミラーリング)を例に基礎概念を説明 ○ 📝 他のRAIDレベルについては別動画で 4

Slide 5

Slide 5 text

RAID1 ● n台(nは2以上)のディスクで構成 ● 全ディスクに同じデータをコピー ○ 📝 同じデータ2台だけにコピーする RAID1Eという派生もある ● 例: 2台のディスクA,BでRAID1を組む 5 aaa iii aaa iii 仮想ディスク aaa iii ディスクA ディスクB

Slide 6

Slide 6 text

RAID1の特性(n台で組んだ場合) ● 耐障害性: n-1台のディスクが壊れてもデータは残る ● アクセス速度 ○ 書き込み: 同じデータをn回書くので、1台で構成する場合より遅くなる ○ 読み出し: 別ディスクに並列アクセス可能なので 1台構成のn倍に近い速度が出ることもある ● 容量: 個々のディスクの容量に等しい (全ディスクの総容量から見ると 1/n) 6

Slide 7

Slide 7 text

書き込み時に発生しうるデータ不整合 ● 例: 2台のディスクA,Bを使ってRAID構成を組み、ディスクにdata aaaが保存されて いる状態でデータをiiiに書き換え 7 disk A data: aaa disk B data: aaa 1. 書き込み開始 2. disk Aを更新 disk A data: iii disk B data: aaa disk A data: iii disk B data: aaa 3. マシンがダウン データ不整合発生 再起動後に、読み出す ディスクによって 読めるデータが異なる

Slide 8

Slide 8 text

データ不整合への対処 ● ハードウェアによる対策 ○ 不揮発性キャッシュメモリを搭載して再起動後にデータの整合性を戻す ○ UPS(無停電電源装置)を付ける ● ソフトウェアによる対策 ○ ディスク上にジャーナル領域や「書き込み中」であることを示すビットマップを用意して、再起動後に データの整合性を戻す 8

Slide 9

Slide 9 text

冗長性の回復 ● ディスク故障時は、故障したディスクを正常なディスクと交換した上でリビルドという 処理によってデータの冗長性を回復させる ● リビルドでは正常なディスクのデータをもとに、新規追加した交換されたディスクに 正しいデータを書き込む 9

Slide 10

Slide 10 text

可用性について色々(実装によって大きく変わる) ● ディスク故障時にデータ冗長度が下がったまま運用できることも ○ 所定の冗長度まで下がったら危険と判断して運用を止めることも ● 運用中にリビルドできることもある ○ 大量のI/Oが走るのでリビルド中は性能劣化する ● ホットスペア ○ 交換用の予備ディスク (これをホットスペアと呼ぶことも )を最初からマシンに挿しておく ○ 故障時に交換用ディスクを使って自動的にリビルドできることも ● ホットプラグ ○ 運用中にディスクを抜き差しする技術 ○ とくに(故障した)ディスクを別のもので交換することをホットスワップという 10

Slide 11

Slide 11 text

RAIDのスコープ外のもの ● バックアップ ○ RAIDはバックアップ「ではない」 ○ データは冗長化されているが、常に最新のデータが冗長化されているだけ ■ データ更新時に過去のデータは全て新しいもので更新される ● マシンが丸ごと故障するケース ○ RAIDは1台のマシンに挿している複数ディスクによって構成する z技術 ■ ネットワーク越しのディスクを使うこともあるが今は考えない ○ マシンが燃えたらデータ全損 ○ 燃えなくてもマシンが落ちたらマシン上の全データにアクセスできなくなる 11

Slide 12

Slide 12 text

RAIDを使う際によくやること ● 仮想ディスクの構築に使うディスクの型番をやロットを分ける ○ 同じ型番やロットに共通して発生する問題を引くと RAIDを構成している全ディスクが一度に壊れる ことがある ● 使用開始時期をずらす ○ 同じ時期に投入したディスクは同時期に壊れがち ■ とくに型番やロットが同じ場合 12

Slide 13

Slide 13 text

まとめ ● RAIDは複数のディスクを束ねて仮想的に一つのディスクを構築し、可用性などを 高める技術 ○ アクセス速度や冗長性も変化する ○ RAIDレベルによっても変わる ○ 実装によっても変わる ● 何がRAIDのスコープ内で、何がスコープ外なのかは意識する必要がある 13