第5回:仮想化環境での利用~Hyper-Vでライブマイグレーション


Hyper-Vとライブマイグレーションの基本

今回使用した「TS-459 Pro+ Turbo NAS」。iSCSI対応、仮想化環境配備用SPC-3採用。仮想化およびクラスター環境用ストレージセンターとして配備が可能なビジネス向けモデルだ

 Hyper-Vは、MicrosoftがWindows Serverの機能として実装した仮想化環境だ。Windows Serverの標準機能として利用可能なので、導入の敷居が低いのが特徴で、今後の利用拡大が期待される。

 機能面では先行するVMwareに追いついていない面もあり、特にライブマイグレーション(VMwareで言うところのvMotion)が実現できていなかった点が大きかったが、Windows Server 2008 R2で遂にライブマイグレーション(MSではライブ移行と呼ぶ)も利用できるようになった。

 仮想化環境では、仮想サーバーを異なる物理サーバーに移動することは容易だ。仮想サーバーの実体は、物理サーバー上に作られた仮想HDDに記録されたファイルである。このファイルの内容は、イメージとしてはサーバーの起動用HDDのデータをイメージ化してファイルに書き出したものと考えることができる。いわば、仮想サーバーを物理サーバー間で移動するのは、あるサーバからHDDを取り出して別のサーバに繋ぎ変えるようなイメージとなる。

 ファイルをサーバー間で移動するのは単なるファイルコピー操作で実現可能であり、特別な準備は必要ないのだが、ライブマイグレーションとなるとそうはいかない。

 ライブマイグレーションでは、稼働中の仮想サーバーを瞬時に移動させることが期待される。現実には“瞬時”というわけにはいかず、一定の時間が必要なのだが、それでも稼働中の仮想サーバーがそのときの状態を維持したまま別の物理サーバーに移動し、動作を継続することには変わりはない。

 HDDイメージのコピーでは、一度シャットダウンした仮想サーバーを別の物理サーバー上で改めて起動し直す、という形での移動は実現できるが、稼働中の仮想サーバーを移動させるためにはこれだけでは足りない。具体的には、そのときのメモリのイメージやプロセッサの状態も移動させる必要があるのだ。

 ライブマイグレーションの動作は、ノートPCなどで一般的に利用されている機能である「ハイバネーション」とよく似ていると言える。ハイバネーションでは、動作中のシステムの状態を保存するためにメインメモリの内容などを一度ハードディスクに書き出し、再開時にはこのデータをディスクから読み出してメモリ上に展開することで休止時点のシステムの状態を復元する。

 この、休止と復旧の間にネットワークを介したデータ移動を挟めば、ライブマイグレーションのイメージになる。すなわち、移動元の物理サーバー上でまず仮想サーバーが利用中の仮想メモリ領域をファイルに保存し、このファイルを別の物理サーバーに移動して復元すれば、ライブマイグレーションが実現できることになる。

 現実のライブマイグレーションでは、仮想ハードディスクの内容(ファイル)の移動は行なわない。大量のデータコピーをそのたびごとに実行していては時間が掛かりすぎるので、共有ディスクを利用し、データをコピーすることなく複数の物理サーバーが同じデータにアクセスできるようにしておく。

 一方、メモリイメージは時々刻々と内容が変化しているデータでもあり、あらかじめファイル化して共有しておくというわけにはいかない。そこで、ライブマイグレーションを実行する時点でファイル化し、これを移動先の物理サーバーに転送する、という作業が発生する。ライブマイグレーションに要する時間は、ほぼこのメモリイメージの作成/転送/展開に要する時間だと考えてもよい。仮想サーバーに割り当てるメモリ量は、おおむね1GB程度が最低線だろう。データ量として無視できないサイズであり、この保存や転送に一定の時間が掛かってしまうのはやむを得ないところだ。

 ライブマイグレーションは、ある物理サーバーに障害が発生した際に、予備となる代替機で処理を継続するという目的で利用されることが主となるわけだが、同様の機能は物理サーバーレベルではクラスタリングという形で古くから実現されている。いわば、ライブマイグレーションは仮想化版クラスタだと考えることもできる。

 Hyper-Vの場合は、実際にライブマイグレーション機能が従来からあるフェールオーバークラスタリングの機能を流用する形で実装されているので、ライブマイグレーションを実現するためには、Hyper-Vを実行する物理サーバーを複数用意した上で、それらでフェールオーバークラスタリングを構成してやる必要がある。残念ながら、単に複数のサーバーがあれば後はちょっとした設定だけで任意に仮想サーバーを移動できる、というほど簡単な話ではないのである。

