基本情報技術者 2017年 秋期 午前(科目A) 問12
問題文
RAID5の記録方式に関する記述のうち、適切なものはどれか。
選択肢
ア:複数の磁気ディスクに分散してバイト単位でデータを書き込み、さらに、1台の磁気ディスクにパリティを書き込む。
イ:複数の磁気ディスクに分散してビット単位でデータを書き込み、さらに、複数の磁気ディスクにエラー訂正符号(ECC)を書き込む。
ウ:複数の磁気ディスクに分散してブロック単位でデータを書き込み、さらに、複数の磁気ディスクに分散してパリティを書き込む。(正解)
エ:ミラーディスクを構成するために、磁気ディスク2台に同じ内容を書き込む。
🔒 解説は解答すると表示されます
RAID5の記録方式【午前解説】
正解の理由
RAID5はデータを複数ディスクに分散して書き込む「ブロック単位のストライピング」と、ブロックごとのパリティを各ディスクに分散して格納する方式を組み合わせた構成です。したがって選択肢のうち、データをブロック単位で分散し、パリティも複数ディスクに分散して記録する ウ が正しい説明になります。
ここで重要な分類として、ストライピングの単位とパリティ/ECCの扱いを整理すると次のようになります:ビット単位→RAID2、バイト単位→RAID3、ブロック単位→RAID4/RAID5。RAID5はブロック単位のストライピング+分散パリティであり、RAID4はブロック単位だがパリティを専用ディスクに置く点で異なります。
解法ステップ
- 「分散して」「ブロック単位」「パリティを分散して」のキーワードを探す。これがRAID5の本質である。
- 各選択肢をRAIDの典型像に当てはめる:
- ビット単位+ECC→RAID2
- バイト単位+専用パリティ→RAID3
- ブロック単位+専用パリティ→RAID4
- ブロック単位+分散パリティ→RAID5
- 同一内容を2台に書く→RAID1(ミラー)
- キーワードがRAID5に一致する選択肢を正解とする(ウ)。
選択肢別の誤答解説
-
ア:複数ディスクにバイト単位で書き込み、1台にパリティを書く
→ これはバイト単位のストライピングと専用パリティを示すため、RAID3に該当します。RAID3は専用パリティディスクを用いる点でRAID5とは異なります。 -
イ:複数ディスクにビット単位で書き込み、複数ディスクにECCを書く
→ ビット単位のストライピングとECC(例:ハミング符号)を組み合わせるのはRAID2の特徴です。RAID2はECCを複数ディスクに配置する方式ですが、実運用ではほとんど使われません。RAID5はECCではなくパリティ(XOR)を用います。 -
ウ:複数ディスクにブロック単位で書き込み、複数ディスクに分散してパリティを書く
→ 正しい。ブロックレベルのストライピングと分散パリティ(各ブロックのパリティ情報を複数ディスクに回して配置)でRAID5となります。 -
エ:2台に同じ内容を書き込む(ミラー)
→ これはRAID1(ミラーリング)の説明であり、パリティやストライピングを使うRAID5とは全く別の方式です。
よくある誤解
-
RAIDの「パリティ」と「ECC(誤り訂正符号)」を混同する
→ ECCはビット誤りを検出・訂正するための符号で、RAID2のように用いられることがある。一方RAID5はディスク故障時にデータを再構築するためのパリティ(通常はXOR)を利用する。目的と性質が異なる点に注意。 -
RAID5は複数ディスクの同時故障に耐えられると考える
→ RAID5は単一ディスク故障に耐える設計で、同時に2台以上故障するとデータ損失の可能性が高い。複数故障耐性はRAID6(二重パリティ)などが必要。 -
パリティが1台に集中している=RAID4、分散している=RAID5、混同しやすい
→ 実際の違いは性能特性(書き込みボトルネック)や冗長性には直接関係しないが、問題文の選択肢判断では重要な識別点になる。
補足コラム
- パリティ計算はビットごとの排他的論理和(XOR)で行われます。n 個のデータブロックに対するパリティは と表され、任意の1ブロックが失われても残りとパリティから復元できます。
- RAID5の最小ディスク数は通常3台です(データとパリティを分散するため)。実運用では性能や冗長性を考え4台以上を選ぶことが多いです。
- RAID5の書き込みは「読み出し→更新パリティ計算→書き込み」というオーバーヘッド(ライトペナルティ)があり、小さなランダム書き込み性能は低下しやすい点に留意してください。
- RAID2はECCを用いる構成で、ディスクがビット単位で配分される特殊な方式なので一般的なサーバ構成ではほとんど使われません。RAID3はバイト単位、RAID4はブロック単位で専用パリティ、RAID5はブロック単位で分散パリティ、と整理して覚えましょう。
コード例:簡単なパリティ(XOR)計算の例(Python)
# ブロックをバイト列で表し、XORでパリティを作る例
blocks = [b'\x0f\x00', b'\x01\x02', b'\x03\x04'] # 例: 3つのブロック
from functools import reduce
from operator import xor
def xor_bytes(a, b):
return bytes(x ^ y for x, y in zip(a, b))
parity = reduce(xor_bytes, blocks)
print(parity) # パリティブロック
FAQ
Q: RAID5は何台のディスク損失に耐えられますか?
A: 基本的に1台まで。2台同時に故障するとデータ復旧できない可能性が高いです。
A: 基本的に1台まで。2台同時に故障するとデータ復旧できない可能性が高いです。
Q: RAID5とRAID4の違いは何ですか?
A: 両者ともブロックレベルのストライピングを使いますが、RAID4はパリティを専用の1台に置くのに対し、RAID5はパリティを複数ディスクに分散します。これによりRAID4はパリティディスクがボトルネックになりやすいです。
A: 両者ともブロックレベルのストライピングを使いますが、RAID4はパリティを専用の1台に置くのに対し、RAID5はパリティを複数ディスクに分散します。これによりRAID4はパリティディスクがボトルネックになりやすいです。
Q: パリティとECCは同じですか?
A: いいえ。パリティは主にディスク故障時の再構築に使われる冗長情報で、ECCはデータのビット誤りを検出・訂正する符号です。用途と仕組みが異なります。
A: いいえ。パリティは主にディスク故障時の再構築に使われる冗長情報で、ECCはデータのビット誤りを検出・訂正する符号です。用途と仕組みが異なります。
Q: RAIDはバックアップの代わりになりますか?
A: いいえ。RAIDは可用性や性能の向上と故障からの迅速な復旧を目的としますが、災害やヒューマンエラーに対する対策(バックアップ)は別途必要です。
A: いいえ。RAIDは可用性や性能の向上と故障からの迅速な復旧を目的としますが、災害やヒューマンエラーに対する対策(バックアップ)は別途必要です。
関連キーワード: RAID5、パリティ、ストライピング、RAID4、RAID3、RAID2、RAID1、XOR、リビルド、ミラーリング

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

