Cluster MDは、クラスタ環境内のRAID1の使用をサポートします。Cluster MDで使用されるディスクまたはデバイスは、各ノードからアクセスされます。Cluster MDの一方のデバイスに障害が発生した場合、実行時に他方のデバイスに置き換えることができ、同じ量の冗長性を提供するために再同期されます。Cluster MDでは、調整とメッセージングのためにCorosyncと分散ロックマネージャ(DLM)が必要です。
Cluster MDデバイスは、他の通常のMDデバイスのようにブート時に自動的に開始されません。クラスタ化されたデバイスはリソースエージェントを使用して開始し、DLMリソースが開始されていることを確認する必要があります。
Pacemakerを使用して実行中のクラスタ。
DLMのリソースエージェント(DLMの設定方法については、手順17.1「DLMのベースグループの設定」を参照してください)。
少なくても2つの共有ディスクデバイス。デバイス障害の場合は自動的にフェールオーバーするスペアとして追加のデバイスを使用できます。
インストール済みパッケージ cluster-md-kmp-default。
クラスタの各ノードでDLMリソースが稼動していることを確認し、リソース状態を確認するには、次のコマンドを実行します。
root #
crm_resource
-r dlm -W
Cluster MDデバイスを作成します。
既存の通常のRAIDデバイスがない場合、次のコマンドを実行し、DLMリソースが稼動しているノードでCluster MDデバイスを作成します。
root #
mdadm
--create /dev/md0 --bitmap=clustered \ --metadata=1.2 --raid-devices=2 --level=mirror /dev/sda /dev/sdb
Cluster MDはバージョン1.2のメタデータでのみ動作します。このため、--metadata
オプションを使用してバージョンを指定することが推奨されます。他の役立つオプションについては、mdadm
のマニュアルページを参照してください。/proc/mdstat
で再同期の進捗状況を監視します。
既存の通常のRAIDがすでにある場合は、最初に既存のビットマップをクリアしてからクラスタ化されたビットマップを作成します。
root #
mdadm
--grow /dev/mdX --bitmap=noneroot #
mdadm
--grow /dev/mdX --bitmap=clustered
オプションで、自動フェールオーバーのためのスペアデバイスを使用してCluster MDデバイスを作成するには、1つのクラスタノード上で次のコマンドを実行します。
root #
mdadm
--create /dev/md0 --bitmap=clustered --raid-devices=2 \ --level=mirror --spare-devices=1 /dev/sda /dev/sdb /dev/sdc --metadata=1.2
UUIDおよび関連するmdパスを取得します。
root #
mdadm
--detail --scan
このUUIDはスーパーブロックに保存されているUUIDと一致する必要があります。UUIDの詳細については、mdadm.conf
のマニュアルページを参照してください。
/etc/mdadm.conf
を開いて、mdデバイス名とそのデバイス名に関連付けられているデバイスを追加します。前のステップのUUIDを使用します。
DEVICE /dev/sda /dev/sdb ARRAY /dev/md0 UUID=1d70f103:49740ef1:af2afce5:fcf6a489
Csync2の設定ファイル/etc/csync2/csync2.cfg
を開き、/etc/mdadm.conf
を追加します。
group ha_group { # ... list of files pruned ... include /etc/mdadm.conf }
CRMリソースを次のように設定します。
Raid1
プリミティブを作成します。
crm(live)configure#
primitive
raider Raid1 \ params raidconf="/etc/mdadm.conf" raiddev=/dev/md0 \ force_clones=true \ op monitor timeout=20s interval=10 \ op start timeout=20s interval=0 \ op stop timeout=20s interval=0
raider
リソースをDLM用に作成したストレージのベースグループに追加します。
crm(live)configure#
modgroup
g-storage add raider
add
サブコマンドは、デフォルトで新しいグループメンバーを追加します。
まだ実行されてない場合は、g-storage
グループのクローンを作成して、すべてのノードで実行できるようにします。
crm(live)configure#
clone
cl-storage g-storage \ meta interleave=true target-role=Started
show
で変更内容をレビューします。
すべて正しいと思われる場合は、commit
で変更を送信します。
デバイスを既存のアクティブなCluster MDデバイスに追加するには、最初にそのデバイスが各ノード上で「表示可能」であることを、コマンドを実行して確認します(cat /proc/mdstat
)。デバイスが表示できない場合、コマンドは失敗します。
1つのクラスタノード上で次のコマンドを使用します。
root #
mdadm
--manage /dev/md0 --add /dev/sdc
追加された新しいデバイスの動作は、Cluster MDデバイスの状態によって異なります。
ミラーリングされたデバイスの1つのみがアクティブである場合、新しいデバイスはミラーリングされたデバイスの2番目のデバイスになり、回復処理が開始されます。
Cluster MDデバイスの両方のデバイスがアクティブな場合、新たに追加されたデバイスはスペアデバイスになります。
多くの場合、障害は一時的なもので、単一ノードに限定されます。任意のノードでI/O処理中に障害が発生した場合、クラスタ全体のデバイスがfailedとマーク付けされます。
たとえば、あるノードでケーブル障害が発生した場合などに、このようになることがあります。問題を修正した後で、デバイスを再追加できます。新しいパーツを追加してデバイス全体を同期するのではなく、古いパーツのみが同期されます。
デバイスを再追加するには、1つのクラスタノード上で次のコマンドを実行します。
root #
mdadm
--manage /dev/md0 --re-add /dev/sdb
置き換えるために実行時にデバイスを削除する前に、次の操作を実行します。
/proc/mdstat
をイントロスペクトしてデバイスに障害が発生しているか確認します。デバイスの前にある(F)
を探します。
1つのクラスタノード上で次のコマンドを実行して、デバイスに障害発生させます。
root #
mdadm
--manage /dev/md0 --fail /dev/sda
1つのクラスタノード上で次のコマンドを実行して障害が発生したデバイスを削除します。
root #
mdadm
--manage /dev/md0 --remove /dev/sda