RAID

はじめに

第24章はじめに

RAIDを使用すると、I/Oアクティビティが1つではなく複数の物理ディスクに分散されます。その目的は、障害が発生した場合のデータの整合性と修復の強化、最新のストレージ デバイスで使用した場合のパフォーマンスの向上です。安全性、パフォーマンス、複雑さ、およびコストによって、相対的に強さが異なるさまざまなRAIDレベルがあります。


学習目標
この章の終わりまでに、次のことができるようになります。

RAIDの概念を説明できます。
RAIDの各レベルを要約できます。
提供されている基本的な手順を使用して、RAIDデバイスを構成できます。
RAIDデバイスを複数の方法で監視できます。
ホットスペアを使用できます。


RAID

RAID
RAID（Redundant Array of Independent Disks）は、複数のディスクにI/Oを分散します。作業を並行して効率的に実行することで、SCSIなどの最新のディスク コントローラ インターフェイスのパフォーマンスが間違いなく向上します。

RAIDは、ソフトウェア（Linuxカーネルの安定した部分）またはハードウェアのいずれかに実装できます。もし使用するハードウェアRAIDが高品質であることがわかっている場合には、それを使う方がソフトウェアRAIDを使用するよりも効率的です。ハードウェアの実装では、オペレーティング システムは、実際にはRAIDの使用を直接には認識しません。それは透過的です。たとえば、RAID-5で構成された3台の512GBハード ドライブ（データ用に2つ、パリティ用に1つ）は、単一の1TBディスクのように見えます。

ただし、ハードウェアRAIDを使用する場合には欠点もあり、その1つは、ディスク コントローラに障害が発生した場合、互換性のあるコントローラに交換する必要があることです。ソフトウェアRAIDを使用する場合、同じディスクを任意のディスク コントローラに接続して使用できます。このような留意事項は、中小規模のハードウェアに関連したものに多いです。

RAIDの3つの重要な機能は次のとおりです。

ミラーリング：同じデータを複数のディスクに書き込みます。
ストライピング：データを複数のディスクに分割します。
パリティ：問題の検出と修復を可能にするための特別なデータが保存され、フォールト トレランス（耐障害性）が得られます。

したがって、RAIDを使用すると、パフォーマンスと信頼性の両方を向上させることができます。

RAIDデバイスの主目的の1つは、複数のディスクにまたがるファイルシステムを作成することです。これにより、どの1つのドライブよりも大きいファイルシステムを作成できます。RAIDデバイスは通常、複数のディスクのパーティションを組み合わせて作成されます。

RAIDデバイスのもう1つの利点は、パフォーマンスか冗長性、またはその両方を改善できることです。ストライピングは、情報を複数のデバイスに分散することでパフォーマンスを向上させ、同時書き込みが可能になります。ミラーリングは同じ情報を複数のドライブに書き込み、冗長性を向上させます。

mdadmは、RAIDデバイスの作成と管理に使用されます。

生成されたアレイ/dev/mdXは、/dev/sda1などの他のデバイスと同じように使用できます。


RAIDレベル
RAIDには、その複雑さと用途に応じて、様々なレベルが存在します。最も一般的に使用されるのは、レベル0、1、5です。

クリックして各ボックスを展開し、RAIDレベルについて学習します。

RAIDレベル

RAID 0
RAID 0はストライピングのみを使用します。データは複数のディスクに分散されます。ただし、RAIDと言う名称にもかかわらず冗長性はなく、安定性や修復機能はありません。実際、ディスクに障害が発生すると、データが失われます。ただし、I/Oタスクの並列化により、パフォーマンスを大幅に向上させることができます。

RAID 1
RAID 1はミラーリングのみを使用します。各ディスクには重複があります。これは障害からの修復に適しています。少なくとも2台のディスクが必要です。

RAID 5
RAID 5は、3台以上の物理ドライブが必要です。それぞれのディスクに分散してパリティ ブロックの記録を行います。単一のドライブに障害が発生しても、データは失われず、パフォーマンスが低下するだけです。   

RAID 6
RAID 6には、デュアル パリティ付きのストライプ ディスクがあります。2台のディスクの損失を処理できますが、少なくとも4台のディスクが必要です。RAID 5はディスクに大きなストレスを与え、修復の手順中に障害を引き起こす可能性があるため、RAID 6の重要性が増えています。

RAID 10
RAID 10は、ミラーリングとストライピングが組み合わされたデータ セットです。少なくとも4台のドライブが必要です。

通例として、ディスクを追加するとパフォーマンスが向上します。


ソフトウェアRAID構成
ソフトウェアRAIDデバイスを構成するための重要な手順は次のとおりです。

各ディスクにパーティションを作成します（fdiskのパーティションの種類はfd）
mdadmでRAIDデバイスを作成します
RAIDデバイスのフォーマットを行います
デバイスを/etc/fstabに追加します
RAIDデバイスをマウントします
RAIDの詳細をキャプチャして/etc/fstab/に設定し、恒久性を実現します。

たとえば、ディスクsdbとsdc（たとえば/dev/sdbXと/dev/sdcX）に対してfdiskを実行し、パーティションの種類がfdのものを2つ作成します。

$ sudo fdisk /dev/sdb
$ sudo fdisk /dev/sdc

次に、アレイを作成し、フォーマットし、その設定を構成ファイルに追加してマウントします。

$ sudo mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sdbX /dev/sdcX
$ sudo mkfs.ext4 /dev/md0
$ sudo bash -c "mdadm --detail --scan >> /etc/mdadm.conf"
$ sudo mkdir /myraid
$ sudo mount /dev/md0 /myraid

