マルチパスを使用するLinuxサーバーがあります。
マルチパスとmdadmの間に競合条件があるようです。
/dev/mapper/mpathab..などのpowerpathデバイスにraidを構築する場合、再起動後にraidはダウングレードされるか、/dev/sdXなどのデバイスに構築されるため、何らかの理由で初期設定を維持しません。
sanがvnxなので、emc powerpathをインストールし、次のようにraidを作成しました。
mdadm --verbose --create /dev/md0 --level=mirror --raid-devices=2 /dev/emcpowera /dev/emcpowerb
しかし、再起動後、攻撃隊の状態は次のようになります。
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Jun 11 15:14:47 2018
Raid Level : raid1
Array Size : 419298304 (399.87 GiB 429.36 GB)
Used Dev Size : 419298304 (399.87 GiB 429.36 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Tue Jun 12 15:25:02 2018
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : unknown
Name : cjlnwp01:0 (local to host cjlnwp01)
UUID : d2779403:bd8d370b:bdea907e:bb0e3c72
Events : 567
Number Major Minor RaidDevice State
0 65 0 0 active sync /dev/sdq
1 8 160 1 active sync /dev/sdk
mdadmが再起動時に見つけた最初のデバイスをインポートすると思いますか?
デバイスがマルチパスの一部であるときに別の/dev/sdXデバイスとして表示されないことを確認する方法。
デバイスがsdcからsdqにマウントされるたびに、下のlsblk出力には表示しないでください。
sdc 8:32 0 400G 0 disk
sde 8:64 0 400G 0 disk
sdg 8:96 0 400G 0 disk
sdi 8:128 0 400G 0 disk
sdk 8:160 0 400G 0 disk
sdm 8:192 0 400G 0 disk
sdo 8:224 0 400G 0 disk
sdq 65:0 0 400G 0 disk
emcpowera 120:0 0 400G 0 disk
└─md0 9:0 0 399.9G 0 raid1
emcpowerb 120:16 0 400G 0 disk
└─md0 9:0 0 399.9G 0 raid1
mdadmとマルチパスの間にsystemdに依存関係を追加することによって調整できる競合条件の一種はありますか?
参考までに、HPE Proliant DL380 G9サーバーのオペレーティングシステムはOEL 7.5です。
答え1
特定のデバイス名のみを考慮し、他のすべての項目は無視するようにDEVICE
項目を使用できます。mdadm.conf
デフォルトでは、mdadm
にリストされているすべてのブロックデバイスが許可されています/proc/partitions
。
DEVICE /dev/emc*
残念ながら、これは悪い解決策と見なすことができます。多くの場合、誤ったデバイスを使用する可能性があるため、これはまだ大きな混乱です。
これはループデバイスを使用するときに発生する問題でもあります。
# losetup --find --show /dev/sdi2
/dev/loop4
今/dev/loop4
とは/dev/sdc3
同じです。これは同じUUIDを共有するという意味でもあります。
# blkid /dev/sdi2 /dev/loop4
/dev/sdi2: UUID="0a73725c-7e29-4171-be5d-be31d56bf8fe" TYPE="ext2"
/dev/loop4: UUID="0a73725c-7e29-4171-be5d-be31d56bf8fe" TYPE="ext2"
今どのようなデバイスを使用する必要がありますかmount UUID=0a73725c-7e29-4171-be5d-be31d56bf8fe
?
# mount UUID=0a73725c-7e29-4171-be5d-be31d56bf8fe /mnt/tmp
# df -h /mnt/tmp
Filesystem Size Used Avail Use% Mounted on
/dev/loop4 2.0G 490M 1.4G 26% /mnt/tmp
この場合、最終的にループデバイスを選択することになりました。
このようなデバイスを複製することは大きな問題です。これは、ユニークでなければならなかったUUIDが突然もはやユニークではなく、誤ったデバイスを使用する可能性があるためです。
LVMでもこの問題が発生しました。詳細は次のとおりです。https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/ological_volume_manager_administration/duplicate_pv_multipath
残念ながら、ドキュメントは適切な解決策を提供せず、単にデバイスフィルタの解決策を提案します。
適切な解決策を得るには、2つの異なるブロックデバイスを使用して同じデータをすべて表示しないことをお勧めします。通常、これにはデータをオフセットに配置する操作が含まれます。マルチパスにデフォルトでオフセット機能があるかどうかはわかりません。
パーティションテーブル、mdadm、LUKS、LVMの場合、親デバイスの先頭にヘッダがあり、提供するサブブロックデバイスがそのヘッダからオフセットされるため、通常は無料でオフセットを取得できます。
したがって、/dev/sdx ではパーティションテーブルのみ、 /dev/sdx1 では mdadm ヘッダーのみ、 /dev/md1 では LUKS ヘッダーのみ、 /dev/mapper/cryptomd1 では LVM ヘッダーのみが表示されます。 。一方、/dev/VG/LVは、各デバイスが親デバイスからオフセットを持つため、ファイルシステムのみを表示できます。
マルチパス設定で同じ操作を実行すると、mdadmメタデータはでのみ表示され、表示されず、後者はRAIDに誤って組み合わせられません/dev/emcpowera
。/dev/sdk