第1回 Hyper-V 2.0のライブ・マイグレーションの基礎知識Hyper-V 2.0実践ライブ・マイグレーション術(3/5 ページ)

» 2009年12月16日 00時00分 公開
[小川大地日本ヒューレット・パッカード株式会社]

 このようにライブ・マイグレーションを実装するには、NTFSを核としたディスク構造そのものを設計し直さなければならず、多大な開発期間がかかる。このため、Windows Server 2008に付属していたHyper-Vの初期バージョン(Hyper-V 1.0)では、一時的なダウンが発生するものの、アプリケーションやゲストOSそのもののシャットダウンは不要という、準ライブ・マイグレーション機能「クイック・マイグレーション」が実装された。

クイック・マイグレーションの仕組み

 クイック・マイグレーションの流れを簡単におさらいしよう。

 前述のとおり、仮想マシンを移動するにはメモリとディスクのデータを引き継ぐ必要があるが、クイック・マイグレーションではメモリ・データをいったんディスクに保存し、メモリとディスク内容と一緒に移動先ホストへ引き渡す方法を用いている。メモリをディスクに保存する部分は、PCの休止状態(ハイバネーション)をイメージすると分かりやすい。

クイック・マイグレーションの動作イメージ
クイック・マイグレーションは、Hyper-V 1.0から実装されている。一時的なダウンが発生するものの、シャットダウンなしでホストを移動できる技術だ。
  (1)対象仮想マシン上で行われているすべての処理を即座にフリーズする。
  (2)仮想マシンのメモリ内容をディスクへ保存する(≒ハイバネーション)。
  (3)共有ストレージ上のディスクの所有権を、移動先ホストへ切り替える。
  (4)(2)で保存したメモリ内容を、移動先ホストのメモリ上に復元する。
  (5)(1)で実施した仮想マシンのフリーズを解除し、動作を再開する。

クイック・マイグレーションのダウンタイム

 従って、クイック・マイグレーションで問題となるダウンタイムは(1)(5)の所要時間となる。(1)(5)の処理はほぼ一瞬で完了し、(3)のディスク切り替えの時間は先に述べたとおり数秒間だ。つまり、ダウンタイムに最も影響するのは、メモリ・データが実際にコピーされる(2)(4)の処理となる。

 では、メモリ・データのコピー時間は何の要素に左右されるのだろうか。筆者が実機を用いてさまざまなパターンのテストを行った結果、次のような結果が得られた。

仮想マシンのメモリ設定量・使用領域とダウンタイムのテスト結果のグラフ
このグラフはホスト全体が低負荷状態であったものを用いている。縦軸がダウンタイム(秒)で、ダウンタイムが短いほど、高速なマイグレーションが可能になる。この結果から、仮想マシンに割り当てるメモリが多いほどダウンタイムは長くなるし、ファイル・キャッシュが蓄積すればするほど、ダウンタイムが大幅に延びてしまうことが分かるだろう。
なお「RAM=」は仮想マシンに割り当てたメモリ設定量、横軸は割り当てたメモリのうち、ゲストOSが実際に使用している容量を示している。例えば仮想マシンに16Gbytes割り当てていても(図中の水色の線)、1Gbytes(左端)しか使用していなければダウンタイムは49.25秒だが、キャッシュなどでほとんどすべて使用していると、172.55秒となる。

 このグラフから分かるように、ダウンタイムは次の要素に影響されるといえる。

  • 仮想マシンに割り当てるメモリ設定量
  • 仮想マシンのファイル・キャッシュの蓄積状況
  • ホスト全体の負荷状況

 1番目の仮想マシンに割り当てるメモリ設定量に応じてダウンタイムが増えるのは理解しやすいだろう。保存や転送の対象となる領域が増えるからだ。

 2番目のファイル・キャッシュの蓄積状況というのは、Windows ServerやLinuxなどのサーバOS特有のものである。OSがファイルを扱う場合、そのファイルはメモリに展開されるが、サーバOSの場合はファイルの使用が終わってもメモリ上のデータは削除せずにキャッシュとして残す。このため、ゲストOS起動直後のメモリ領域はほぼ空の状態(多くが未使用の状態)であるが、稼働時間が長くなるにつれて、ファイル・キャッシュが蓄積されていく。つまり、空の領域が実データで埋められていくにつれてクイック・マイグレーションの所要時間が延びてしまうのだ。

サーバOSにおけるファイル・キャッシュのイメージ
Windows ServerやLinuxなどのサーバOSは、一度メモリに展開したファイルを削除せずにキャッシュする。

 上記のグラフは筆者が実機でテストした結果の一部であるが、実際にはこのグラフにない3番目の「ホストの負荷状況」も考慮しなければならない。筆者の環境では、仮想マシンに4Gbytesのメモリを割り当てた場合に、ホストの負荷がアイドル状態で18秒だったのに対し、最も高負荷の状態では5分弱と、ダウンタイムは約16倍にも延びてしまった。

ライブ・マイグレーションも考え方は同じ

 ここまで、クイック・マイグレーションのダウンタイムについて、テスト結果を含めて解説したが、そもそもクイック・マイグレーションはHyper-V 1.0時代の機能である。引き続きHyper-V 2.0でも利用できるものの、「Hyper-V 2.0にはライブ・マイグレーションがあるから、こんな知識はいまさら意味がない」と感じた読者もいるかもしれない。

 しかし、このノウハウはライブ・マイグレーションにも適用される。なぜなら、ライブ・マイグレーションもメモリ・データのコピーを行うからだ。後ほど詳しく解説するが、ライブ・マイグレーションは実行後すぐに移動が完了するわけではない。いくつかのプロセスを通じて全体で数十秒〜数分の処理時間を要する。従って、ライブ・マイグレーションの所要時間を見積もるためにも、こういった知識は理解しておく必要があるだろう。

 また、仮想マシンのメモリ内容をいったんディスクに保存するという処理はマイグレーションだけではなく、バックアップで使われるケースもある。バックアップ時間の見積もりにも役立つことがあるはずだ。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。