マウント ポイントの行を/etc/fstabに追加します。

/dev/md0 /myraid ext4 defaults 0 2

/proc/mdstatを調べて、次のようにRAIDの状態を確認できます。

$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb8[1] sdc7[0]
---------- 521984 blocks [2/2]
unused devices: <none>

RAIDデバイスを停止するには次を使用します。

$ sudo mdadm -S /dev/md0

   


RAIDの監視
次のように、RAIDデバイスを複数の方法で監視できます。

$ sudo mdadm --detail /dev/md0
$ cat /proc/mdstat

mdmonitorを使用することもできます。これには/etc/mdadm.confの設定が必要です。以下のコマンドを実行します。

$ sudo mdadm --detail /dev/mdX

これは、RAIDデバイス/dev/mdXの現在の状態を表示します。別の方法として、/procファイルシステムを調べることでも現在の状態情報を得られます。

$ cat /proc/mdstat

システム上のすべてのRAIDデバイスの状態が表示されます。

/etc/mdadm.confに次のような行を追加して、mdmonitorサービスを使用することもできます。

MAILADDR eddie@haskell.com

アレイのいずれかが起動に失敗したり劣化状態に陥いるなど、RAIDデバイスで問題が発生した場合には、eddie@haskell.com に電子メールで通知が送信されます。mdmonitorを開始する場合：

$ sudo systemctl start mdmonitor

起動時にmdmonitorの開始を有効にする場合：

$ sudo systemctl enable mdmonitor

💡
Ubuntuシステムでは、サービスはmdmonitorではなくmdadmです。


RAIDホットスペア
RAIDが提供する重要な機能の1つは、冗長性です。冗長性を阻害する障害を可能な限り迅速に修復するために、ホットスペアを使用できます。

RAIDアレイの作成時にホットスペアを作成する場合：

$ sudo mdadm --create /dev/md0 -l 5 -n3 -x 1 /dev/sda8 /dev/sda9 /dev/sda10 /dev/sda11

-x 1オプションは、1台のスペア デバイスを使用するように指定します。ホットスペアは後で追加することもできます。

以下のコマンドを実行します。

$ sudo mdadm --fail /dev/md0 /dev/sdb2

これは、指定されたデバイスに対して故障であることを示すマークを付けます。

故障したドライブの修復、もしくは障害状態において新しいドライブを使う修復は、最初に「障害のある」メンバを削除してから、次のように「新しい」メンバを追加します。

$ sudo mdadm --remove /dev/md0 /dev/sdb2
$ sudo mdadm --add /dev/md0 /dev/sde2


演習

課題 24.1: RAID デバイスの作成

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

【【これ以降は橋本さんの訳を参照】】

Normally when creating a RAID device we would use partitions on separate disks.  However, for this exercise we probablydon’t have such hardware available. Thus we will need to have two partitions on the same disk.

The process will be the same whether the partitions are on one drive or several (Although there is obviously little reason to actually create a RAID on a single device).

1.  Create two 200 MB partitions of type raid (fd) either on your hard disk using fdisk, or using LVM.
2.  Create a RAID 1 device named /dev/md0 using the two partitions.
3.  Format the RAID device as an ext4 filesystem. Then mount it at /myraid and make the mount persistent.
4.  Place the information about /dev/md0 in /etc/mdadm.conf, using mdadm.  (Depending on your distribution, this file may not previously exist.)
5.  Examine /proc/mdstat to see the status of your RAID device.

Solution 24.1

1.  If you need to create new partitions do:
$ sudo fdisk /dev/sda
and create the partitions as we have done before.  For purposes of being definite, we will call them /dev/sdaX and /dev/sdaY. You will need to run partprobe or kpartx or reboot after you are done to make sure the system is properly aware of the new partitions.

2.$ sudo mdadm -C /dev/md0 --level=1 --raid-disks=2 /dev/sdaX /dev/sdaY

3.$ sudo mkfs.ext4 /dev/md0
$ sudo mkdir /myraid
$ sudo mount /dev/md0 /myraid
and add to /etc/fstab

in /etc/fstab
/dev/md0  /myraid    ext4    defaults0 0

4.$ sudo bash -c "mdadm --detail --scan >> /etc/mdadm.conf"

5.$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 dm-14[1] dm-13[0]
204736 blocks [2/2] [UU]
unused devices: <none>

Please Note

You should probably verify that with a reboot, the RAID volume is mounted automatically.  When you are done, you probably will want to clean up by removing the line from /etc/fstab, and then getting rid of the partitions.


知識チェック

「第24章 - RAID」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。

クイズ開始


問題 24.1
サーバーに2台の新しいディスクを追加しました。次のコマンドを使用して、/devsdb1と/dev/sdc1でRAIDデバイスを作成し、ext4ファイルシステムを使用してRAIDデバイスを使用できるようにするためには、どの順番で実行すればよいですか？

i. mkfs.ext4 /dev/md0
ii. fdisk /dev/sdb; fdisk /dev/sdc
iii. reboot
iv. mdadm --create /dev/md0 ... /dev/sdb1 /dev/sdc1
v. mdadm --detail --scan >> /etc/mdadm.conf

A. ii, iv, i, v, iii
B. ii, v, i, iv, iii
C. ii, iii, iv, i, v

問題 24.2
冗長性を提供しない唯一のRAIDレベルはどれですか？

A. RAID 10
B. RAID 1
C. RAID 6
D. RAID 0
E. RAID 5

