22.3.2. mdadmを使用したマルチパスデバイスの作成
RAID アレイの作成に加えて、mdadm を使用して、個々の SCSI LUN (ディスクドライブ)への複数の I/O パスをサポートするハードウェアを利用することもできます。マルチパスストレージの目的は、ハードウェア障害や個々のパスの飽和時のデータの可用性を継続しています。この設定には、共通の SCSI LUN (ディスクドライブ)にアクセスする複数のパス(それぞれ独立した仮想コントローラーとして機能する)が含まれるため、Linux カーネルは各パスを介して各共有ドライブを一度検出します。つまり、
/dev/sda
と呼ばれる SCSI LUN (ディスクドライブ)には、特定の設定によっては /dev/sdb
、/dev/sdc
などとしてアクセスすることもできます。
I/O パスに障害が発生したり、飽和状態になったりした場合にアクセス可能な単一のデバイスを提供するために、mdadm にはその
level
オプションに追加のパラメーターが含まれています。このパラメーター multipath
は、I/O パスに障害が発生した場合に、あるパス方向から別のパスに I/O 要求を再ルーティングするように Linux カーネルの md レイヤーに指示します。
マルチパスデバイスを作成するには、
/etc/mdadm.conf
ファイルを編集して、ハードウェア設定を反映する DEVICE
行および ARRAY
行の値を定義します。
注記
以前の RAID の例(
/etc/mdadm.conf
で指定された各デバイスは異なる物理ディスクドライブを表す必要がある)とは異なり、このファイルの各デバイスは同じ共有ディスクドライブを指します。
マルチパスデバイスの作成に使用されるコマンドは、RAID デバイスの作成に使用したコマンドと似ています。相違点は、
multipath
パラメーターを使用した RAID レベルパラメーターの代わりとなります。
mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 Continue creating array? yes mdadm: array /dev/md0 started.
mdadm コマンドラインの長さが原因で、2 行に分割されました。
この例では、ハードウェアは 4 つの個別の SCSI デバイスとして提示された 1 つの SCSI LUN で設定され、それぞれが異なるパスによって同じストレージにアクセスします。マルチパスデバイス
/dev/md0
が作成されると、/dev/md0 を参照するすべての I/O 操作は、/dev/sda1
、/dev/sdb1
、/dev/sdc1
、または /dev/sdd1
に転送されます(現在アクティブで動作しているパスにより異なります)。
/dev/md0
の設定は、mdadm --detail /dev/md0 コマンドを使用してより密接に確認でき、実際、マルチパスデバイスであることを確認できます。
/dev/md0: Version : 00.90.00 Creation Time : Tue Mar 2 10:56:37 2004 Raid Level : multipath Array Size : 3905408 (3.72 GiB 3.100 GB) Raid Devices : 1 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Mar 2 10:56:37 2004 State : dirty, no-errors Active Devices : 1 Working Devices : 4 Failed Devices : 0 Spare Devices : 3 Number Major Minor RaidDevice State 0 8 49 0 active sync /dev/sdd1 1 8 17 1 spare /dev/sdb1 2 8 33 2 spare /dev/sdc1 3 8 1 3 spare /dev/sda1 UUID : 4b564608:fa01c716:550bd8ff:735d92dc Events : 0.1
mdadm のもう 1 つの機能は、デバイス(RAID アレイのメンバーまたはマルチパス設定のパス)を強制的に操作設定から削除する機能です。以下の例では、
/dev/sda1
に faulty のフラグが付けられ、が削除され、最後に設定に戻されます。マルチパス設定では、これらのアクションは現時点で実行された I/O アクティビティーには影響しません。
# mdadm /dev/md0 -f /dev/sda1 mdadm: set /dev/sda1 faulty in /dev/md0 # mdadm /dev/md0 -r /dev/sda1 mdadm: hot removed /dev/sda1 # mdadm /dev/md0 -a /dev/sda1 mdadm: hot added /dev/sda1 #