第8章 仮想化
8.1. KVM
virtio-SCSI
KVM 仮想化のストレージスタックが改善され追加の virtio-SCSI (SCSI をベースとした KVM のストレージアーキテクチャ) 機能が搭載されました。 Virtio-SCSI により SCSI LUN に直接接続できるようになるため、 virtio-blk に比べスケーラビリティが大幅に向上されます。 約 25 のデバイスしか処理できずに PCI スロットを消耗する virtio-blk に比べて、 Virtio-SCSI の利点は数百のデバイスを処理する能力がある点です。
Virtio-SCSI は次のようなことができるデバイスの機能を継承できるようになります。
- 仮想ハードドライブまたは CD を virtio-scsi 経由で接続する
- QEMU scsi-block デバイス経由で SCSI 物理デバイスをホストからゲストに通過させる
- ゲストごと数百単位のデバイス使用を許可する、 virtio-blk では最大 25 デバイスだった制限を改善
virtio-scsi は Red Hat Enterprise Linux 6.3 ではテクノロジープレビューとして採用されていましたが、 Red Hat Enterprise Linux 6.4 では完全にサポートされるようになります。 Windows のゲスト (Windows XP を除く) も最新の virtio-win ドライバーでサポートされます。
Intel 製次世代コアプロセッサに対応
Red Hat Enterprise Linux 6.4 では、qemu-kvm で Intel 製次世代コアプロセッサに対応するようになるため、 このプロセッサで提供される新しい機能を KVM ゲストで利用できるようになります。 もっとも重要となる機能は、 Advanced Vector Extensions 2 (AVX2)、 Bit-Manipulation Instructions 1 (BMI1)、 Bit-Manipulation Instructions 2 (BMI2)、 Hardware Lock Elision (HLE)、 Restricted Transactional Memory (RTM)、 Process-Context Identifier (PCID)、 Invalidate Process-Context Identifier (INVPCID)、 Fused Multiply-Add (FMA)、 Big-Endian Move instruction (MOVBE)、 F Segment and G Segment BASE instruction (FSGSBASE)、 Supervisor Mode Execution Prevention (SMEP)、 Enhanced REP MOVSB/STOSB (ERMS) になります。
AMD Opteron 4xxx シリーズの CPU に対応
qemu-kvm で AMD Opteron 4xxx シリーズのプロセッサに対応するようになります。 このプロセッサシリーズの新機能となる F16C 命令セット、 Trailing Bit Manipulation、 Bit-Manipulation Instructions 1 (BMI1) 破棄機能、 Fused Multiply-Add (FMA) 命令セットなどが KVM ゲストで利用できるようになります。
SPICE による USB 転送を使ったゲストのライブ移行
Red Hat Enterprise Linux 6.4 では、 設定済みデバイスに対する既存の USB デバイスのリダイレクトは維持しながら、 SPICE による USB 転送を使ったゲストのライブ移行に KVM が対応できるようになります。
USB デバイスを使ったゲストのライブ移行
Red Hat Enterprise Linux 6.4 では、USB デバイスを使ったゲストのライブ移行が KVM で対応できるようになります。 対応しているデバイスは以下の通りです。 拡張ホストコントローラーインターフェース (EHCI) およびユニバーサルホストコントローラーインターフェース (UHCI) のローカルに通過し模倣されるデバイス、 たとえば、 ストレージデバイス、 マウス、 キーボード、 ハブなど。
QEMU ゲストエージェントの更新
QEMU ゲストエージェント (qemu-guest-agent パッケージで提供) が Red Hat Enterprise Linux 6.4 から完全対応になります。 アップストリームのバージョン 1.1 に更新され次のような優れた機能強化、 バグ修正が同梱されます。
- Windows システムで RAM やディスクに対して一時停止を行なう場合に
guest-suspend-disk
とguest-suspend-ram
のコマンドを使用できるようになります。 - Linux でネットワークインターフェースの情報を取得する場合に
guest-network-get-interfaces
コマンドが使用できるようになります。 - この更新ではファイルシステムのフリーズに関するサポートの改善および修正が提供されます。
- この更新にはドキュメントに関する修正および改善が含まれます。
準仮想化割り込み終点 (End-of-Interrupt) の指示 (PV-EOI)
Red Hat Enterprise Linux 6.3 およびそれ以前のバージョンを稼働しているホストやゲストの場合、 各割り込みに対して仮想マシンの出口が 2 つ必要になります (仮想マシンからハイパーバイザーへのコンテキストスイッチ)。 ひとつは割り込みをインジェクトするため、 もう一つは割り込みの終点を合図するためです。 ホストとゲストの両方のシステムを Red Hat Enterprise Linux 6.4 またはそれ以降のバージョンに更新すると準仮想化の end-of-interrupt 機能のネゴシエートが可能になるため、 各割り込みに対して必要となるスイッチが一つのみになります。 結果、 Red Hat Enterprise Linux 6.4 またはそれ以降のバージョンをホストとゲストの両方に使用することで、 virtio ネットワークデバイスを使った着信ネットワークトラフィックなど割り込みに負担が多くなる負荷に対する出口の数が半分に低減されます。 これにより割り込みに負担が多くなる負荷の CPU 使用率がかなり減少することになります。 ただし、 改善されるのはエッジ割り込みに限られる点に注意してください。 たとえば、 e1000 ネットワーキングではレベル割り込みが使用されるためこの様な改善は見られません。
設定可能なサウンドパススルー
ゲストシステムのサウンドデバイスを
ライン入力端子
や ライン出力端子
として検出する他、 マイクロフォン
や スピーカー
としても検出できるようになります。 音声記録やオーディオに特定の種類の入力しか受け付けないゲストアプリケーションでもサウンドデバイスが正しく機能できるようになります。
8.2. Hyper-V
Microsoft Hyper-V のドライバーが同梱されゲストのインストールに対応
Microsoft Hyper-V 上の Red Hat Enterprise Linux 6.4 での Hyper-V の準仮想化デバイス対応、 また Red Hat Enterprise Linux ゲストインストールの統合などにより、 ユーザーは Red Hat Enterprise Linux6.4 を Microsoft Hyper-V ハイパーバイザーの上でゲストとして稼働させることができるようになります。 次のような Hyper-V ドライバーおよびクロックソースが Red Hat Enterprise Linux 6.4 に同梱されるカーネルに追加されています。
- ネットワークドライバー (
hv_netvsc
) - ストレージドライバー (
hv_storvsc
) - HID 準拠のマウスドライバー (
hid_hyperv
) - VMbus ドライバー (
hv_vmbus
) - util ドライバー (
hv_util
) - IDE ディスクドライバー (
ata_piix
) - クロックソース (i386、 AMD64/Intel 64:
hyperv_clocksource
)
また、 Red Hat Enterprise Linux 6.4 ではクロックソースとしての Hyper-V およびゲストの Hyper-V Key-Value Pair (KVP) デーモンにも対応しています (
hypervkvpd
)。 これによりゲストの IP、 FQDN、 OS 名、 OS リリース番号などの基本的な情報が VMbus 経由でホストに渡されます。
8.3. VMware ESX
VMware PV ドライバー
VMware の準仮想化ドライバーが更新され、 VMware ESX で Red Hat Enterprise Linux 6.4 を稼働させる作業がシームレスになりました。anaconda インストーラーも更新されインストール中にドライバーの一覧を表示するようになります。 以下のドライバーが更新されています。
- ネットワークドライバー (
vmxnet3
) - ストレージドライバー (
vmw_pvscsi
) - メモリーバルーンドライバー (
vmware_balloon
) - マウスドライバー (
vmmouse_drv
) - ビデオドライバー (
vmware_drv
)