環境の整備

 前述の通り、Hyper-Vのライブマイグレーションでは、基本的な技術要素としてWindows Serverのフェールオーバークラスタリングを利用している。仮想化環境ならではの機能というよりは、物理サーバーで実現されていた機能を仮想サーバーにも対応するよう拡張した、という方が適切かもしれない。

 環境に対する要件としては、複数のサーバーから同時にアクセスできる共有ディスクが必要となり、さらにクラスター共有ボリューム(CSV)という機能を使って共有ディスクスペースを確保する必要がある。CSVは、複数のサーバーで共用されるディスク領域に対するアクセスの競合を調停するために用意された仕組みだ。共有ディスクのファイルシステムはNTFSで、これは複数のサーバから同時にマウントされるといった状況を想定しないファイルシステムなので、こうした仕組みが必要になったというわけだ。

 今回用意したNASストレージはQNAP TS-495 Pro+ Turbo NASだ。HDD×4台構成で、ビジネスユーザー向けモデルとしてはどちらかというと小規模な部類に属するが、「VMware Ready」「Citrix Ready」といった仮想化環境での互換性認証を取得している上、Microsoft Hyper-V環境との互換性およびフェールオーバークラスタリング対応も表明されている。

 NAS機能に加えてiSCSIストレージとしても利用可能なので、今回はこのストレージをiSCSI接続の共有ディスクとして利用し、Hyper-Vによるライブマイグレーション環境を構築してみよう。

 まずは、システムの全体構成を考えておこう。単にHyper-Vを利用するだけなら話は単純だが、ライブマイグレーションを実現するとなると、最低でも2台のWindows Serverが必要になる上に、ネットワーク環境も大規模化する。まず、外部から仮想サーバーにアクセスするためのネットワークが必要になるのは当然として、そのほかの内部的な用途として、ハートビート用、メモリデータのコピー用、システム管理用の3つのネットワークを構成することが推奨されている。

 このうち、ハートビート用は物理サーバーが障害を起こしたことを検知し、自動的にライブマイグレーションを実行するために必要となるものだが、手動でライブマイグレーションを実行するなら不要となる。また、今回は共有ストレージをiSCSI接続とするため、ストレージ接続用のネットワークを独立させることが望ましい。というわけで、各サーバーそれぞれにネットワークポートが4~5個必要となる。実際には同数のスイッチも必要だ。しかしながら、今回はそこまで大規模な環境を用意することができなかったので、ごく小規模な構成としてネットワークポート×2を利用し、スイッチ1台に2つのサブネットを共存させる形とした。

Hyper-Vによるライブマイグレーション環境。今回は右のスイッチ1台に2つのサブネットを共存する形で環境を構築した

 ネットワークの構成は、外部接続兼iSCIS接続と、ハートビート兼メモリコピー兼管理用の2種類とし、それぞれ別個のサブネットとしてIPアドレスを割り当てる。ただし、システム構成の都合上スイッチは1台になるため、厳密にはトラフィックの分離が実現できていないことになるのだが、テスト環境ということでご容赦いただきたい。

 次に、具体的な環境構築の手順だが、サーバ単体で「OS環境の設定」「iSCSIストレージの接続」「Hyper-V環境の構築」を2台のサーバーに対して行なった上で、「フェールオーバークラスタリングの設定」を両者で行なう、という段取りになる。

 

