ハードウェア基礎 #5 ストレージ ② 構成と接続 — RAID と DAS / NAS / SAN
#4 でディスク 1 枚の種類と性能を整理しました。1 枚には 3 つの限界があります。容量に終わりがあり、1 枚の速度に限界があり、故障するとデータが消えます。運用ではこの限界を越えるためにディスクを複数枚束ね (RAID)、サーバーにさまざまな方式で接続します (DAS・NAS・SAN)。今回の 2 つの主題です。
ハードウェア基礎 シリーズでの今回の位置です。
- #1 コンピュータを動かす 4 つのリソース — CPU / メモリ / ストレージ / ネットワーク
- #2 CPU — コア / スレッド / クロック / キャッシュ、そして vCPU の正体
- #3 メモリ — RAM と階層構造、スワップが始まると起きること
- #4 ストレージ ① デバイス — HDD / SSD / NVMe と IOPS / スループット / レイテンシ
- #5 ストレージ ② 構成と接続 — RAID と DAS / NAS / SAN ← 今回
- #6 ネットワーク — 帯域幅とレイテンシ、NIC からデータセンターまで
- #7 仮想化とコンテナ — 物理サーバー 1 台が複数台になる仕組み
- #8 クラウド — 所有から賃借へ、オンプレミスから IaaS / PaaS / SaaS まで
- #9 クラウドインスタンスのスペックの読み方 — ワークロードに合わせて選ぶ
RAID — 複数のディスクを 1 枚のように #
RAID はディスクを複数枚束ねて OS に 1 枚のように見せる技術です。束ね方によって 速度 を得たり 安全性 を得たりします。方式ごとに番号が付いていて、よく使うものは 4 つです。
RAID 0 — ストライピング #
データを複数のディスクに切って分けて書きます。2 枚に分けて書けば読み書きがほぼ 2 倍速くなります。代わりに 安全性は 0 です。1 枚でも故障するとデータが散らばったまま全部使えなくなります。速度だけを狙って安全性を捨てた構成です。
RAID 1 — ミラーリング #
同じデータを 2 枚それぞれに書きます。1 枚が故障しても、もう 1 枚にそのままあるので安全です。代わりに 2 枚買っても使える容量は 1 枚分です。安全性のために容量の半分を渡す構成です。
RAID 5 / 6 — パリティ #
データを複数枚に分けて書きつつ、パリティ という復旧用の情報を一緒に分散して置きます。1 枚が故障すると、残った枚数とパリティで失ったデータを計算して復旧します。RAID 5 はディスク 1 枚の故障まで、RAID 6 は 2 枚の故障まで耐えます。ミラーリングより容量損失が少なく、ディスクが多いほど効率的です。
RAID 10 — ミラーリングとストライピングの結合 #
RAID 1 で束ねたペアをさらに RAID 0 でつなぎます。速度と安全性を一緒に得ますが、容量の半分をミラーリングに使います。性能と安全性がどちらも重要なデータベースでよく使われます。
| RAID | 得るもの | 失うもの | 耐える故障 |
|---|---|---|---|
| 0 | 速度、全容量 | 安全性なし | 0 枚 |
| 1 | 安全性 | 容量の半分 | 1 枚 |
| 5 | 安全性 + 容量効率 | 書き込み時のパリティ計算の負担 | 1 枚 |
| 6 | 安全性の強化 | パリティの負担がより大きい | 2 枚 |
| 10 | 速度 + 安全性 | 容量の半分 | ペアごとに 1 枚 |
RAID はバックアップではありません。 RAID はディスクの故障に耐えさせるだけです。誤ってファイルを消したり、ランサムウェアに感染したり、間違ったデータを上書きしたりすれば、その変更はすべてのディスクにそのまま反映されます。バックアップは別途、離れた場所に置く必要があります。
接続方式 — DAS / NAS / SAN #
RAID が「ディスクをどう束ねるか」だったなら、次の問いは「ディスクをサーバーにどう付けるか」です。3 つの方式に分かれます。
DAS — 直接接続 #
DAS (Direct Attached Storage) はディスクをサーバーに直接付ける方式です。ノートパソコンの中のディスク、サーバーに挿さったディスクがすべて DAS です。もっとも速く単純ですが、そのサーバーでしか使えず、サーバーが死ぬと一緒にアクセスが切れます。
NAS — ファイル単位、ネットワーク共有 #
NAS (Network Attached Storage) はネットワークに接続された保存装置を複数のサーバーが ファイル単位 で共有する方式です。複数のサーバーが同じフォルダを一緒に読み書きします。ファイル共有が目的のワークロードに合い、ネットワークを経由するので DAS より遅いです。
SAN — ブロック単位、専用ネットワーク #
SAN (Storage Area Network) はストレージ専用の高速ネットワークでディスクを ブロック単位 でサーバーに提供します。サーバーから見ればネットワークの向こうにあるのに自分のディスクのように見えます。ファイルではなく #4 で見たブロックをそのまま扱うので、データベースのように性能が重要なワークロードに使われます。専用ネットワークと機材が必要で高いです。
| 方式 | 単位 | 共有 | 性格 |
|---|---|---|---|
| DAS | ブロック | 1 サーバー専用 | 速く単純 |
| NAS | ファイル | 複数のサーバーで共有 | ファイル共有に適する |
| SAN | ブロック | 複数のサーバーにブロックを提供 | 速いが高い |
クラウドストレージはこの概念の置き換えです #
ここまでがこの記事の本当の価値です。クラウドストレージは新しく発明されたものではなく、上の概念をサービスとして置き換えたものです。AWS を例にすると対応がきれいに合います。
| オンプレミスの概念 | クラウドの対応 | 性格 |
|---|---|---|
| DAS (直接付いたディスク) | インスタンスストア | 速いがインスタンスを止めると消える |
| SAN (ブロック、ネットワーク) | EBS | インスタンスに付くブロックボリューム、永続 |
| NAS (ファイル、ネットワーク) | EFS / FSx | 複数のインスタンスが共有するファイル |
| RAID のミラーリング・パリティ | 多重化で保証する耐久性 | 複数のデバイスに自動複製 |
#4 で残した疑問、「インスタンスを止めるとインスタンスストアのデータは消えるのに EBS は残る理由」がここで解けます。インスタンスストアはそのインスタンスに直接付いた DAS なので、インスタンスと運命を共にします。EBS はネットワークの向こうのブロックストレージ (SAN に相当) なので、インスタンスと分かれて生き残ります。クラウドが宣伝する高い耐久性は、RAID のミラーリングとパリティの概念をデータセンター規模に拡大し、複数のデバイスに自動複製する方式で作られます。
よく出会う落とし穴 #
「RAID をしたからバックアップは要らない」 #
もっとも危険な誤解です。RAID はディスクの故障だけに耐えます。誤って消したファイルや間違って上書きしたデータ、ランサムウェアはすべてのディスクに同じく反映されます。バックアップは必ず別途置きます。
「RAID 5 なら安心」 #
RAID 5 は 1 枚の故障までしか耐えません。1 枚が故障して復旧している間に残った枚数へ負荷が集中し、2 枚目が一緒に故障する場合があります。ディスクが大きく多ければ RAID 6 や RAID 10 を検討します。
「NAS と SAN は同じもの」 #
単位が違います。NAS はファイルを共有し、SAN はブロックを提供します。データベースのようにブロックレベルの性能が必要なら NAS では足りないことがあります。
「インスタンスストアが速いからそこにデータベースを置こう」 #
速いのは確かですが、インスタンスを止めると消えます。永続データは EBS に、一時キャッシュやスクラッチ用途だけインスタンスストアに置くのが安全です。
まとめ #
今回つかんだ絵です。
- RAID はディスクを束ねて速度 (0)、安全性 (1)、両者の折衷 (5・6)、両方 (10) を得ます。
- RAID はバックアップではありません。 ディスクの故障だけに耐え、ミス・削除・ランサムウェアは防げません。
- 接続方式は DAS (直接・ブロック・専用)、NAS (ネットワーク・ファイル・共有)、SAN (専用ネットワーク・ブロック・高性能) に分かれます。
- クラウドストレージはこの概念の置き換えです。インスタンスストア = DAS、EBS = SAN、EFS = NAS、高い耐久性は RAID 多重化のデータセンター規模版です。
次回 — ネットワーク #
ここまでのリソースが 1 つのサーバーの中の話だったなら、これからサーバーの外へ出ます。NAS と SAN、EBS がすべてネットワークを経由するという点で、すでに予告された主題です。#6 ネットワーク — 帯域幅とレイテンシ、NIC からデータセンターまで では、運用でもっともよく混同される帯域幅とレイテンシの違い、距離が作るレイテンシの限界、そして同じ AZ とリージョン間とインターネットがなぜ違うのかを整理します。