Windows 8.1でのHyper-V機能強化ポイント

2013年10月17日に日本語版Windows 8.1がRTM(正式製品)となりました。
Windows 8.1では多くの機能が追加・変更されています。
Windows 8系のHyper-Vも機能強化されています。
Windows 8.1のHyper-Vの大きな機能強化点は以下の通りです。


ここでは上記の機能強化された点について主にその活用手順等について紹介致します。

今回使用したPCのハードウェア/ソフトウェア構成は以下の通りです。


■ 第2世代仮想マシンサポート

  1. 仮想マシンの世代指定
    仮想マシンの新規作成ウィザードで世代を選択する画面が表示されます(デフォルトは第1世代)。
    従来タイプの仮想マシンは第1世代を選択し、より可用性・安全性の高い仮想マシンについては第2世代を選択します。

  2. 第2世代仮想マシンの設定
    今回は「HVWin8x64-G2」という第2世代仮想マシンを定義してWindows 8 Pro (x64)をインストールしてみました。
    仮想マシンの新規作成ウィザードで第2世代を選択しても仮想DVDドライブは定義されません
    第2世代仮想マシンのOSインストールでDVDを使用する場合はSCSI接続の仮想DVDドライブを定義する必要があります。
    仮想マシンの「設定」画面の[ハードウェアの追加]でSCSIコントローラ下に仮想DVDドライブを追加してブート順序を変更するのが一般的です。
    尚、仮想DVDドライブには親パーティションの物理DVDドライブを割り当てることはできず、DVDイメージファイルの割り当てだけとなります。

    第2世代仮想マシンでは高度な設定ができます。
    仮想ディスクに対する高度な設定
    ネットワークに対する高度な設定

  3. 仮想マシンへのWindows 8 Pro (x64)のインストール
    仮想マシンへのWindows 8 Pro (x64)のインストールは仮想マシン接続後に
    仮想マシン接続の[メディア]-[DVDドライブ]-[ディスクの挿入]でWindows 8 Pro (x64)のインストールDVDのイメージファイルを指定することから始めます。
    その後、仮想マシンを[起動]すればインストーラ(Windowsセットアップ)が開始されます。
    Windows 8 Pro (x64)のインストールは実機の場合と同じ流れで行います(例:基本項目確認画面)。

    インストール完了後のデスクトップ例;
    [デバイスマネジャ]を含めたデスクトップ
    [ディスクの管理]を含めたデスクトップ(仮想ディスクにはEFIシステムパーティションが自動生成されています)



■ 仮想ディスクサイズの動的拡張

  1. 仮想ディスクサイズの拡張について
    (1)Virtual PC 2007では仮想ディスクサイズの拡張機能はありませんでした。
    (2)Windows 7のWindows Virtual PCにも仮想ディスクサイズの拡張機能はありませんでした。
    (3)Windows 8のHyper-Vでは仮想マシン停止時の仮想ディスクサイズの拡張機能がサポートされていました(可変容量タイプ、固定容量タイプ共にサポート済み)。
    仮想マシン停止時の場合はDISKPARTコマンドのサブコマンドで未割り当て領域を追加してボリュームの拡張まで行うことができます。
    > diskpart
    DISKPART> select vdisk file="C:\Users\Public\Documents\Hyper-V\Virtual hard disks\xxxxxxxxs.vhdx"
    DISKPART> detail vdisk
    [仮想ディスクサイズの拡張例]
    DISKPART> expand vdisk maximum=163840 ※ (1024x160=163840MB=160GB)
    DISKPART> detail vdisk
    [ボリュームの拡張例]
    DISKPART> attach vdisk
    DISKPART> list vol
    DISKPART> select volume n ※nはlist volで示されたボリューム番号
    DISKPART> extend size=102400 ※追加された未割り当て領域のうち100GB分だけ既存のボリュームを拡張する
    DISKPART> detach vdisk
    DISKPART> exit

    (4)Windows 8.1のHyper-Vでは第2世代仮想マシンの実行時でも仮想ディスクサイズを動的に拡張できる機能がサポートされました。

  2. 仮想ディスクサイズの動的拡張方法
    (1)第2世代仮想マシンの実行時にその仮想マシンの「設定」画面を開きます。
    (2)設定画面の[ハードドライブ]を選択して右側のアクションから[編集]を選択します。
    第1世代仮想マシンの実行時はその「設定」画面の[ハードドライブ]に対しては[編集]を選択できません(プロパティ表示の[検査]しか選択できません)。
    (3)仮想ディスクの編集ウィザードで[拡張]を選択して拡張後のサイズを指定します。
    (4)「仮想ハードディスクの編集ウィザード」で<完了>ボタンを押すと仮想ディスクに未割り当て領域が追加されます。
    (5)仮想マシン側で[ディスクの管理]を開いて、追加された未割り当て領域にシンプルボリュームを作成したり、
    ボリュームの拡張機能やダイナミックディスクでのリンク機能等を用いて未割り当て領域を有効活用します。