サーバーの基本的な設定

 まずは、サーバーの基本的な環境構築を行なっていこう。最初に行なうのは、OSのインストールと基本的な環境構築となる。Hyper-Vによるライブマイグレーションを実行したいわけだから、OSとしてはWindows Server 2008 R2を選んでおくのが順当だろう。

 なお、サーバーはデルのPowerEdge R710をお借りした。Xeon 5500番台に対応し、エンタープライズユーザーが実業務の仮想統合を行なうためのプラットフォームとして利用できる新世代のサーバーだ。実機はXeon X5570(2.93GHz)×2、メモリ24GBを搭載しており、テスト環境としては高級すぎる構成だが、設定方法の基本等はより小規模なサーバーであっても同様なので、その点は問題ない。

デル PowerEdge R710  (機材協力:デル株式会社)

 まず最初にやるべきことはWindows Server 2008 R2のインストールだが、この点はさすがに今回は特に説明はしない。Windows Serverのインストールは、昔に比べるとずいぶんシンプルになっており、インストール中に設定すべき内容はほぼ皆無だ。つまり、インストールを終えた直後の状態はおおむねどんなシステムであっても共通であり、インストール中の設定が異なっているせいで以後の作業内容が変わってくる、という面倒な状況も生じないと考えてよい。

 インストールが終了すると、管理者(Administrator)ユーザーのパスワードを設定するよう求められる。パスワードの設定が終わるとシステムにログインした状態になり、「初期構成タスク」画面が表示される。基本的な設定はこの画面から可能だ。ここでは「ネットワークの構成」でIPv4アドレスを固定的に設定(デフォルトではDHCPクライアントに指定されている)し、次いで「自動更新とフィードバックを有効にする」で自動更新の設定を行ない、次いで「更新プログラムのダウンロードとインストール」を実行して即座に最新の状態にOSをアップデートした。続いて行なったのは、「リモートデスクトップを有効にする」ことだ。

 この作業は、Hyper-Vの運用やライブマイグレーションの実行に直接関わるものではないが、サーバにローカルでディスプレイやキーボード/マウスを接続して操作するのは何かと不便なので、運用上の利便性を考えてのことだ。ここまでの作業が終了したところで一度ログアウトし、改めてクライアントPCからリモート接続を行なった(画面1)。

【画面1】基本的な設定を行なった状態。ネットワークに接続してOSを最新の状態にアップデートし、リモート接続を許可したところ

 

iSCSIストレージの準備

 ここで、作業対象をサーバーからiSCSIストレージに移そう。前述の通り、今回使用するiSCSIストレージとして、QNAP TS-459 Pro+Turbo NASを用意した。CPUはDual-core Intel Atom 1.80 GHz、RAM 1GBを搭載。Jumbo Frame対応のギガビットLANポート×2、USB 2.0ポート×5、eSATA×2を装備し、iSCSIに対応するビジネス向けモデルだ。

 HDD×4を内蔵可能な直方体に近いコロンとした感じの筐体の前面には液晶ディスプレイを装備しており、基本的な設定は単体で行なえるため、扱いやすい。

QNAP TS-459 Pro+Turbo NAS 正面
背面

 電源ケーブルとネットワークケーブルを接続して電源をオンにすると、LAN内のDHCPサーバーからIPアドレスの割り当てを受けて起動したのだが、ウェブブラウザーを使ってデバイスにアクセスしてみると、ファームウェアのアップデートを要求された(画面2)。ファームウェアのアップデートが完了すると、ウェブブラウザー経由で設定変更等の作業ができるようになるので(画面3)、ここではネットワークの設定を変更し、DHCPを使わずに固定的なIPアドレスを設定しておくことにした(画面4)。

