Linux on Hyper-V 最新情報(2012年1月) の補足|Windows Server|ブログ|Computerworld

header_cwr_head_mid_fl_logo

CW_ウルトラバナー_Topics04

CW_ウルトラバナー_Topics05

CW_ウルトラバナー_Topics06

CW_ウルトラバナー_Topics07

CW_ウルトラバナー_Topics08

Windows Server

Linux on Hyper-V 最新情報(2012年1月) の補足

Posted by 山市良 ( 2012年02月06日 )

前回説明したlinux-3.3-rc1 (← Linux IS for Hyper-V ではなく、新しいLinux カーネルのことです。1/31 に rc2 が出てます。→ www.kernel.org) に含まれるHyper-V用の統合サービスコンポーネント「Microsoft Hyper-V drivers」は、仮想マシン バス (hv_vmbus)、統合サービス ユーティリティ (hv_utils)、およびストレージ、ネットワーク、マウスの各デバイス ドライバー (hv_storvsc、hv_netvsc、hid_hyperv) で構成されます。これらのコンポーネントでサポートされる機能について補足しておきます。

Hyper-Vの基本

まずはじめに、Hyper-VにおけるI/Oの基本をおさらいしておきましょう。Hyper-Vに最適化された仮想マシンは、統合デバイス(Synthetic Deviceと呼ばれます)を使用して、ネットワークやストレージのI/Oを行います。Hyper-Vでは、ルートパーティションのホストOS(管理OS)が、物理的なデバイスに対応するドライバーを持ち、直接のI/Oを行います。ゲストOSのVSC(Virtualization Service Client)というコンポーネントが、ホストOS(管理OS)のVSP(Virtualization Service Provider)と仮想マシンバス(VMBus)を介して通信してI/Oを行います。絵にするとこんな感じ。

Windows ゲストも Linux ゲストも、Hyper-V 上で同じように動作します。Linuxゲストでは、「hv_vmbus」というカーネルモジュールが、仮想マシン バスの認識をサポートします。この絵とは違い、Linux ゲストのサポートのために Hypercall Adapter を挟んで、Xen カーネル (Dom U) がのっかってる絵を見たことがあるかもしれませんが、それは Hyper-V 初期の実装形態であり、現在は違っています。→ 参考 「そういえば Xen と Hyper-V4 件 の相互運用性の話はどうなった?

About Virtual Machines and Guest Operating Systems

Hyper-V でサポートされるゲスト OS の一覧「About Virtual Machines and Guest Operating Systems」では、正式なサポート対象 Linux ゲストとして SUSE Linux Enterprise Server (SLES)、Red Hat Enterprise Linux (RHEL)、CentOS がリストされています (仮想プロセッサは1、2、または4)。正式サポートの Linux ゲストに対しては、Linux Integration Services (Liunx IS) for Hyper-V が提供され、これによりサポートされる統合サービス機能が次のようにまとめられています。言葉だけでは、何のことか分かり難いですね。

RHEL 6.x、CentOS 6.x 向けの Linux IS v3.2
[URL] http://www.microsoft.com/download/en/details.aspx?id=28188
SLES 10、RHEL 5.x、CentOS 5.x 向けの Linux IS v2.1
[URL] http://www.microsoft.com/download/en/details.aspx?id=24247

 

前回説明したlinux-3.3-rc1 (rc2 でも同じ) に統合されているMicrosoft Hyper-V driversの環境で、各機能を見ていきましょう。linux-3.3 では、サポート対象外の Linux ディストリビューションの多くでも、サポート対象のディストリビューションと同等の機能がすべて利用できることがわかると思います (linux-3.3 より前でも、既に Hyper-V drivers (staging) が標準で組み込まれるディストリビューションもあります。openSUSE とか)。

IDE

仮想マシンのIDEコントローラーに接続された仮想ハードディスク(VHD)または物理ディスク(パススルーディスク)、およびDVDドライブ(物理ドライブまたはISOイメージ)のことです。IDEはエミュレートされたデバイスであり、WindowsやLinux標準のドライバーでI/Oすることができます。ゲストOSをインストールするには、標準のドライバーでアクセス可能なIDE接続のディスクとDVDドライブが必要です。

次に説明するSCSIデバイスをサポートするための「hv_storvsc」が組み込まれると、IDEディスク(およびDVDドライブ)の接続状態が変わります。これは、エミュレートされたデバイスのオーバーヘッドを解消する、「Fastboot path」という機能が働いているためです。IDE経由のI/Oは、仮想マシンバス経由の「hv_storvsc」にリダイレクトされるようになっています(たぶん)。元々の/dev/hda(接続タイプ:ATA)は、/dev/hda(接続タイプ:不明)に代わり、実際のアクセスは/dev/sda(接続タイプSCSI)に対して行われるようです。

SCSI

仮想マシンのSCSIコントローラーに接続された仮想ハードディスク(VHD)または物理ディスク(パススルーディスク)です。SCSIディスクはVSCタイプの統合デバイスであり、認識するためにはMicrosoft Hyper-V drivers(またはLinux IS)の「hv_storvsc」が必須です。そのため、SCSIディスクにOSをインストールして、起動することはできません。なお、Linuxゲストでは、SCSIディスクのホットアド/リムーブはサポートされません (Windows ゲストではサポート)。

Networking

Hyper-Vの仮想マシンには、2つのタイプのネットワークアダプターを割り当てることができます。標準の「ネットワークアダプター」は、VSCタイプの統合デバイスであるため、認識するためにはMicrosoft Hyper-V drivers(またはLinux IS)の「hv_netvsc」が必須です。

OSのインストールや構成時など、VSCタイプのデバイスを利用できない環境でネットワークアクセスを必要とする場合は、「レガシーネットワークアダプ ター」を一時的に割り当てます。こちらは、Intel(DEC) 21140をエミュレートしたデバイスになり、OSの標準ドライバーで利用できます。「hv_netvsc」を入れたあとは、デバイスを削除しちゃって構いません。

長くなりそうなので、今回はここまで。来週は、Mouse、Time Synchronization、Operating syste shutdown、Heartbeat、Data Exchange について説明します。

ページの先頭へ戻る