■ 拡張セッションサポート

  1. 拡張セッション開始時の接続ダイアログ
    OSがWindows 8.1やWindows Server 2012 R2の仮想マシンを起動すると「仮想マシン名に接続」ダイアログが表示されます。
    これはRDP接続設定画面に似たダイアログです。



    「ローカルリソース」タブの<詳細>ボタンを押してローカルリソースのリダイクト設定を行うことができます。
    ここでは親パーティションのPCにUSB接続されたRemoteFX USB接続タイプのスキャナ(EPSON GT-X970)を仮想マシン(32ビット版Windows 8.1)にリダイレクトする手順を紹介します。
    尚、親パーティションにはEPSON GT-X970のドライバやそれを使用するアプリ(EPSON Scan等)はインストールされているとします。


  2. Windows 7マシンから仮想マシンへのRDP接続による仮想マシンでのスキャナ/Webカメラ利用
    Windows 8/Windows 7 SP1マシンでは上述の「親パーティションでのローカルグループポリシー設定変更」と同じ設定が可能となります。
    つまりWindows 8/Windows 7 SP1マシンに接続されたスキャナ/WebカメラをRDP接続先仮想マシン/実マシンにリダイレクトして利用することが可能となります。
    但し、仮想マシンのOSが「RemoteFX USBデバイスリダイレクト」に対応している必要があり、
    Windows 8.1がリリースされた時点ではその仮想マシンのゲストOSはWindows 8.1またはWindows Server 2012 R2/Hyper-V Server 2012 R2でなければなりません。

    ここではMacBook ProにインストールしたWindows 7から仮想マシンにRDP接続してスキャナ/Webカメラを利用する例を紹介致します。
    尚、スキャナ/Webカメラのドライバ/アプリのインストール手順については割愛致します。

  3. サウンド再生
    「拡張セッション」ではRDP接続同様にリモートオーディオを有効にすればサウンド再生も可能です。

  4. 親パーティションと仮想マシン間でのテキストのコピー&ペースト
    「拡張セッション」では親パーティションと仮想マシン間でのテキストの双方向コピー&ペーストができます。

  5. 親パーティションと仮想マシン間での画像のコピー&ペースト
    「拡張セッション」では親パーティションと仮想マシン間での画像の双方向コピー&ペーストができます。

  6. 親パーティションと仮想マシン間でのファイルのコピー&ペースト
    「拡張セッション」では親パーティションと仮想マシン間でのファイルの双方向コピー&ペーストができます。

  7. リモートHyper-V接続での拡張セッション
    仮想マシンが実際に動作するHyper-Vサーバとは別のPCからHyper-Vサーバに接続してそのPCのローカルリソースを仮想マシンで利用することができます。
    Hyper-Vサーバに接続するPCをここでは便宜上Hyper-Vクライアント(Hyper-Vのリモート管理クライアント)と呼ぶことにします。



■ P2V(Physical to Virtual)

Hyper-Vの仮想マシン環境でUSB接続デバイスのソフトウェアをインストールする場合、そのインストーラが途中でメッセージを表示してインストール処理が止まることがあります。
インストーラのメッセージ例(警告扱いですが<OK>クリックで処理が停止します)
これはUSB利用環境が実環境とHyper-V仮想環境で異なることに起因しています。

