統合されたオールインワンESXi/ZFS-Storageサーバーでは、ストレージVMはベアメタルディスクを使用し、ファイルシステムをNFS(またはiSCSI)経由でESXiにエクスポートします。他のVMのプールストレージでは、ストレージVMを更新するときに問題が発生します。これは、実行中の多数のVMがストレージVMに依存しており、通常のサーバーからドライブをプルするのと同じNFS.AllPathsDown
または同様の原因でタイムアウトするためです。シャットダウンせずに。
もちろん、すべてのVMをシャットダウンすることは可能ですが、これは非常に時間がかかり、面倒にもなります(またはスクリプト化する必要があります)。 VMを別のホストに移動することは可能かもしれませんが、さらに時間がかかり、単一のマシンで十分な小規模なセットアップでは不可能な場合があります。 VMの一時停止は機能する可能性がありますが、非常に遅くなります(シャットダウンよりも遅くなる場合があります)。
kill -STOP [pid]
で見つけた後、ps -c | grep -v grep | grep [vmname]
で停止し、ストレージVMをアップグレード/再起動してから、kill -CONT [pid]
を使用してVMプロセスの実行を続行します。reboot -f
経由またはLinuxではkexec-reboot
経由で利用可能)の組み合わせであり、数分ではなく数秒かかります、およびESXiのNFSタイムアウト(NFS接続が失われると、ストレージが永続的にダウンしていると見なされるまで、すべてのI/Oが120秒間中断されます)。再起動時間がESXiNFSウィンドウ内にある場合、理論的には、エラー訂正のために1分間応答しないが、その後通常の動作を再開するディスクに匹敵するはずです。さて、私の質問は次のとおりです。
最初の2つの回答を受け取った後、私は質問を十分に明確に表現していないか、簡潔にするために情報を省略しすぎていると思います。私は次のことを知っています:
私の提案は、この問題を完全に回避することです。コストの増加と完全な再構築は目立たないことだとおっしゃいましたが、この状況で考慮できるのは、2ノードのフェールオーバークラスターのホストに2つのストレージVMを配置することです。これにより、クラスターが提供するNFSまたはiSCSIの可用性に影響を与えることなく、どちらか一方にパッチを適用できます(両方を同時にパッチすることはできません)。それはまだサポートされているソリューションではありませんが、ストレージのリソースオーバーヘッド(主に2番目のストレージVMに与えるメモリの量)が増えるという犠牲を払って、少なくともある程度のメンテナンスの柔軟性を可能にします。
アーキテクチャの変更が完全に受け入れられない場合、最も安全なオプションはVMをシャットダウンすることです。
次善の解決策は、VMで休止状態を有効にすることです。ハイバネーションにより、すべてのファイルシステムが静止し、破損の可能性を回避できます。
次に、メモリ状態でVMのスナップショットを取り、VMのプロセスを強制的に終了し、完了したらスナップショットに戻すことができます。これにより、データが失われる可能性のある小さなウィンドウが発生しますが、私はデータの損失が許容できないメンテナンスウィンドウの外でこれを試すことは絶対にないので、これはかなり重要ではないはずです。このソリューションは、スナップショットを作成するのと同じくらい迅速で、VMがディスクの損失について文句を言わないようにしますが、発生します。潜在的なデータ損失。
最後に、プロセスを一時停止する(そして実際に機能することをテストした)場合は、最初にゲスト内のすべてのディスクを同期することを強くお勧めします(Linuxでは、これは/ bin/syncで実行されます。ユーティリティが提供されますSysInternals for Windows: http://technet.Microsoft.com/en-us/sysinternals/bb897438.aspx )、時計が大きく戻らないように、メンテナンスをすばやく実行します。
潜在的な副作用については、ADに接続されたマシンは(デフォルトで)DCの時間から5分以内である必要があります。したがって、VMが通常のシャットダウン以外に継続的に利用できない解決策の後は、再開されたゲストにクロックの更新を強制することをお勧めします。データベースサーバーでは、これらを実行しないでください。サーバーがビジー状態のときは、ファイルシステムが破損する可能性が高くなります。
通常のシャットダウンまたは高可用性ストレージ以外のすべてのオプションの主なリスクは、破損のリスクです。バッファ内にドロップされるI/Oが存在する可能性があり、アプリケーションが誤って正常に完了したと見なす可能性があります。さらに悪いことに、I/Oは、より最適な書き込みパターンのために、下位層によって並べ替えられている可能性があります。これにより、データが部分的に順不同で書き込まれる可能性があります。おそらく、DB行のデータが書き込まれる前に行数が増加したか、チェックサムされたデータが物理的に変更される前にチェックサムが更新されました。これは、ストレージへの同期書き込みのみを許可することで軽減できますが、パフォーマンスが犠牲になります。
良い質問...
しかし、とにかく、なぜNFSサーバーを再起動する必要があるのですか?
オールインワンデザイン もう合理的ではありません。科学実験または小さなホームラボの状況として、確かに。ただし、他のソリューションと同様に、必要に応じてダウンタイムとメンテナンスウィンドウを組み込むことを期待してください。
だから...
このタイプのダウンタイムが発生しない場合は、オールインワンストレージを実行してVMセットアップを実行するか、従来のSAN =ストレージ(または低コストバージョン)および複数のVMホスト。
- どちらの方法が望ましいですか、それとも同じように良い/悪いですか?
どちらでもない。
これはひどい設計のコストです。VMをシャットダウンし、ストレージで作業してVMその後、他のVMを再起動する以外は何もしないで、この状況を悪化させることはありません。サポートされている/サポート可能なアーキテクチャを使用して、誰かにセットアップを再設計してもらいます。
- データベース、Active Directoryコントローラー、ユーザーがジョブを実行しているマシンなどの特殊なケースでの意図しない副作用は何ですか?
それは本質的に予測不可能であり、これをもう一度行った場合、今回起こるかもしれないことは起こらないかもしれません。サポートできません。
- どこに注意する必要がありますか?リンクされたブログへのコメントは、たとえばCPUがフリーズしたときに時間管理の問題が発生する可能性があることを示しています。
これに建設的に答えるのは難しいです。