Hyper-Vで第2世代を選択するメリット・デメリット

Windows Server 2012 R2 からは「世代」を決めなければならない

Hyper-V における「世代」とは、Windows Server 2012 R2 Hyper-V から新たに追加された概念だ。以降の Hyper-V では下図のように仮想マシンの作成時に世代を選択しなければならない

Windows Server 2012 R2 の仮想マシン作成画面

そもそもなぜ「第2世代」が登場したのか

第2世代が登場した一番大きな理由は、現代の OS が仮想化に完全に対応し、仮想化を意識した処理が行えるようになったからだ。

いわゆる「第1世代」と呼ばれている旧来の仮想マシンは「仮想化」というものを意識した処理を行うことができなかった。

そのため、仮想化ソフトウェアは仮想マシンのために様々なデバイスをエミュレートしなくてはならず、決してシンプルとは言えなかった。

この “古いエミュレート” は現代の仮想化に対応している OS にとっては必要のないものなので、Windows Server 2012 R2 Hyper-V からは「世代」という概念のもと、仮想化を理解することのできない古いエミュレートが必要な旧来 OS のための「第1世代」。物理環境と仮想環境で動作するように設計され、より効率的なエミュレーションデバイスに刷新した現代 OS のための「第2世代」が用意された。

「第2世代」の方が優れている?

「現代 OS のための第2世代」と先述したが、具体的に言うと次のオペレーティングシステムを第2世代仮想マシンにインストールすることができる。

  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2016
  • Windows 8 64bit
  • Windows 8.1 64bit
  • Windows 10 64bit
  • Ubuntu 14.04 などのネイティブ UEFI サポートと Hyper-V SCSI コントローラを備えた 64bit の Linux ディストリビューション

また、これらの OS は第1世代仮想マシンにインストールすることもできる。

では、どちらにインストールしたほうがよいのかと言うと、基本的には第2世代でいいだろう。

以下は第2世代に関する評価を抜粋したもの(実際はより深く言及しているので一読したほうがいい)だが、第2世代仮想マシンを “選択しない方がいい” 理由は記載されていない。

 第2世代仮想マシンは、Windows Server 2012 R2 Hyper-V で導入されました。これは、IDE コントローラー、PS/1 I/O デバイス、COM ポート、レガシネットワークアダプター、フロッピードライブなどのエミュレートされたコンポーネント(PCI-ISA ブリッジなど)を必要としない、新世代のオペレーティングシステムに対応しています。第2世代仮想マシンでは、これらのエミュレートされたコンポーネントを削除して、シンプルで効率的な仮想マシンを提供します。

 

マスタリング Windows Server 2016 Hyper-V より引用

 第2世代の仮想マシンでは、IDEやレガシーネットワークアダプターがサポートされませんが、SCSIからの起動や、VMBusに直結されたネットワークアダプターからのPXEブートが可能になります。このような変更により、第2世代の仮想マシンは第1世代の仮想マシンよりも起動が圧倒的に速くなっています。

しかし、第2世代の仮想マシンは、ゲストOSとしてWindows 8(64bit)と Windows Server 2012以降しかサポートしていません。また、第1世代と第2世代の相互変換は、現状ではサポートされていません。最新のOSを利用する場合は、第2世代の仮想マシンをお勧めします。

 

Microsoft Windows Server 2012 R2 Hyper-V仮想化技術活用ガイド[改訂新版] より引用

 Windows Server 2012世代のHyper-Vまで、仮想マシンにエミュレーションされるデバイス(BIOS、システムボード、ディスクコントローラー、ネットワークコントローラーなど)はすべて共通でした。共通であることはメリットである反面、レガシーな技術に引きずられてしまうために性能や利便性の面ではデメリットであるといえます。

最新のWindows Server 2012 R2では、これらのエミュレーションデバイスを刷新した第2世代仮想マシンが追加されました。利便性の向上した第2世代仮想マシンだけでなく、互換を重視して従来どおり第1世代仮想マシンで作成することもできます。

 

Windows Server 2012 R2 Hyper-Vシステム設計ガイド より引用

Windows Server 2012 R2 以降の Hyper-V では、第1世代の仮想マシンと第2世代の仮想マシンを作成できるようになりました。第2世代の仮想マシンは新しいハードウェア環境をサポートしているため、機能やパフォーマンスが向上しています。

 

