VMware vSphereのスナップショット統合処理は、常に問題を抱えています。特に大規模でアクティブな仮想マシンで問題となりやすいです。しかし、vSphere 6では、過去の問題を解決するためのいくつかの変更を導入しています。
新しい統合方法
vSphere 6.0以前では、VMスナップショットの統合とコミットは、同じ手順で行われます。ベース仮想ディスクとスナップショットディスクを“凍結”させるために追加のヘルパースナップショットが作成され、スナップショットディスクの変更をベースディスクに結合すると、ヘルパースナップショットもコミットされ、いくつかのポイントでI/Oがスナップショットではなく、オリジナルのディスクに発生します。
この処理は、シンプルに見えますが、詳細を見ると、運用環境に問題を引き起こしかねない動作をしています。仮想マシンに標準的なI/O書き込みがあった場合、ヘルパースナップショットのサイズも成長していきます。そして、ベースディスクに変更されたデータをコミットするため、追加のヘルパースナップショットを作成するかもしれません。
以前はオリジナルチェーンを統合している間、ヘルパースナップショットに新しいI/Oをリダイレクトしていました。オリジナルチェーンが統合されると、ヘルパースナップショットが統合されるまでどの程度の時間がかかるかを計算しました。このヘルパースナップショットは統合操作中にかなり成長していることが考えられます。ヘルパーを統合する時間が一定時間内(12秒)であれば、VMを停止し、ヘルパースナップショットをベースディスクに統合しました。許容可能な時間を超えた場合は、ヘルパーを許容時間内にベースディスクにコミットできるまで処理(オリジナルのヘルパースナップショットを統合している間、新しいヘルパースナップショットに書き込み)を繰り返します。
定義された回数、処理を繰り返しますが、I/Oの量によっては、スナップショットチェーンとヘルパーの統合が成功しない場合がありました。
vSphere 6.0では、この統合処理が劇的に変更されました。
スナップショット統合処理もStorage vMotionのようにミラードライバを使用します。ミラードライバのメカニズムでは、統合中のVMへの変更がアクティブなVMDKとベースディスクに書き込み順序を保護しながら書き込まれます。そのため、うまくいけば、ヘルパーディスクを使うことなく1度でスナップショットの統合が完了し、停止時間を劇的に短くし、統合失敗の可能性が少なくなります。
新しい統合処理のテスト
これが本当であれば、とてもうれしいことなので、Veeamのエンジニアがテストしました。
テストは、ESXi 5.5 Update 3とESXi 6.0 Update 1bの2つのサーバで行いました。それ以外は同じ環境です。VMは12個の仮想ディスクを持っています。スナップショット統合の問題は、VMにたくさんのVMDKを持っている顧客でよく見られるためです。完全に空のVMでさえ、ディスクごとにたいてい約1秒の停止が発生するので、11ディスクもあると10秒以上の停止が発生してしまいます。
思い出してほしいのが、これがI/Oが全くない状態であるということです。例えば、データベースマシンのようなアクティブなVMでは、さらに悪化するでしょう。
各テストでは、2つのパラメータが測定されています。秒単位で実行されたネットワークpingとVMwareログから読み取った実際の停止時間です。1つ目はVMに接続されているネットワークを介して他のアプリケーションやユーザから見ることができます。2つ目は、スナップショットの作成と統合を管理するVMwareエンジンが費やす正確な時間です。
ESXi 5.5 U3
スナップショットの作成と削除の影響を確認するため、異なるテストが行われます。初めに、スナップショットを取得します。スナップショットの作成でさえ、ベースディスクからスナップショットのディスクへのI/Oリダイレクトが必要となり、この時間は最小限であっても0ではありません。
2016-02-05T22:52:22.064Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 1960925 us
Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Reply from 192.168.60.159: bytes=32 time=2ms TTL=62 Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Request timed out. Request timed out. Reply from 192.168.60.159: bytes=32 time=3ms TTL=62 Reply from 192.168.60.159: bytes=32 time=22ms TTL=62 Reply from 192.168.60.159: bytes=32 time=2ms TTL=62 Reply from 192.168.60.159: bytes=32 time=2ms TTL=62
スナップショットの作成には1.96秒かかり、ほぼ2秒です。実際に2 pingをロストしています(1秒ごとにpingを実行しているため)。
スナップショットの作成後、それを削除します。
2016-02-05T22:57:02.783Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 843578 us 2016-02-05T22:57:04.633Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 1224454 us 2016-02-05T22:57:06.457Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 1180217 us 2016-02-05T22:57:08.193Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 1125963 us 2016-02-05T22:57:09.870Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 1083360 us 2016-02-05T22:57:11.517Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 1061894 us 2016-02-05T22:57:13.124Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 1014733 us 2016-02-05T22:57:14.623Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 967550 us 2016-02-05T22:57:16.131Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 1004541 us 2016-02-05T22:57:17.600Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 961571 us 2016-02-05T22:57:18.980Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 907337 us 2016-02-05T22:57:20.338Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 890165 us 2016-02-05T22:57:21.162Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 383551 us
複数の停止操作があり、それらは合計で12648914マイクロ秒、つまり12.6秒です。前述したように仮想ディスクごとに約1秒の停止があります。この結果、複数のpingが失われています。
Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Reply from 192.168.60.159: bytes=32 time=2ms TTL=62 Request timed out. Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Request timed out. Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Reply from 192.168.60.159: bytes=32 time=2ms TTL=62 Reply from 192.168.60.159: bytes=32 time=2ms TTL=62
これがよく知られている仮想マシンが応答しなくなる状況です。
ESXi 6.0 U1b
次に、vSphere 6で同じテストを行います。初めに、スナップショットを取得します。
2016-02-05T22:06:11.606Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 649684 us
Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Reply from 192.168.60.159: bytes=32 time=2ms TTL=62 Reply from 192.168.60.159: bytes=32 time=2ms TTL=62 Reply from 192.168.60.159: bytes=32 time=1ms TTL=62
停止は0.6秒続き、pingは失われませんでした。
次に、スナップショットを削除します。
2016-02-05T22:10:08.276Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 5326 us 2016-02-05T22:10:08.493Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 69898 us 2016-02-05T22:10:08.714Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 63095 us 2016-02-05T22:10:08.942Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 67560 us 2016-02-05T22:10:09.166Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 65347 us 2016-02-05T22:10:09.388Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 64597 us 2016-02-05T22:10:09.610Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 63449 us 2016-02-05T22:10:09.827Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 65439 us 2016-02-05T22:10:10.054Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 69483 us 2016-02-05T22:10:10.277Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 65957 us 2016-02-05T22:10:10.501Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 64563 us 2016-02-05T22:10:10.759Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 95898 us 2016-02-05T22:10:10.983Z| vcpu-0| I120: Checkpoint_Unstun: vm stopped for 67014 us
ディスクごとの単一の停止時間は約1秒から65 msに劇的に削減されています。これは、平均15倍の改善です!全体の停止時間は、1秒未満の828436マイクロ秒です。この結果、ネットワーク経由でのこのVMの可用性に飛躍的に向上しています。
Reply from 192.168.60.159: bytes=32 time=2ms TTL=62 Reply from 192.168.60.159: bytes=32 time=2ms TTL=62 Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Request timed out. Reply from 192.168.60.159: bytes=32 time=1ms TTL=62 Reply from 192.168.60.159: bytes=32 time=3ms TTL=62 Reply from 192.168.60.159: bytes=32 time=1ms TTL=62
停止のタイミングと一致して1 pingのみ失われました。
参考: With vSphere 6, snapshot consolidation issues are a thing of the past!