web-dev-qa-db-ja.com

lpfc +マルチパス+ ubuntu-パスが切り替わり続ける

Emulex(lpfc)を使用したマルチパスの構成で問題が発生します。データの破損は検出されませんが、SAN管理者は、パスが20秒ごとに切り替えられていることを示すツールを持っています。詳細は次のとおりです。

# multipath -l
san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM     ,1815      FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=0][active]
 \_ 3:0:0:0 sdb 8:16  [active][undef]
\_ round-robin 0 [prio=0][enabled]
 \_ 4:0:0:0 sdc 8:32  [active][undef]

複数のパスが同じLUNに接続されています。

# /lib/udev/scsi_id -g -u -d /dev/sdb
3600a0b80002a042200002cb44a9a29ca
# /lib/udev/scsi_id -g -u -d /dev/sdc
3600a0b80002a042200002cb44a9a29ca

これが/etc/multipath.confです

defaults {
        udev_dir                /dev
        polling_interval        5
        selector                "round-robin 0"
        path_grouping_policy    failover
        getuid_callout          "/lib/udev/scsi_id -g -u -d /dev/%n"
        path_checker            readsector
        failback                immediate
        user_friendly_names     yes
}
multipaths {
        multipath {
                wwid    3600a0b80002a042200002cb44a9a29ca
                alias   san01
        }
}

fdisk -l

Disk /dev/sdb: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x61b4bf95

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       13054   104856223+  83  Linux

Disk /dev/sdc: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x61b4bf95

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       13054   104856223+  83  Linux

Lpfcの詳細度を上げたところ、dmesgで次のようになりました。

[ 2519.241119] lpfc 0000:07:00.0: 1:0336 Rsp Ring 0 error: IOCB Data: xff000018 x37a120c0 x0 x0 xeb x0 x1b108db xa29b16
[ 2519.241124] lpfc 0000:07:00.0: 1:(0):0729 FCP cmd x12 failed <0/0> status: x1 result: xeb Data: x1b1 x8db
[ 2519.241127] lpfc 0000:07:00.0: 1:(0):0730 FCP command x12 failed: x0 SNS x0 x0 Data: x8 xeb x0 x0 x0
[ 2519.241130] lpfc 0000:07:00.0: 1:(0):0716 FCP Read Underrun, expected 254, residual 235 Data: xeb x12 x0
[ 2519.241275] lpfc 0000:07:00.0: 1:0336 Rsp Ring 0 error: IOCB Data: xff000018 x37a14c48 x0 x0 xd2 x0 x1b208e6 xa29b16
[ 2519.241279] lpfc 0000:07:00.0: 1:(0):0729 FCP cmd x12 failed <0/0> status: x1 result: xd2 Data: x1b2 x8e6
[ 2519.241283] lpfc 0000:07:00.0: 1:(0):0730 FCP command x12 failed: x0 SNS x0 x0 Data: x8 xd2 x0 x0 x0
[ 2519.241286] lpfc 0000:07:00.0: 1:(0):0716 FCP Read Underrun, expected 254, residual 210 Data: xd2 x12 x0

誰かがこの設定に何か問題があるのを見ることができますか?ありがとうございました。


Jannebのコメントに基づいて、multipath.confの構成を次のように変更しました。

defaults {
        udev_dir                /dev
        polling_interval        5
        selector                "round-robin 0"
        path_grouping_policy    multibus
        getuid_callout          "/lib/udev/scsi_id -g -u -d /dev/%n"
        failback                immediate
        user_friendly_names     yes
}

これは今与えます:

san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM     ,1815      FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=2][active]
 \_ 3:0:0:0 sdb 8:16  [active][ready]
 \_ 4:0:0:0 sdc 8:32  [active][ready]

ただし、しばらくすると[アクティブ] [undef]になり、[準備完了]に戻ります。

ああ、何かに気づきました。「multipath -l」を実行すると[undef]が表示されますが、「multipath-ll」を実行すると[ready]になります。