ひと目でわかるHyper-V Windows Server 2016版 より引用

実際には第1世代を選択したほうがいいモデルも存在するが、ごく限られている。(詳細は「第2世代のデメリット」にて紹介)

第2世代のメリット

第2世代仮想マシンが第1世代仮想マシンに比べてより効率化された仮想マシンであることは理解してもらえたと思うが、ここからは具体的に第2世代仮想マシンのメリットを見ていく。

実のところ、パフォーマンスに関しては第1世代と第2世代で違いはない

第 2 世代仮想マシンはパフォーマンスが向上しますか?

日常的な仮想マシンの実行では、第 1 世代仮想マシンと第 2 世代仮想マシンの間にパフォーマンスの違いはありません。 第 2 世代仮想マシンでは、仮想マシンの起動とインストールが若干向上する可能性があります。

Microsoft Docs – 第2世代仮想マシンの概要 より引用

意外に思われるかもしれないが、第2世代で仮想マシンを作成したからといって、第1世代よりパフォーマンスに優れているわけではない。

しかし、上記に記載されているとおり例外として「仮想マシンの起動」と「インストール速度」は向上するらしい。本当に向上するのか実際に試してみたのが以下の内容だ。

起動速度・インストール速度が速い

起動、インストール速度が本当に早くなるのか試してみたところ、私の検証環境では以下のような結果になった。(管理OS、ゲスト OS ともに Windows Server 2012 R2)

Windows セットアップからパスワード設定画面まで

  • 第1世代:8分20秒
  • 第2世代:4分26秒

 

起動からログオン画面まで

  • 第1世代:20秒
  • 第2世代:13秒

Windowsセットアップ

パスワード設定画面

第1世代と比較した場合、第2世代は起動・インストールが半分程度の時間で実行できた。

第2世代仮想マシンは起動速度、インストール速度の向上以外にも以下のような利点がある。

仮想マシンがオンラインの状態で仮想ハードディスクを拡張できる

第2世代と “.vhdx” 形式の仮想ハードディスクを組み合わせることで、仮想マシンが起動中でもディスクを拡張することが可能だ。

Windows Server 2012 R2 Hyepr-V の場合だと、デフォルトで “.vhdx” が選択されるため(第1世代でも第2世代でもデフォルトはvhdx)第2世代で仮想マシンを作成した場合、仮想ハードディスクのオンライン拡張が可能になるイメージで問題ない。

Tips:「.vhd」と「.vhdx」について

 

Microsoft の仮想化の歴史は2004年に発売した「Virtual PC」からスタートしたわけだが、その当時から仮想ハードディスクには “.vhd” 形式が利用されていた。

そんな中 Windows Server 2012 Hyper-V から “.vhdx” 形式の仮想ハードディスクが登場した。VHDXは仮想ハードディスクのサイズ上限が2TBから64TBまで引き上げられるなど、VHDの上位互換と言っていい。

通常であれば “.vhd” を選択する意味はないが、後述する Microsoft Azure が 2019年1月現在の時点で “.vhdx” に対応していない。そのため “.vhd” を選択する理由になるかもしれないが、”.vhd” と “.vhdx” は相互変換可能なため、やはり “.vhd” を選択する意味はない。

第1世代でもデフォルトは”.vhdx”になる(上図は Windows Server 2012 R2)

第2世代のデフォルトも”.vhdx”(上図は Windows Server 2012 R2)

では実際に起動中の仮想マシンの仮想ハードディスクを拡張しようとするとどうなるか。第1世代の場合は下図のようにグレーアウトして触れない。

第1世代の場合、仮想マシンが起動しているとグレーアウトする

第2世代の場合、仮想マシンが起動中でもグレーアウトしない。

第2世代はグレーアウトしない

上図の画面で仮想ハードディスクの「編集」を選択すると仮想ハードディスクの拡張が可能となる。

Hyper-V側で仮想ハードディスクの容量を拡張したわけだが、仮想マシン側からはどう見えるかというと、下図のように未割り当て領域が増えた扱いになる。

仮想マシンの「コンピューターの管理」画面

この未割り当て領域を既存のボリュームにマージすることで、仮想マシン側でハードディスクの容量を増加させることが可能となる。