【画面2】ファームウェアのアップデートを促す画面が表示された【画面3】QNAPの設定画面【画面4】今回はDHCPを使わず、固定IPを設定した

 続いて、RAIDレベル等を適切に設定したボリュームを作成したら、続いて、本連載の第3回でも紹介済みだが改めてiSCSIの設定を行なう。

 「ディスク管理」から「iSCSI」を選択し、まずは「ポータル管理」タブで「iSCSIターゲットサービスを有効にする」にチェックを入れて「適用」ボタンをクリックすると(画面5)、仮想化環境での注意事項として「書き込みキャッシュオプションを無効にすべき」とのメッセージが表示される(画面6)。

 とりあえずここでは「OK」をクリックしてメッセージを消しておき、「システム管理」「ハードウェア」を開いて指示通りに書き込みキャッシュを忘れずに無効にしておく。再び「ディスク管理」「iSCSI」を開き、「ターゲット管理」タブに移動すると「クイックコンフィギュレーションウィザードを起動しますか」と聞かれるので(画面7)、「OK」をクリックしてウィザードを起動する。

【画面5】「iSCSIターゲットサービスを有効にする」にチェックを入れて「適用」ボタンをクリック【画面6】仮想化環境で利用している場合は、「書き込みキャッシュオプションを無効にすべき」とのメッセージが表示される【画面7】再び「ディスク管理」「iSCSI」を開き、「ターゲット管理」タブに移動すると「クイックコンフィギュレーションウィザードを起動しますか」と聞かれる

 ウィザードでは、まず何を作成するのかを聞かれるので、ここでは「LUNがマッピングされているiSCSIターゲット」を選んで「次へ」をクリックする(画面8)。すると以後の手順が表示される(画面9)ので、「次へ」をクリックすると、以後「ターゲット名の入力」(画面10)、「CHAP認証設定」(画面11)、LUNの容量指定(「iSCSI LUNの作成」、画面12)、「設定の確認」(画面13)と進んでいく。完了すると、これでWindows Serverからマウント可能なiSCSIストレージの準備ができたことになる。

【画面8】「LUNがマッピングされているiSCSIターゲット」を選択【画面9】ウィザードが次の手順を説明してくれる【画面10】ターゲット名を入力する
【画面11】「CHAP認証設定」画面【画面12】「iSCSI LUNの作成」画面。LUNの容量を指定する【画面13】設定を確認する

 

iSCSIストレージのマウント

 QNAP側でiSCSIターゲットを作成したら、次にWindows Server側でiSCSIイニシエーターを起動し、iSCSIストレージをマウントする。iSCSIイニシエーターは、「スタート」メニューを開き、「管理ツール」から「iSCSIイニシエーター」をクリックすればよい(画面14)。

 実は、iSCSIイニシエーターは「iSCSIサービス」が起動していることが前提となっているのだが、iSCSIイニシエーターの起動時にiSCSIサービスが未起動だった場合は、まずiSCSIサービスを起動するかどうか尋ねるパネルが開くので(画面15)、ここで「はい」をクリックすればよい。

【画面14】iSCSIイニシエーターは、「スタート」メニューを開き、「管理ツール」から「iSCSIイニシエーター」をクリックする【画面15】iSCSIイニシエーターの起動時にiSCSIサービスが未起動だった場合は、まずiSCSIサービスを起動するかどうか尋ねられる

 iSCSIイニシエーターが起動すると、「ターゲット」タブが開くので、まずは「ターゲット」のテキストボックスにQNAPのIPアドレスを入力して「クイック接続」ボタンをクリックする(画面16)。すると、先ほどQNAP上に作成したiSCSIターゲットが自動的に検出されるので、「完了」ボタンをクリックすればよい(画面17)。

