第15回 Windows Server 2012 R2プレビュー版のHyper-V概要:Windows Server 2012クラウドジェネレーション(2/2 ページ)
次期Server OSであるWindows Server 2012 R2のプレビュー版の機能解説の第3回。今回は、新しくなったHyper-Vの機能概要とUEFIサポートについてまとめる。UEFIのサポートにより、2Tbytes超のディスクからのブートやレガシー・フリーでオーバーヘッドの少ない仮想環境が実現されている。
世代2でサポートされたUEFIとは?
世代2における特長の1つとして「UEFI(Unified Extensible Firmware Interface)」がサポートされたことが挙げられる。UEFI(単に「EFI」と呼ぶこともある)は、従来のBIOSに代わる、PCシステムのための新しいシステム・インターフェイス(ファームウェア・アーキテクチャ)である。
従来のPCには、「BIOS」と呼ばれるブート・プログラムが載っており、電源投入後のシステム・チェックや接続されているデバイスのチェック、ディスクの列挙、OSのブート・コードのロードと起動などを行っていた(ブート後の処理は各OSが行う)。だがこのBIOSは、x86アーキテクチャのCPUと16bitのリアル・モードのコードに大きく依存していた。しかしプログラム・サイズの制限などのため、今となってはBIOSで実現可能な機能には大きな制約がある。その1つが、2Tbytes以上のディスクからブートできない、という制約である。詳しくは以下の記事などを参照していただきたい。
- 「2Tbytes超ディスクをデータ用ストレージとして利用する」(連載 PCハードウェア強化ラボ)
- 「2Tbytes超ディスクをシステム用ディスクとして利用する」(同上)
- UEFI ファームウェア(マイクロソフトTechNetサイト)
UEFIはBIOSに代わる新しいシステムであり、CPUの32bitネイティブ・コードを使った高機能な処理や、新しいディスク管理形式(従来のMBR形式ではなく、より拡張されたGPT形式)の採用による、2Tbytes以上のディスク・サポートなどを実現している。最近ではBIOSに加えて、このUEFIをサポートしたPCシステムも増えてきているが、Hyper-Vなどの仮想環境では今までサポートされていなかった。
Windows Server 2012 R2のHyper-Vで世代2の仮想マシンを作成すると、BIOSではなくUEFIが有効になり、ユーザーにとっては次のようなメリットが生まれる。
- ブートの高速化――さまざまなレガシー・デバイスとそのサポート・コードがなくなるため、ブート処理が高速になる
- SCSIブートやPXEブートのサポート――仮想SCSIディスクからのブートや、Syntheticネットワーク・デバイス(Hyper-Vの統合サービスに含まれている仮想ネットワーク・デバイス・ドライバ)からのPXEブートが可能になる(従来は「レガシー ネットワーク アダプター」という特別なデバイスを導入する必要があった)
- 2Tbytesディスクのサポート――BIOSではMBRという方式でディスクのパーティションを管理しているが、最大で2Tbytesまでしか扱えない。UEFIではGPTという方式で管理することにより、事実上制限がなくなった
- UEFIセキュア・ブートが有効に――セキュア・ブートとは、Windows 8やWindows Server 2012以降でサポートされているブート・コードの保護機能の1つで、ブート・ディスクにウイルスなどが感染して、システムが乗っ取られるのを防ぐ機能である。
世代2の仮想マシンの設定画面のうち、UEFI関連の項目を次に示す。
UEFI関連の設定項目
世代2の仮想マシンではBIOSではなくUEFIが有効になる。この設定画面では、ブートするデバイスの順番などを設定する。
(1)これを選択する。
(2)世代2では、デフォルトで「セキュア・ブート」が有効になっている。セキュア・ブートは、UEFI環境とセキュア・ブートをサポートしたOSの組み合わせでのみ利用可能。
(3)OSをインストールすると、UEFIのブート・コードがディスクの先頭のパーティションに書き込まれ、それが最優先でブートするようになる。ブートするデバイスの選択画面は、OSのメニューからも呼び出せる。
世代1の仮想マシンの設定画面と比較すると、「セキュア ブートを有効にする」というチェック・ボックスが増えただけで、その下にある「ブート順」を変更する画面はほぼ同じように見える。ただしこのブート・エントリの並びはUEFIによって制御されているため、例えば(複数の起動ディスクがある場合は)Windows OS上から「bcdedit /enum firmware」コマンドで変更できる(TIPS「bcdeditでUEFIのブート・エントリの名前を変更する」参照)。
2Tbytes超ディスクの使用
UEFIを使うメリットの1つとして、2Tbytes以上のディスクを起動用ディスクにできるというのが挙げられる。Hyper-Vのような仮想マシン環境ではあまり使うことはないかもしれないが(仮想マシンごとにVHDXファイルを作成すればよいため)、例えば2Tbytes以上のディスクをパススルー・ディスク(物理ディスクを仮想マシンに直接アタッチして使う方法)として使用する場合はこのようなケースも出てくるだろう。
以前の仮想マシン(世代1の仮想マシン)では、仮想マシンをブートさせるにはIDEインターフェイスに接続した2Tbytes以下のディスクを使う必要があったが、世代2のUEFI環境ではもっと大きなVHDXファイルや物理ディスクをブート用ディスクに設定できる。次の画面は4TbytesのVHDXファイルにWindows Server 2012 R2をインストールしたところである。C:ドライブが4Tbytesになっているが、何の問題もなくインストールできている。
世代2の仮想マシンで2Tbytes超のディスクを起動ディスクとして使う
世代2の仮想マシンではUEFIがサポートされており、ディスク・サイズの制限は事実上なくなっている。
(1)4Tbytesの仮想ディスク(VHDXファイル)を作成して、ここにWindows Server 2012 R2をインストールしてみた。
(2)これはブート用のデータが保存されているパーティション。
(3)UEFI(GPT形式)を使えば、ほぼ4Tbytesのボリュームを作成してそこにWindows OSをインストールできる。
同じことを、世代1の仮想マシンと4TbytesのVHDXファイルの組み合わせで実行してみると、次のように、ディスクはGPT形式ではなくMBR形式でフォーマットされ、C:ドライブの容量は2Tbytesになってしまう。残りの2Tbytesは「未割り当て」領域となったまま、ユーザーが使うことはできなくなる(前掲の記事も参照)。
世代1の仮想マシンで2Tbytes超のディスクを起動ディスクとして使う
世代1の仮想マシンではBIOSが使われており、ディスクはMBR(Master Boot Record)方式で管理されている。これは最大でも2Tbytesまでしか管理できないという制約がある。起動ディスクではなく、2台目以降のデータ・ディスクとして使うならGPT形式にすれば、2Tbytes超のディスク使える(データ・ディスクの場合は、システムがブート・コードをロードするわけではなく、OS自身が解釈するの、BIOSの制約を受けない)。
(1)4Tbytesの仮想ディスク(VHDXファイル)を作成して、そこにWindows Server 2012 R2をインストールしてみた。インストール時のパーティション割り当ては自動で行わせている。
(2)C:ドライブはMBR形式で扱える最大の2Tbytesになっている。
(3)残りの2Tbytesは未割り当て状態だが、ここにパーティションを作成することはできない。実際の物理的なディスクなら、ここは使われない無駄な領域になってしまう。
なおWindows OSの制約により、世代2(UEFI)を利用できるのは、Windows 8以降のOSでも64bit版だけである(今のServer OSは64bit版だけなので、Windows Server 2012以降ならどれでもよい)。32bit版のWindows 8はUEFI環境へのインストールはサポートされていないので(世代1の環境にのみインストール可能)、2Tbytes超のディスクはOSのインストール用には使えず、データ・ディスクとしてのみ使える。
仮想ディスクの動的なリサイズ
ところで上の画面では4Tbytesのディスクを1つのボリュームにしているが、Windows Server 2012 R2のHyper-Vでは仮想マシンを実行させたまま、動的にボリューム・サイズを変更できるようになっている(以前は仮想マシンをいったん止める必要があった)。詳細はWindows 8.1のHyper-Vの解説記事を参照していただきたいが、ゲストOS上でパーティション・サイズを縮小してディスクの末尾に未割り当て領域を作っておけば、仮想マシンの設定画面でVHDXのサイズを縮小できる。また逆に、VHDXファイルを拡大すると、ゲストOS上ではディスクのサイズが増大したように見えるので、ディスクの管理ツールを使ってパーティション・サイズを拡大できる。
仮想ディスクのQoSと共有サポート
Windows Server 2012 R2のHyper-Vでは、複数の仮想マシン間で仮想ディスクを共有する機能が利用できる。クラスタの共有ボリューム(CSV)にしたり、複数のファイル・サーバからアクセスして、スケールアウト構成のファイル・サーバ・システム(複数のファイル・サーバを使ってパフォーマンスを向上させる構成)を実現したりできる。
ディスクの共有とQoS設定
ここでは、仮想ディスクごとにQoS(サービス品質)を設定して特定の仮想マシンに処理が偏らないようにしたり、共有を設定したりできる。
(1)仮想ディスクごとに設定できる。
(2)これをオンにすると、ディスクの処理に制限を設けたり、下限を設定できたりする。
(3)IOPS(8Kbytesのブロックでの入出力に換算して計算する)の最小値と最大値を設定できる。
(4)共有を有効にするにはこれをオンにする(サービス品質と同時に利用することはできない)。仮想マシンの世代は1と2のいずれでもサポートされている。
画面の上側にある「サービスの品質の管理」とは、仮想ディスクのQoS管理を実現するための機能である。仮想ディスクごとに、IOPSを制限したり、IOPSの最低保証値を設定するために利用する。主にデータ・センターなどで顧客ごとのSLAを保証するために使われる機能だが、ほかの仮想マシンに影響を与えないように(もしくは逆に、影響を受けてサービスが止まってしまわないように)利用することもできるだろう。
今回はWindows Server 2012 R2 Preview版のHyper-V機能の概要とUEFIサポートなどについて説明した。これら以外のHyper-Vの機能については次回解説する。
Copyright© Digital Advantage Corp. All Rights Reserved.