Linux用フォールトトレラントiSCSIルートファイルシステム

Linux用フォールトトレラントiSCSIルートファイルシステム

iSCSI経由でリモートNASでホストされているLVMボリュームからマウントされたファイルシステムを使用して、一部のLinuxサーバーを仮想化環境に移行しようとしています。私はそれらを始めることができ、問題なく完璧に実行されました。

しかし、NASサーバーはWindowsベースであり、Microsoftがパッチを発表すると自動的にパッチを適用して再起動する。再起動すると、すべての仮想サーバーのファイルシステムがエラーを検出し、読み取り専用モードになります。読み取り/書き込みで再マウントしようとしましたが、カーネルがファイルシステムを書き込み禁止としてマークして失敗しました。私が見つけた唯一の回復方法は、virtを終了して対応するLVMボリュームをfsckしてから再起動することです。

virt は、次の形式の fstab エントリを使用して、これらの LVM ボリュームをマウントします。

/dev/xvda2 / ext3 noatime,nodiratime,errors=remount-ro 0 1

または

/dev/xvda2 / ext4 errors=remount-ro 0 1

仮想ホストオペレーティングシステムには、これらの中断にもかかわらず、読み取り/書き込みモードで動作し続けるNASサーバー上のLVM / iSCSIマウントもあります(同じボリュームグループにあっても)。 fstabエントリは次のとおりです。

/dev/mapper/nas6-dom0   /mnt/nas6   ext4    _netdev     0   0

これにより、ゲストからfstabエントリを削除するとフォールトトレランスが提供されると思われますが、errors=remount-roこれについては少し不安です。ファイルシステムで実際のエラーが発生した場合、fs への書き込みを継続できるようにすると問題が発生する可能性があります。短期的には悪いです。

NASが再起動された後も仮想ゲストが引き続き実行されるように、この問題を解決するためのベストプラクティスは何ですか?

答え1

Recovery Timeout接続が確立した後、リアルタイムでパラメータを変更する方法もあります。

echo 86400 > /sys/class/iscsi_session/session28/recovery_tmo

session28セッションIDに置き換えてください。

答え2

~によるとiSCSIドキュメントを開く:

8.2 iSCSIルートのiSCSI設定

iSCSIディスクを介してルートパーティションに直接アクセスする場合、iSCSIタイマーはiSCSIレイヤーがセッションをリセットしようとする機会を複数回持ち、コマンドがSCSIレイヤーにすばやくキューに追加されないように設定する必要があります。デフォルトでは、必要なのはdm-multipathを使用するときのものとは反対です。

この設定では、次の設定でiSCSI Pingをオフにできます。

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

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

replacement_timer を非常に長い値に設定できます。

node.session.timeo.replacement_timeout = 86400

デフォルト設定replacement_timeoutは120秒で、NASの再起動には2分30秒かかりました。したがって、このタイムアウトが経過すると、iSCSIセッションと保留中のすべてのI / O要求が破棄され、仮想サーバーのディスク障害が発生し、読み取り専用に切り替わります。方法。

上記のようにタイムアウト設定を変更すると、今後少なくとも24時間にわたってNASがハングする状況を防ぐことができます。下落がこれより長く続く場合は、とにかく対処する必要があるより大きな問題があります。

関連情報