基本情報技術者試験 - RAIDの基礎知識と覚え方

基本情報技術者試験では頻出の重要なトピックであるRAIDについて、基本的な概念から覚え方のコツまでをまとめました。

## 1. RAIDとは

RAID (Redundant Array of Independent Disks) は、複数のハードディスクドライブ(HDD)やSSDを組み合わせて、1つの記憶装置として運用する技術です。主な目的は以下の2つです：

1. データの信頼性（冗長性）向上
2. 読み書き性能の向上

## 2. 主なRAIDレベル

### RAID 0（ストライピング）
- 複数のディスクに対して、データを分散して書き込む方式
- **特徴**：読み書きの速度が向上するが、冗長性はない（1台でも故障するとデータが失われる）
- **ディスク利用効率**：100%（ディスク容量の合計がそのまま使用可能）

### RAID 1（ミラーリング）
- 同じデータを複数のディスクに同時に書き込む方式
- **特徴**：1台が故障しても残りのディスクからデータを復元できる、読み込み速度の向上
- **ディスク利用効率**：50%（2台使用した場合、容量は1台分）

### RAID 5
- データとパリティ（誤り訂正情報）を全てのディスクに分散して配置する方式
- **特徴**：1台のディスク故障まで対応可能、比較的高い読み書き性能
- **ディスク利用効率**：(n-1)/n（例：3台構成なら容量は2台分＝約67%）

### RAID 6
- データとパリティを2重に保持する方式
- **特徴**：2台同時のディスク故障まで対応可能、RAID 5よりも冗長性が高い
- **ディスク利用効率**：(n-2)/n（例：4台構成なら容量は2台分＝50%）

### RAID 10（または RAID 1+0）
- RAID 1（ミラーリング）とRAID 0（ストライピング）を組み合わせた方式
- **特徴**：高い冗長性と高い性能を両立している
- **ディスク利用効率**：50%（半分がミラーリングに使われる）

## 3. RAIDの覚え方のコツ

### 数字でイメージする
- **RAID 0**: 「0」は「ゼロ」で「冗長性ゼロ」と覚える（壊れると「0」になる＝全部消える）
- **RAID 1**: 「1」は「イチ」で「イチから十まで同じ」と覚える（完全コピーだから）
- **RAID 5**: 「5」は「互い違い」の形に似ているので「データとパリティが互い違いに分散している」
- **RAID 6**: 「6」は「5+1」でRAID 5の上位版、パリティが1つ増えたバージョン

### 特徴で覚える
- **RAID 0**: 「速さ重視、安全性ゼロ」
- **RAID 1**: 「鏡（ミラー）のように同じものを2つ作る」
- **RAID 5**: 「バランス型（速度も安全性も中程度）」
- **RAID 6**: 「超安全型（2台故障しても大丈夫）」
- **RAID 10**: 「速さと安全性の両取り」（でもコストも両取り＝高い）

### 利用効率の覚え方
- **RAID 0**: 100%（全てが使える）
- **RAID 1**: 50%（半分は予備）
- **RAID 5**: (n-1)/n（1台分がパリティ用）
- **RAID 6**: (n-2)/n（2台分がパリティ用）
- **RAID 10**: 50%（半分は予備）

## 4. パリティの基本概念

パリティとは、データの整合性を検証したり、失われたデータを復元したりするために使用される「誤り検出・訂正」のための情報です。

### 簡単な例で理解する

例えば、3つの数字（データ）があるとします：
- 5, 7, 3

ここで「排他的論理和（XOR）」を使用してパリティを計算します。XORは「ビットごとに比較して、同じ値なら0、違う値なら1」になる計算です。

```
5 = 101（2進数）
7 = 111（2進数）
3 = 011（2進数）
```

ビットごとにXOR計算すると：
```
1 0 1 (5)
1 1 1 (7)
0 1 1 (3)
--------- XOR
0 0 1 = 1（パリティ）
```

### XOR演算の詳しい計算過程

上記の計算をビット単位で詳しく見ていきましょう：

**1桁目（一番右のビット）**:
- 5の1桁目: 1
- 7の1桁目: 1
- 3の1桁目: 1
- XOR計算: 1⊕1 = 0（同じ値だから）、さらにその0⊕1 = 1

**2桁目（真ん中のビット）**:
- 5の2桁目: 0
- 7の2桁目: 1
- 3の2桁目: 1
- XOR計算: 0⊕1 = 1、さらにその1⊕1 = 0 (同じ値)

**3桁目（一番左のビット）**:
- 5の3桁目: 1
- 7の3桁目: 1
- 3の3桁目: 0
- XOR計算: 1⊕1 = 0、さらに0⊕0 = 0
- または「1」が2個（偶数個）あるので結果は「0」

これを合わせると「001」（2進数）= 1（10進数）となり、これがパリティ値です。

(> XOR演算は「各桁で1の個数が奇数個なら1、偶数個なら0」という法則でも考えることができます。)

この「1」がパリティ値です。もし元のデータの1つが失われてしまった場合、残りのデータとパリティを使って復元できます。

例えば、「7」が失われたとします：
```
5 = 101
? = ???（失われた7）
3 = 011
1 = 001（パリティ）
```

XOR計算の特性を使うと、残りの値とパリティ値からXORを計算すれば、失われた値が復元できます：
```
101 (5) XOR 011 (3) XOR 001 (1) = 111 = 7
```

### RAIDでのパリティの使われ方

#### RAID 5の場合
- 3台以上のディスクを使用
- データとパリティ情報が全ディスクに分散配置される
- 1台のディスクが故障しても、残りのディスクとパリティ情報から失われたデータを再現できる

例えば4台のディスクがあるRAID 5システムでは：
```
ディスク1: データA, データD, データG, パリティJKL
ディスク2: データB, データE, パリティGHI, データJ
ディスク3: データC, パリティDEF, データH, データK
ディスク4: パリティABC, データF, データI, データL
```

ディスク2が故障したとしても、ディスク1、3、4とそれぞれのパリティ情報から、ディスク2のデータ（B、E、J）を復元できます。

#### RAID 6の場合
- 2種類のパリティ情報を持つため、2台同時に故障しても大丈夫
- より高度な計算方法を使用（リード・ソロモン符号など）

パリティのイメージとしては「バックアップ用の情報」と考えると分かりやすいかもしれません。ただし通常のバックアップと違い、元データの完全コピーではなく、「復元するための情報」が圧縮された形で保存されています。

## 5. RAIDの選定ポイント

選定に当たっては、以下の要素を考慮します：
- 信頼性の要件（どの程度のディスク故障に耐えるか）
- パフォーマンスの要件（読み書き速度）
- コスト（必要なディスク数や利用効率）
- 障害復旧時間（リビルド時間）

## 6. 基本情報技術者試験での出題ポイント

- 各RAIDレベルの特徴と違い
- 利用効率の計算方法
- 特定のRAIDレベルが適している用途
- 冗長性と性能のトレードオフ

試験では、特定の要件に対して最適なRAIDレベルを選択する問題や、利用効率を計算する問題がよく出題されます。

## まとめ

RAIDについては完全に暗記するのではなく、基本的な仕組みと特徴を理解することで記憶しやすくなります。特に、各RAIDレベルの「特徴」と「利用効率」を重点的に覚えることが、試験対策として効果的です。