マルチパスとmdadmは/dev/sdXデバイスを隠します。

マルチパスとmdadmは/dev/sdXデバイスを隠します。

マルチパスを使用する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

関連情報