-l     show the current multipath topology from information fetched in sysfs and the device mapper
-ll    show the current multipath topology from all available information (sysfs, the device mapper, path checkers ...)

設定が間違っていますか?どうすればデバッグできますか?ありがとう。


助けてくれてありがとうjannebとzerolagtime。

これがどのように複雑になるかです。私はこれをすべて説明する必要はないと思いました。現在、ハードウェアのセットアップの取り違えに傾いています。

実際には、FCを使用して同じLUNに接続されている2つのサーバーがあります。 OSレベルでは、1つのサーバーのみがファイルシステムにアクセスします(ただし、同じLUNが両方に公開されます)。これは、ext3(クラスタリングファイルシステムではない)であるためです。サーバー1がダウンすると、サーバー2が起動して(linux-ha)、ファイルシステムをマウントします。

サーバー1(マルチパス-ll):

san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM     ,1815      FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=2][active]
 \_ 3:0:0:0 sdb 8:16  [active][ready]
 \_ 4:0:0:0 sdc 8:32  [active][ready]

サーバー2(マルチパス-ll):

san01 (3600a0b80002a042200002cb44a9a29ca) dm-2 IBM     ,1815      FASt
[size=100G][features=0][hwhandler=0]
\_ round-robin 0 [prio=2][active]
 \_ 3:0:0:0 sdb 8:16  [active][ready]
 \_ 4:0:0:0 sdc 8:32  [active][ready

サーバー1のポート名:

# cat /sys/class/fc_Host/host3/port_name 
0x10000000c96c5fdb
# cat /sys/class/fc_Host/host4/port_name 
0x10000000c96c5df5
root@web-db-1:~# 

サーバー2のポート名:

#cat /sys/class/fc_Host/host3/port_name 
0x10000000c97b0917
# cat /sys/class/fc_Host/host4/port_name 
0x10000000c980a2d8

この設定は間違っていますか? LUNが両方のサーバーに公開される方法は間違っていますか?ハードウェアの接続が間違っていると思いますが、何が間違っている可能性がありますか? server1 path_checkerがserver2の操作に干渉する可能性はありますか?ありがとう。

2
A4A

構成がおかしいようです。通常、同じデバイスへのパスは4つあります(つまり、マルチパスデバイスごとに4つの/ dev/sdXデバイス)。アレイコントローラーは通常、各パスの優先度についてホストに通知できるため、優先度の高い2つのパスと、優先度の低い2つのパスがあります。次に、dm-multipathは2つの優先度の高いパス(デフォルトはrr_min_io = 100の「セレクター」オプション)でIO)を多重化します。これで、2つのパスグループが両方とも同じ優先順位であるため、おそらくdm-multipathは両方にIOを広げていますが、これはあなたのSAN管理者があなたに望んでいることではないかもしれません。もう一つの奇妙なことは、デバイスが「ready」ではなく「undef」でマークされています。さらに別の奇妙なことは、パス番号が非常に奇妙に見えることです(すべてが同じパスに沿っていますか?)。すべてが適切にケーブル接続されているか、適切にゾーニングされているかなどです。

「multipath-ll」からの一般的な出力は次のようになります。

 sanarch3(3600508b4000683de0000c00000a20000)dm-6 HP、HSV200 
 [size = 2.0T] [features = 1 queue_if_no_path] [hwhandler = 0] [rw] 
\_ラウンドロビン0 [prio = 100] [active] 
\_ 0:0:0:5 sdc 8:32 [active] [ready] 
\_ 1:0:0:5 sdk 8: 160 [アクティブ] [準備完了] 
\_ラウンドロビン0 [prio = 20] [有効] 
\_ 0:0:1:5 sdg 8:96 [アクティブ] [準備完了] 
\_ 1:0:1:5 sdo 8:224 [アクティブ] [準備完了] 

4つのパスが2つの優先グループにグループ化されており、IOはデバイスsdcとsdkに対して実行されますが、sdgとsdoはアイドル状態であり、障害時にのみ使用されます。