【画面16】「ターゲット」のテキストボックスにQNAPのIPアドレスを入力して「クイック接続」ボタンをクリック【画面17】先にQNAP上に作成したiSCSIターゲットが自動的に検出される

 なお、iSCSIイニシエーターを使ってマルチパスの設定等も可能だ。QNAPには複数のEthernetポートを備えているモデルがあり、QNAP側の設定でも複数ポートにトラフィックを分散させて帯域幅を拡大する機能が実装されているが、Windows Server側でマルチパスを設定することもできるというわけだ。

 iSCSIイニシエーターでの作業が終わった時点で、論理的には新品のまっさらなSCSI HDDをシステムに接続したのと同様の状態になっている。そこで、この領域をサーバで利用可能にするための準備を行なっていく。「スタート」メニューから「管理ツール」を開いて「コンピュータの管理」をクリックし、「記憶域」の「ディスクの管理」を選ぶと、システムに接続されているディスクのリストが表示される(画面18)。

 まずはディスクが「オフライン」になっているので、ディスク名の書かれたマスを右クリックしてメニューを開き、「オンライン」を選んで利用可能にしておく(画面19)。

【画面18】システムに接続されているディスクのリスト【画面19】まずディスクをオンラインに設定し、利用可能にしておく

 すると、先ほどの「オフライン」の表示が「初期化されていません」に変わるので、同様に右クリックメニューで「初期化」を実行する(画面20)。続いて、ドライブのマップ領域で右クリックメニューを開いて、ボリュームを作成し(画面21)、さらにフォーマットといった一連の作業を行なっていく。必要なだけのボリュームを作成し、ドライブレターを割り当てれば、iSCSIストレージのマウント作業は完了だ(画面22)。ウィザードに従って設定していくので、自分の欲しい環境が決まっていればスムーズに設定できる。

【画面20】メッセージに従い、「初期化」を実行する【画面21】ドライブのマップ領域で右クリックメニューを開いて、ボリュームを作成【画面21】必要なだけのボリュームを作成し、ドライブレターを割り当てれば、iSCSIストレージのマウント作業は完了

 

Hyper-V 2.0のインストールと設定

 Windows Server 2008 R2は、インストール直後の状態では必要最低限度の機能しかインストールされず、OSインストールの完了後にユーザーが必要な機能を明示的に追加していく必要がある。Hyper-Vも例外ではなく、ユーザーが「役割の追加」でHyper-Vを明示的に追加していく必要がある。ただし、この段階では特に複雑な設定等はなく、単にインストールするだけだ。

 インストールが完了したら、「スタート」メニューの「管理ツール」から「サーバーマネージャ」を起動し、左端に表示されているリストから「役割」「Hyper-V」「Hyper-Vマネージャ」をクリックし、さらに自ホスト名を選択すると詳細な設定画面が現われる(画面23)。

 ウィンドウ右上にある「新規」をクリックするとメニューが開くので、ここで「仮想マシン」を選択すると、新しい仮想マシンを作成できる(画面24)。仮想マシンの作成はウィザード形式で実行され、標準的な設定でよいなら最初の画面でいきなり「完了」をクリックすればよいのだが、今回はiSCSIストレージ上に仮想マシンを保存したいので、「次へ」をクリックして詳細設定を手動で行なう。重要なのは2画面目に表示される「名前と場所の指定」で、ここで仮想マシンの格納場所を先ほどマウントしたiSCSIストレージ上のボリュームに設定する必要がある(画面25)。

【画面23】詳細な設定画面【画面24】「仮想マシン」を選択すると、新しい仮想マシンを作成できる【画面25】仮想マシンの格納場所を先ほどマウントしたiSCSIストレージ上のボリュームに設定する

 仮想マシンが作成できたら、必要なOSのインストールを行なう。この辺りの手順は、実質的には物理サーバにOSをインストールするのとあまり違いはないので、ここでは詳細は省略する。

 