なお、ここまで再起動は行っておらず、仮想ハードディスクの拡張に再起動が必要ないことがわかる。

その他のメリット

第2世代はほかにも以下のような特徴がある。

  • 標準のネットワークアダプターを使用したPEXブート
  • SCSIハードディスクからの起動
  • セキュアブート
  • UEFIファームウェアのサポート

第2世代のデメリット

第2世代仮想マシンにもデメリットは存在する。

それも、結構重要なことなので把握しておく必要がある。大きなデメリットとして以下の2つが挙げられる。

  • 物理ホストに備わっているCD/DVDドライブを仮想マシンで使用することができない
  • Microsoft Azure が第2世代に対応していない

上記2つが許容できない場合は、仮想マシンは第1世代で作成しなければならない。

各デメリットについての詳細を以下に記載する。

Hyper-V ホストに備わっている CD/DVD ドライブを仮想マシンで使用することができない

第2世代の仮想マシンは Hyper-V ホストにある物理的な CD/DVD ドライブを利用することができない。

物理 CD または DVD ドライブを第 2 世代仮想マシンに接続できますか

いいえ。 第 2 世代仮想マシンの仮想 DVD ドライブは、ISO イメージ ファイルだけをサポートします。

Microsoft Docs – 第2世代仮想マシンの概要 より引用

下図は Windows Server 2012 R2 で第1世代の仮想マシンを作成する際のものだが、メディアの選択肢に「物理 CD/DVD ドライブ」というものが存在する。

第1世代のインストールオプション

しかし、作成ウィザードで第2世代を選択すると、メディア欄に「物理 CD/DVD ドライブ」が存在しないことがわかる。

第2世代のインストールオプション

第2世代の仮想マシンはホストの CD/DVDドライブを使用することができない。

Microsoft Azure が第2世代に対応していない

※2019年5月27日現在、Azure が第2世代への対応を始めたとの情報があります。詳しくは「@IT」で。

2019年1月現在において Microsoft Azure は第2世代の仮想マシンと “.vhdx” 形式の仮想ハードディスクに対応していない。

Microsoft Azure への移行を考えているのであれば、「第1世代かつVHD形式の仮想ハードディスク」で仮想マシンを構築する必要がある。

VHDとVHDXは構築後に相互変換が可能だが、世代を変更することは基本的に不可能なので注意が必要だ。

Azure では、VHD ファイル形式で容量固定ディスクの第 1 世代の VM のみがサポートされています。

VHD のサイズの上限は、1,023 GB です。 第 1 世代の VM は、VHDX ファイル システムから VHD ファイル システムに、また容量可変ディスクから容量固定ディスクに変換できます。

ただし、VM の世代を変更することはできません。

 

Microsoft Azure – Azure にアップロードする Windows VHD または VHDX を準備する より引用

世代を変換することは可能なのか

第1世代と第2世代の仮想マシンは同じ Hyper-V 基板上で混在することが可能なので、ほとんどの場合で世代の変換を行うことはない。

しかし、Azure への移行に伴いどうしても世代を変換したいという場面が発生するかもしれない。世代の変換は基本的に不可能と述べたが、リスクを受け入れるのであれば変換する方法は存在する。

例えば Windows Server 2012 R2 の場合は Microsoft 非公式の世代変換スクリプトが公開されている。

Windows デベロッパー センター:Hyper-V generation 2 VM conversion utility (Convert-VMGeneration)

ここでは割愛するが、 Windows PE を利用した移行方法などもあるようだ。

だが、Windows Server 2016 Hyper-V の「仮想マシンの新規作成ウィザード」でも、世代の選択画面に「仮想マシンの作成後は、世代を変更することはできません。」という警告は表示される。

Microsoft のスタンスは「世代の変換はできない」ということだろう。

第1世代と第2世代、どちらを選択すべきか

第1世代と第2世代、どちらを選択すべきかだが、冒頭もで述べたように Windows Server 2012 以降であれば基本的に「第2世代」を選択したほうがいいだろう。

ただし、ゲスト OS が Windows Server 2016 だからといって、絶対に第2世代で作成しなければならないかというと、そうでもない。

将来的に Azure に移行する可能性がある場合や、どうしてもホストの物理 CD/DVD ドライブが仮想マシンで利用できなくてはならない場合などは第1世代を選択するのも柔軟な考えの一つと言える。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)