実機環境でソフトウェアがインストールできてHyper-V仮想マシン環境でそのソフトウェアをインストールできない場合は、
実機環境でそのソフトウェアを一旦インストールしてその実機環境の物理ハードディスクを仮想ハードディスクに変換(P2V)するのが一般的です。

物理ハードディスクを仮想ハードディスクに変換する無償P2VツールとしてはDisk2vhdというものがあります。
Disk2vhdはWindows自体のVSS(Volume Shadow Copy Service)を使用するので実マシンが実行中でもその物理ハードディスクを仮想ディスクに変換できます。
(1)Windows 8.1がリリースされた時点でのDisk2vhdの最新バージョンはVer 2.0です。
(2)Disk2vhdはVHDX, VHDのどちらでも出力できます。
(3)Disk2vhdが出力する仮想ディスクファイルは事前に用意しておく必要はありません。
(4)当然ながらDisk2vhd実行マシン内の出力仮想ディスクファイルは仮想ディスクには含まれません。
(5)Disk2vhdがVHDX形式の仮想ディスクを作成する場合、変換処理が100%になった時点で、
「Error during copy : 要求された操作に対して与えられたバッファが無効です。」というエラーとなってもその仮想ディスクは利用可能です。
(英語版でのメッセージ:「Error during copy : The supplied user buffer is not valid for the requested operation」)
(6)Disk2vhdでは仮想ディスクに含めるパーティションを選択できるようになっていますが未割り当て領域は無条件に仮想ディスクにそのまま確保されます。
その未割り当て領域部分のリサイズはVHD Resizerで行えます(但し、VHD ResizerはVHDX未サポートです)。

Disk2vhdの実行例(未割り当て領域を含む約2TBのWindows 8.1用物理ディスクを仮想ディスクに変換した例です)
Disk2vhdで作成した仮想ハードディスクを[ディスクの管理]で確認すると物理ディスクと全く同じ構成となっています。
・Disk2vhdで作成した仮想ディスクを仮想マシンで使用して最初に起動するとOSが認識するプラットフォームの違いから、
デバイスを準備しています(xx%)」が表示されます。

(7)仮想ディスクのパーティションを操作するとその仮想ディスクを使用した仮想マシンを起動できなくなる場合があります。
多くの場合はブート構成データ (Boot Configuration Data, BCD)におけるdevice, osdeviceの値が"unknown"になってしまうことが原因です。
その場合はOSインストールDVDで仮想マシンをブートしてコマンドプロンプトを開いてbcdeditで正しい値を設定して下さい。



■ P2VによるHyper-V環境でのWindows XP Mode(XPM)の実行

Windows 7のWindows XP Mode及びWindows Virtual PCはWindows 7専用のものでありWindows 8/8.1にインストールすることはできません。
仮にWindows XP Modeの仮想ディスクをHyper-V上に移したとしてもそのWindows XPのライセンスを継続して認証させることはできません。
Windows 8/8.1環境でWindows XP ModeのWindows XPをライセンス再認証なしで使用可能とする最も簡単な方法はWindows XP Modeを含んだWindows 7自体をP2V化してHyper-V上で動作させることです。
Windows 7自体をP2V化してHyper-V上でWindows 7を動作させてそのWindows 7の中でWindows XP Modeを実行させる手順は以下のようになります。
(1)Windows 7の実機環境でDisk2vhdを実行してそのWindows 7がインストールされている物理HDDから仮想ディスクを作成します。
(2)Windows 7の仮想ディスクをHyper-Vホスト(Windows 8/8.1のHyper-V実行マシン)側に持っていきます。
(3)Hyper-VでWindows 7用仮想マシンを定義します(仮想ディスクはDisk2vhdで作成した仮想ディスクファイルを指定します)。
(4)Hyper-VでWindows 7用仮想マシンを起動します。
(5)Hyper-VでWindows 7用仮想マシンを起動して「お使いのPCは修復する必要があります。...エラーコード:0xc000000e」エラーとなった場合には、
Windows 7のインストールDVDからブートして[コンピュータを修復する]操作を行います。
(6)Hyper-VでWindows 7用仮想マシンを起動し、仮想マシン接続の[操作]-[統合サービスセットアップディスクの挿入]を選択して
Windows 7にHyper-V統合サービスをインストールして仮想マシンを再起動します。
(7)Hyper-V上のWindows 7の中でWindows XP Modeを起動します。
(8)このWindows XP Modeの起動で「統合機能を有効にしています」という表示がされますが統合機能の一部は使用不可となるようです。
しかしネットワーク機能は問題なく使用できます。
(9)Windows 7実環境を丸ごとP2V化してHyper-V仮想マシンとして実行させた場合はその中のWindows XP ModeのWindows XPはライセンス認証された状態のままです。
※Windows XP ModeのWindows XPのプラットフォームはP2V化されてもWindows Virtual PCという仮想ハードウェアレイヤが維持されるためライセンスの再認証は求められません。
(10)P2V化されたWindows 7についてはP2V化によってハードウェアやハードウェアドライバの多くの変更が検出されるためライセンスの再認証が必要となります。