フェールオーバークラスタリング

 さて、Hyper-VからQNAPを活用する手順について紹介してきたが、以後の手順に関しては完全にQNAPとは無関係で、純粋にWindows Server側の設定作業となるため、大まかな作業の流れだけを紹介しておこう。

 1台のサーバにiSCSIストレージを接続し、Hyper-V環境を構築して仮想サーバーの保存場所としてiSCSIストレージを指定したところで、既にQNAPの仮想化環境対応機能を活用しているといって過言ではないだろう。従来は高価なエンタープライズストレージでしか対応できなかった共有ストレージ環境も手軽に構成できるため、中小規模の組織や、場合によっては個人やSOHOでも利用価値は高いはずだ。

 とはいえ、1台のサーバー上の仮想化環境からのみアクセスするのであればサーバーの内蔵HDD上に保存しても問題ない、という考え方もあるかもしれない。その場合には、やはり共有ストレージ環境が必須となるライブマイグレーションの活用まで範囲を拡げてみたくもなるだろう。

 前述のとおり、ライブマイグレーションを実行するには2台のWindows Server 2008 R2サーバ間でフェールオーバークラスタリング環境を構築する必要がある。このためには、まず「初期構成タスク」や「サーバーマネージャ」から「機能の追加」を実行し、「フェールオーバークラスタリング」機能を追加インストールする。「役割」ではないことに注意しよう。

 「機能の追加」で、機能のリストからフェールオーバークラスタリングにチェックを入れて「次へ」をクリックし、確認画面で「インストール」をクリックすればフェールオーバークラスタリング機能がインストールされる。

 なお、フェイルオーバークラスタリング機能は、サーバやユーザーアカウントがActive Directoryで管理されていることを要求してくるため、小規模な組織などでWindows Serverもワークグループのメンバーとして運用しているような場合にはLANの構成自体をActive Directory環境にアップグレードする必要が出てくるため、少々敷居が高いのは否定できない。

 フェールオーバークラスタリング機能をインストールしたら、環境設定を行なっていく。フェールオーバークラスタリングを利用する際には、サーバのネットワークは最低2つが必要になる。2台のサーバにそれぞれフェールオーバークラスタリング機能をインストールし、相互に内部ネットワークで接続して、さらにフェールオーバークラスタリングマネージャで設定を行なっていくことになる(画面26)。

 なお、フェイルオーバークラスタリングマネージャの機能を利用するためには、ドメインのユーザーアカウントでサーバにログインする必要があることに注意しよう。フェイルオーバークラスタリングマネージャでは、まず「構成の検証」(画面27)を行ない、次いで「クラスタの作成」と作業を進めていく(画面28)。

【画面26】フェールオーバークラスタリングマネージャで設定を行なう【画面27】まず「構成の検証」を行う【画面28】次いで「クラスタの作成」と作業を進めていく

 クラスタが作成できたら、「クラスタの管理」で詳細な内容を設定していく。まずは「クラスターの共有ボリュームの有効化」を行なう。これは、前述のCSVで、これで共有されたiSCSIストレージに競合を起こすことなく2台のサーバーからアクセスできるようになる。クリックすると警告メッセージが出るが、内容を確認して「OK」をクリックするとすぐに終了してしまう。何も起こっていないようにも思えるが心配はない。

 フェールオーバークラスタリングマネージャーの左側のツリー表示に「クラスターの共有ボリューム」が追加されるので、これを選択すると右上で「記憶域の追加」が実行できるようになるので(画面29)、これをクリックして共有ディスク領域を追加する(画面30)。共有ストレージが作成できたら、次にクラスタ化するアプリケーション/サービスを選択する。

 フェールオーバークラスタリングマネージャの左側のツリー表示から「サービスとアプリケーション」を選択し、右上の「仮想マシン」から「仮想マシンの新規作成」をクリックすると、フェイルオーバークラスタリングに対応した形の仮想マシンを作成でき、ライブマイグレーションもできるようになっていく。まずは手動での物理サーバ間移動としてのライブマイグレーションが可能だが、フェイルオーバークラスタリングの機能を使って、物理サーバの障害を検知した際の自動移動を設定することもできる。

 仮想化環境のための共有ストレージとして利用すると、iSCSIはじめハイエンドNASの性能が十二分に活用できる。これからHyper-Vなど仮想環境を構築しようという場合、多機能な性能でバックアップしてくれるハイエンドNASを加えてみるのもいいのではないだろうか。


関連情報

(渡邉 利和)

2011/3/24 00:00