このiSCSIターゲットをいくつかのDebianベースのKVM仮想マシンホストに使用します。ターゲットの各冗長コントローラーには4つのイーサネットポートがあります。イニシエーターにも同様です。2つのスイッチを使用します( ZyXEL GS-2200-24)の間にトランクがあり、VLANが各パスを分離します。ジャンボフレームとフロー制御も有効にしました。
このDebianリリースのMPIOシステムは素晴らしいです:iSCSIターゲットにログインする前にdm-multipathがロードされている限り、すべてが正常に機能しますTM 事前にscsi_dh_rdacをロードする場合は、構成ファイルなしで。
これが最初の問題です。/etc/multipath.conf
ファイルを提供すれば、デフォルトのいくつかを変更できます。 use_friendly_names yes
でテストしました。これにより、見栄えの悪いWWIDを使用する代わりに、mpath0
に/dev/mapper/
リンクが正常に作成されます。しかし、rr_min_io
をデフォルトの1000から8に変更しようとすると、無視されます。だから私はこのかわいいダンスをします:
dmsetup suspend mpath0
dmsetup table mpath0 | sed 's, 1000, 8,g' | dmsetup reload mpath0
dmsetup resume mpath0
これにより、ラウンドロビンが開始される前にクアッドリンクの1つに送信される要求の数が、デフォルトの1000から8に変更されます。これにより、実際にはマルチパステーブルが変更されます(multipath -v3 | grep params
による)。新しいマルチパスコードでこのデフォルトをどのように構成しますか?マルチパスがすべて動的で自己構成になる前にこれが機能したと思います...少なくとも私が読んだすべてのベンダーのドキュメント、およびWeb上の他の議論は、これが機能したと想定しています。
dd bs=100M count=50 if=/dev/zero of=/dev/mapper/mpath0-part1 & sync
を使用した単純な順次書き込みは、この変更により、最大135MB /秒から最大260MB /秒になります。これが2番目の問題です。これは、イニシエーターとターゲットの間に実際にある4Gbpsではなく約2Gbpsです。 iostat -kd 1
を1秒間実行すると、更新が実行され、4つのパスのうち2つだけがいっぱいになります。
このLUNはショートストロークです。その16GBは、600 6Gbpsの12スピンドルRAID10アレイの先頭にありますSASディスクは15,000rpmで回転します。これで飽和するのに十分であると期待していました。私が持っている4Gbps;私は正しいですか?
rr_min_io
を変更するために使用した手法は、multipathdが内部で行うことです。実行中のマップの値を調整するユーザーフレンドリーな方法はecho reconfigure | multipathd -k
です。
例:これは、rr_min_io
が現在128であるNetAppです。
#dmsetup table 360a98000534b504d6834654d53793373:033484800マルチパス01 alua 21ラウンドロビン02 1 8:16 128 8:32128ラウンドロビン02 1 8:64 128 8:48 128 360a98000534b504d6834654d53793373-part1:0 33484736 linear 251:0 64
/etc/multipath.conf
が変更されたため、rr_min_io
は1000
になりました。次に、
#echo reconfigure | multipathd -k multipathd> reconfigure ok
変更を確認するには:
#dmsetup table 360a98000534b504d6834654d53793373:033484800マルチパス01 alua 21ラウンドロビン02 1 8:16 1000 8:321000ラウンドロビン02 1 8:48 1000 8:64 1000 360a98000534b504d6834654d53793373-part1:0 33484736 linear 251:0 64
Multipathdが、使用する追加の変数の広告とレポートでより良い仕事をすることができることに同意します。 delta multipathdが報告しないものは何でも、dmsetupは報告しますが、それは必ずしもdmsetupを直接使用することがそれらの設定を再構成するための最良のアイデアであることを意味するわけではありません。再構成は、ほぼすべてに対して機能します。
導入ガイドによると、SANはアクティブ-アクティブですが、この用語は業界で誤用されています。実際には「デュアルアクティブ」である可能性があります。つまり、LUNには単一のストレージからのみアクセスできます。プロセッサはいつでも使用できますが、両方のコントローラをアクティブにして個別のLUNを駆動することができ、同じLUNに負荷分散することはできません。
ここではp79 負荷分散セクションの下。
1つのTCP接続の2つのセッションがホストから各コントローラーに構成され(ポートごとに1つの セッション)、合計4つのセッション)。パスフェイルオーバードライバーは、同じコントローラー上のポートへのセッション間で I/Oアクセスのバランスを取ります。各コントローラーに仮想ディスクがある二重 構成では、各[.____を使用してセッションを作成します。 。]両方のコントローラーのiSCSIデータポートは帯域幅を増やし、負荷分散を提供します
デュプレックス構成のコンテキストで仮想ディスクが複数使用されていることに注意してください。同じディスクを呼び出すことはありません。これは、デュアルアクティブ展開のようです。真のアクティブ-アクティブSANは通常、ファイバーチャネル展開用に予約されています。これを実現するiSCSISANが存在する可能性がありますが、iSCSIを広範囲に展開していませんが、私はこれに遭遇していません。
無視された値rr_min_ioの背後にある本当の問題は、実行中のカーネルとマルチパスツールの間の単純でサイレントなABIの不一致です。