iSCSI仮想IPフェイルオーバーでXen DomUルートファイルシステムが読み取り専用になる


9

私のXenサーバーはopenSUSE 11.1で、iSCSI SANクラスターに対してopen-iscsiを使用しています。SANモジュールは、イニシエーターが接続する仮想IPの背後にあるIPフェイルオーバーグループにあります。

プライマリSANサーバーがダウンした場合、セカンダリはターゲットとして機能する役割を引き受けます。これはすべてLeftHand SAN / iQソフトウェアによって処理され、ほとんどの状況でうまく機能します。

私が抱えている問題は、Xen DomUの一部で、IPフェイルオーバー後にルートファイルシステムが読み取り専用になることがあるということです。これは一貫性がなく、フェイルオーバーが発生するたびに異なるサブセットに発生します。それらはすべて同じopenSUSE 11.1ソフトウェアイメージを実行しています。

各DomUのルートファイルシステムは、Dom0のopen-iscsiによってマウントされ、Xenは標準のブロックデバイスドライバーを使用してDomUに公開します。

正確な症状は、実行中のrootとしてtouch /test「読み取り専用ファイルシステム」エラーを返すことです。ただし、の出力は、mount読み取り/書き込みでマウントされていることを示しています。もちろん、domU上の他のすべてのI / Oもこの時点で失敗しているため、マシンは完全にダウンします。xmiSCSIセッションを再接続することなくDom0から再起動するだけで、すべてが再び機能します。

Dom0側では、フェイルオーバー中のsyslogメッセージは次のようなものです。

kernel: connection1:0: iscsi: detected conn error (1011)
iscsid: Kernel reported iSCSI connection 1:0 error (1011) state (3)
iscsid: connection1:0 is operational after recovery (1 attempts) 

この問題をデバッグするためにどのレイヤーを見つけるのに苦労しています、それはDomUカーネルの何かですか?またはDom0またはXenレベルで?何らかのタイムアウトを増やすために微調整が必​​要なパラメータがどこかにあると思いますが、どこを見ればよいかわかりません。

接続されたブロックデバイスがDom0から読み取りおよび書き込み可能であるという理由だけで、open-iscsiの問題であるとは本当に思いません。

回答:


6

私は最終的に、open-iscsiドキュメントの次のアドバイスと設定を使用してこれを解決しました。

8.2 iSCSI settings for iSCSI root
---------------------------------

When accessing the root parition directly through a iSCSI disk, the
iSCSI timers should be set so that iSCSI layer has several chances to try to
re-establish a session and so that commands are not quickly requeued to
the SCSI layer. Basically you want the opposite of when using dm-multipath.

For this setup, you can turn off iSCSI pings by setting:

node.conn[0].timeo.noop_out_interval = 0
node.conn[0].timeo.noop_out_timeout = 0

And you can turn the replacement_timer to a very long value:

node.session.timeo.replacement_timeout = 86400

上記のように各LUNへの接続をセットアップした後、フェイルオーバーは、数分かかる場合でも魅力的に機能します。


1
私はmysql prod dbがiscsiボリュームに座っているときに同じ問題が発生しました。/var/log/messagesで同じエラーが発生し、ファイルシステムが読み取り専用モードになっています。このヒントは問題を解決しました。
RainDoctor 2010

2

これは、dom0で実行されているiSCSIイニシエーターの問題のようです。イニシエーターは、SCSI障害をスタックに迅速に送信しないでください。iscsi.confでConnFailTimeoutを設定することをお勧めします。これは、接続の失敗をエラーと見なし、そのエラーをSCSIスタックに送信するまでの時間を決定する設定です。

また、フェイルオーバーに実際にかかる時間も調べます。予想よりも時間がかかる場合があります。その場合、ARP関連の問題が原因でVIPフェイルオーバーに時間がかかりすぎる可能性があります。


これがまさに私が必要としていることだと思います。
2009

0

フェイルオーバー時の読み取り/書き込みエラーまたはscsiエラーを示すdom0のメッセージはありますか?もしそうなら、それはこの書き込みエラーがdomUに渡されているように見えます。domUは、iSCSIデバイスであることを「認識」していないため、基盤となるディスクがなくなってファイルシステムを読み取り専用で再マウントしたかのように動作しています(mount(1)のマンページ-を参照errors=continue / errors=remount-ro / errors=panic)。

dom0の観点からは、読み取り専用に変更されることはありません。この読み取り専用の動作は、ファイルシステムセマンティックであり、ブロックデバイスセマンティックではありません。

この時点で「他のすべてのI / Oが失敗している」とおっしゃっていますが、domUかdom0ですか?

通常、HA iSCSIソリューションを設定するときは、仮想IPテイクオーバーではなくマルチパスを使用します。これにより、ホストの可視性が向上し、iSCSIセッションが突然消えて再起動する必要がなくなります-常にそこにあり、2つしかありません。 。これはこの環境でのオプションですか?


元の説明を質問への回答で更新しました。代わりにマルチパスを調べることもできると思いますが、システムは現在の形式の仮想IPフェイルオーバーに対応しています。特にSANユニットの1つをマスターとして指定する必要があるため、マルチパスでブロックレベルのレプリケーションがどのように機能するかわかりません。ファイルシステムに関する部分を教えてくれてありがとう。それはほとんどそれを説明していると思います。「継続」モードに切り替えてみたり、ファイルシステムをXFSなどの復元力のあるものに変更したりすることを検討したいと思います。
Kamil Kisiel 09年

1
ext3に本質的に悪いことは何もありません。XFSでも同様の問題が発生します。また、onerror = continueを使用することはお勧めしません。システムはブロックが読み取り不可能であると信じ、データを失うことになります。マルチパスはミラーリングではありません。ホストでのレプリケーションについて心配する必要はありません。iSCSIを介してマスターターゲットとセカンダリターゲットの両方に接続するだけで、マスターはマスターに障害が発生した場合にスタックにエラーを渡すのではなく、セカンダリターゲットに向けられた同じコマンドを試行することがわかります。
MikeyB 2009年

レプリケーションに関する私のコメントは、2つのSANサーバーがデータを同期する必要があるという事実に関するものでした。内部的には、システムはdrbdと同様に機能し、ユニットの1つ(現在VIPを持っているユニット)がマスターであると思います。マルチパスで動作するかもしれませんが、現在のアーキテクチャから切り替えずにこの問題を解決したいと思います。それ以外の場合はこれを機能させる方法があるはずです。iSCSIボリュームを直接マウントする私のシステムでは、ボリュームが読み取り専用になるという問題は発生しません。
Kamil Kisiel、2009

-1

ええと...問題の一部は、ROとして実行していないことでもあります。ベストプラクティスは、 "/"でroをマウントし、rwを必要とするすべてのファイルシステムを個別にマウントする必要がある(つまり、/ varと/ tmp)。/ etcの下に書き込みが必要なディレクトリがある場合は、/ var / etc / pathに移動し、/ etcにシンボリックリンクする必要があります。

「/」は、シングルユーザーモードでのみRWをマウントする必要があります。

この方法で設定すると、他の提案と組み合わせると、上記の状況でのセグメンテーション違反を防ぐことができます。


2
あなたは正しい質問に答えていますか?
Kamil Kisiel 2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.