[〜#〜] edit [〜#〜]したがって、4つのパスが表示される理由は、2つのHBAポートがあり、アレイに2つの冗長コントローラーがあるためです。次に、クロスネットワーク接続を提供する最後のスイッチレイヤーを備えた2つの冗長ネットワークがあります。したがって、両方のHBAは両方のコントローラーを認識します。したがって、各LUNに4つのパスがあります。上記のSCSIIDの番号付けの例では、[ホストコントローラーID]:[チャネルID]:[ターゲットコントローラーID]:[LUNID]のようになっていることがわかります。上記で確認できるのは、アクティブパスが両方ともコントローラー#0にあることです。この場合、コントローラー#0がたまたまLUNを「所有」しているためです。 IOは他のコントローラーを介して可能ですが、他のコントローラーは(コントローラーの実装に応じて)IOを所有者に転送する必要があるため、パフォーマンスが低下しますしたがって、コントローラーは、コントローラー#0に向かうパスの優先度が高いことを報告します。

したがって、あなたの質問から、他のコントローラーへのパスがまったくないことがわかります。また、冗長なコントローラーとネットワークがない場合、そもそもなぜマルチパスを気にする必要があるのでしょうか。

3
janneb

IBM SANは通常、ドキュメントに明確に定義されたmultipath.confの例がありますが、そこから始めませんでしたか?その部分は 読者への演習 のままにしておきます。また、あなたのSAN管理者はあなたにもう少しサポートを借りています。いくつかの簡単なポイント

  • あなたが説明したようなパスの振動は、通常、パスチェッカーが正しく構成されていないことが原因です。2回の反復で、readsector0からnone、おそらくそのメーカーとモデルのマルチパスのデフォルトを採用しています、おそらくtur(テストユニットの準備ができています) 。

  • 優先度チェッカー、優先度チェッカー、優先度は定義されていません。

  • ドキュメントで明確に定義されているハードウェアハンドラーがおそらく必要です。

私が見つけた最高のIBM1815戦争物語 これは 、要約:

  • Rdacドライバーmodprobe scsi_dh_rdacをインストールし、initrdに追加します
  • 次のmultipath.confを使用します。

blacklist {
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^hd[a-z]"
    devnode "^sda"
    device {
        vendor "Maxtor*"
        product "OneTouch*"
    }
}
blacklist_exceptions {
    device {
            vendor  "IBM"
            product "1815*"
    }
}
defaults {
    failback                immediate
    no_path_retry           queue
    user_friendly_names     no
    path_grouping_policy    failover
}
devices {
    device {
            vendor                  "IBM"
            product                 "1815*"
            failback                manual
            hardware_handler        "1 rdac"
            path_checker            rdac
            prio_callout            "/sbin/mpath_prio_rdac /dev/%n"
    }
}

どうなるか教えてください。幸運を!

1
ppetraki

まず、マルチバスを定義しますが、ストレージがこれをサポートしていると確信していますか? SAN管理者に、ストレージが実際のアクティブ/アクティブストレージであるかどうかを確認してください。アクティブパッシブストレージでは、常にコントローラーから切り替えることはできません。これにはストレージのコストがかかり、問題が発生します。クライアント側でも同様です。最初の構成では、構成で定義されていませんでした。つまり、マルチパスでデフォルトの構成定義を使用するか(/usr/share/doc/mulitpath.conf.anottedを確認)、multipathdの出力を確認してください。 -k show configを使用すると、より見やすくなります(とにかく、ストレージの仕様を使用してデフォルトの構成を確認してください。常に最適であるとは限りません。HDSなどで問題が発生しました)

2つ目は、FSで整合性の問題はないと言ったのですが、FSはマルチパスデバイスを使用していますか?LVMを使用していると仮定した場合、lvmのフィルター設定を確認しましたか? .conf?これが適切に設定されていない場合、lvmはMPIOを使用する代わりにデバイスを直接使用します。lvmはコントローラーの使用を強制するため、これはアクティブ/パッシブストレージでさらに問題になる可能性があります。 1つ....よろしくお願いします

0
Mike