上記手順の具体例を以下に紹介します。
尚、ここで具体例として示すP2V化の対象となるWindows 7の実環境は以下の通りです。
・CPU:Intel Core i7 2.67GHz
・メモリ:6GB
・VGAカード:ATI Radeon HD 4600
・HDD:S-ATA 250GB
・ネットワークインタフェース:Intel PRO/1000 GT Desktop Adapter, ASIX AX88772(USBインタフェース)
※Intel PRO/1000 GT Desktop AdapterはHyper-V環境の専用仮想スイッチ用に使用します。
・OS:32ビット版Windows 7 SP1と64ビット版Windows 8.1のデュアルブート環境でWindowsブートローダはWindows 8.1用になっています。
(Windows 7がインストールされている物理HDDの未割り当て領域にWindows 8.1をインストールしたものです)

  1. Windows 7の実機環境でのDisk2vhdの実行
    今回P2V化対象としている物理HDD(250GB)は以下の3パーティション構成になっています。
    (1)システムで予約済み:100MB
    (2)Windows 7上からみたCドライブ:99.90GB NTFS (Windows 7 SP1用)
    (3)Windows 7上からみたFドライブ:133.76GB NTFS (Windows 8.1用)

    2014年1月22日に公開されたDisk2vhd ver2.01での設定は以下のようにしています。
    ・[Use Vhdx]:off
    (仮想ディスクのフォーマットをVHDにしてVHD Resizerで127.5GB以下にすればWindows Virtual PCでも使えるためVHDにしてみました)
    ・[Use Volume Shadow Copy]:on
    ・VHD File name(生成する仮想ディスクファイルのパス):USB接続した1TBのHDDでG:\Temp\i7P2VWin7.vhd
    ・Volumes to include:
    \\?\Volume{bd90...}(「システムで予約済み」の100MBボリューム)
    C:\(Windows 7 SP1のボリューム)
    尚、Windows 8.1が格納されているFドライブ(133.76GB)は選択しないためその領域は仮想ディスクの中ではRAW形式の領域となります。

    下記はDisk2vhdの処理完了画面です。



  2. Windows 7の仮想ディスクをHyper-Vホストで使えるようにする
    Disk2vhdで作成した仮想ディスクファイルを格納した媒体をHyper-Vホストに接続します。

  3. Hyper-VでのWindows 7用仮想マシン定義
    Windows 7用仮想マシン定義を行います。
    仮想ディスクはDisk2vhdで作成した仮想ディスクファイルを指定します。
    今回は様々な仮想マシンの検証用として定義済みのHVWorkという仮想マシンにDisk2vhdで作成した仮想ディスクファイルを指定しました。

  4. Hyper-VでWindows 7用仮想マシンを起動
    Windows 7用仮想マシンを起動すると通常は「お使いのPCは修復する必要があります。...エラーコード:0xc000000e」エラーとなります。
    このWindows 7用仮想マシンを一旦停止させます。
    ※Disk2vhdでWindows 8.1のボリューム内容も含めたVHDXフォーマットの仮想ディスクファイルを作成してそれを使用すれば起動エラーは発生せず
    最初からWindows 7とWindows 8.1の完全なデュアルブート可能な仮想マシン環境となります。

  5. 「お使いのPCは修復する必要があります。...エラーコード:0xc000000e」エラー対策
    Windows 7のインストールDVDからブートして[コンピュータを修復する]操作を行います。
    エラーコード:0xc000000eはBCDでのWindowsブートマネジャやWindowsブートローダでのdevice/osdeviceの値がunknownになっていることが原因で
    \Windows\system32\winload.exeが見つからないということを示しています。
    「システム回復オプション」で<修復して再起動する>をクリックすればOKです。

  6. Windows 7用仮想マシンへの統合サービスインストール
    Windows 7用仮想マシンを起動してログオンします。
    仮想マシン接続の[操作]メニューの[統合サービスセットアップディスクの挿入]を選択して「Hyper-V統合サービスのアップグレード」画面で<OK>をクリックすればアップグレードされます。
    Windows 7 SP1には「Hyper-V統合サービス ver6.1.7601.17514」が含まれていますのでver6.3.9200.16384へのアップグレード扱いになります。
    ちなみにWindows 7の[コントロールパネル]の[プログラムと機能]には「Hyper-V統合サービス」は表示されません。

  7. Windows XP Modeの起動
    スタートメニューから[Windows Virtual PC]を起動し、表示された仮想マシン一覧から[Windows XP Mode.vmcx]を起動します。

  8. Windows XP Modeの統合機能の制限
    Windows XP Modeを起動すると「統合機能を有効にしています」という処理が進む途中で「統合機能は無効になっています」という警告が出ます。
    Windows 7実機環境であればデフォルトのXPMUserでのログオン後、仮想マシンでのネットワークアダプタ設定が「共有ネットワーク(NAT)」であっても
    仮想マシン側のマイコンピュータの「その他」欄にホスト(Windows 7)側のドライブが「i7WIN7PRO(ホスト名)のC」のように表示されてアクセスできますが、
    統合機能の無効化によってそれができなくなってしまいます(マイコンピュータに「i7Win7pro(ホスト名)のC」の表示なし)。

  9. Windows XP ModeのWindows XPのライセンス確認
    Windows XP ModeのWindows XPの中で「C:\Windows\system32\oobe\msoobe /a」を実行します。
    「ライセンス認証の手続きは既に行われています。」と表示されます。

  10. P2V化されたWindows 7のライセンス再認証の実施
    P2V化されたWindows 7についてはP2V化によってハードウェアやハードウェアドライバの多くの変更が検出されるためライセンスの再認証が必要な状態となります。
    (a)P2V化されたWindows 7及びその中でのWindows XP Modeの動作に大きな問題がなくて今後も使用を継続したい場合はWindows 7のライセンス再認証を実施します。
    (b)P2V化されたWindows 7を単なる評価目的で継続利用する場合はWindows 7のライセンスについての「残りのWindows猶予期限リセット可能回数」(最大4回)まで「slmgr /rearm」を実行して評価利用期間を延ばすこともできます。
    (c)Windows 7のP2V化に伴ってMicrosoft Officeでもハードウェア変更検出によってOfficeの再認証が必要になってくる場合があります。
    Microsoft Officeについても必要に応じてライセンス再認証を実施します。

  11. Hyper-Vホスト/Windows 7用仮想マシン/Windows XP Modeの3個のOSが同時に動作しているWindows 8.1のデスクトップ例

  12. その他
    (1)Hyper-V上のWindows7仮想マシンの中ではそのWindows Virtual PC環境でWindows XP Mode以外のOSも動作します。
    Hyper-V上のWindows7仮想マシンの中のWindows Virtual PC環境で実行しているWindows 7の例(ネットワークも使用可)


■ Hyper-V仮想マシンでのLinuxの実行