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の操作に干渉する可能性はありますか?ありがとう。
構成がおかしいようです。通常、同じデバイスへのパスは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に向かうパスの優先度が高いことを報告します。
したがって、あなたの質問から、他のコントローラーへのパスがまったくないことがわかります。また、冗長なコントローラーとネットワークがない場合、そもそもなぜマルチパスを気にする必要があるのでしょうか。
IBM SANは通常、ドキュメントに明確に定義されたmultipath.confの例がありますが、そこから始めませんでしたか?その部分は 読者への演習 のままにしておきます。また、あなたのSAN管理者はあなたにもう少しサポートを借りています。いくつかの簡単なポイント
あなたが説明したようなパスの振動は、通常、パスチェッカーが正しく構成されていないことが原因です。2回の反復で、readsector0からnone、おそらくそのメーカーとモデルのマルチパスのデフォルトを採用しています、おそらくtur(テストユニットの準備ができています) 。
優先度チェッカー、優先度チェッカー、優先度は定義されていません。
ドキュメントで明確に定義されているハードウェアハンドラーがおそらく必要です。
私が見つけた最高のIBM1815戦争物語 これは 、要約:
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"
}
}
どうなるか教えてください。幸運を!
まず、マルチバスを定義しますが、ストレージがこれをサポートしていると確信していますか? SAN管理者に、ストレージが実際のアクティブ/アクティブストレージであるかどうかを確認してください。アクティブパッシブストレージでは、常にコントローラーから切り替えることはできません。これにはストレージのコストがかかり、問題が発生します。クライアント側でも同様です。最初の構成では、構成で定義されていませんでした。つまり、マルチパスでデフォルトの構成定義を使用するか(/usr/share/doc/mulitpath.conf.anottedを確認)、multipathdの出力を確認してください。 -k show configを使用すると、より見やすくなります(とにかく、ストレージの仕様を使用してデフォルトの構成を確認してください。常に最適であるとは限りません。HDSなどで問題が発生しました)
2つ目は、FSで整合性の問題はないと言ったのですが、FSはマルチパスデバイスを使用していますか?LVMを使用していると仮定した場合、lvmのフィルター設定を確認しましたか? .conf?これが適切に設定されていない場合、lvmはMPIOを使用する代わりにデバイスを直接使用します。lvmはコントローラーの使用を強制するため、これはアクティブ/パッシブストレージでさらに問題になる可能性があります。 1つ....よろしくお願いします