章 8. 虛擬化

8.1. KVM

virtio-SCSI

KVM 的虛擬化儲存堆疊已經有所改進,新增了 virtio-SCSI 功能(基於 SCSI、給 KVM 使用的儲存架構)。Virtio-SCSI 提供了直接連結 SCSI LUN 的功能,顯著改善了 virtio-blk 的可擴充性。virtio-SCSI 的優勢在於它能處理上百、上千個裝置,而 virtio-blk 只能處理約廿五個裝置,並會耗盡 PCI 插槽。
Virtio-SCSI 現在能繼承目標裝置的的功能組:
  • 透過 virtio-scsi 控制器連接虛擬硬碟或光碟、
  • 透過 QEMU scsi-block 裝置,將實體 SCSI 裝置從主機端送往客座端、
  • 允許每一台客座端使用上百、上千台裝置;不再侷限於先前 virtio-blk 的約廿五台裝置限制。
virtio-scsi 是 Red Hat Enterprise Linux 6.3 的技術預覽功能,並在 Red Hat Enterprise Linux 6.4 中成為完整支援功能。最新的 virtio-win 驅動程式現在也支援 Windows 客座端(不含 Windows XP)。

支援 Intel 的下一代 Core 處理器

Red Hat Enterprise Linux 6.4 在 qemu-kvm 中新增了對 Intel 下一代 Core 處理器的支援,這樣 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 系列處理器

現在 qemu-kvm 支援 AMD Opteron 4xxx 處理器。這允許 KVM 客座端使用此處理器系列的新功能,例如 F16C instruction set、Trailing Bit Manipulation、BMI1(Bit-Manupulation Instructions 1)decimate functions、以及 Fused Multiply-Add (FMA) 指令集。

透過 SPICE,使用 USB 轉送功能進行客座端線上遷移

Red Hat Enterprise Linux 6.4 支援透過 SPICE,使用 USB 轉送功能進行客座端線上遷移,同時維護所有現有已配置裝置的 USB 裝置重導向功能。

使用 USB 裝置線上遷移客座端

在 Red Hat Enterprise Linux 6.4 中,KVM 支援使用 USB 線上裝置遷移客座端。RHEL 6.4 支援以下裝置:Enhanced Host Controller Interface (EHCI) 與 Universal Host Controller Interface (UHCI) 本地穿透與模擬裝置,例如儲存裝置、滑鼠、鍵盤、集線器等。

更新 QEMU 客座端代理程式

Red Hat Enterprise Linux 6.4 已完整支援 QEMU 客座端代理程式(由 qemu-guest-agent 套件所提供),目前已更新至上游版本 1.1,同時包括了以下顯著的功能更新,並修正了錯誤:
  • guest-suspend-diskguest-suspend-ram 指令可以用來將 Windows 作業系統休眠至記憶體或硬碟。
  • 現在 guest-network-get-interfaces 指令可以用來取得 Linux 中的網路介面資訊。
  • 這更新提供了凍結檔案系統的支援之改進與修正。
  • 這更新包括多個文件修正與小幅改進。

半虛擬化的中斷結束指示(PV-EOI)

對於每個中斷,執行 RHEL 6.3 以前版本的主機與客座端需要兩個 VM 退出程式(從虛擬機器到 Hypervisor 的文本切換):一個是為了投入中斷,另一個是提出訊號,表示中斷結束。當主機與客座端系統更新至 RHEL 6.4 以上,便可以與版虛擬化的中斷結束功能溝通,同時每個中斷只需要一次切換。因此,主機與客座端皆使用 RHEL 6.4 以上時,退出的數量會減半,例如 virtio 網路裝置的連入網路交通。這會顯著降低主機處理器的負載。請注意,只有 edge 中斷才會有所改善:例如 e1000 網路卡使用的是 level 中斷,其效能就不會改善。

可配置的音效通透功能

除了被偵測為 line-inline-out 以外,客座端的音效裝置可以被偵測為 microphone。音效裝置可以在客座端應用程式中正常運作,即使這些應用程式只接受特定類型的錄音輸入與音效亦然。

8.2. Hyper-V

包括 Microsoft Hyper-V 驅動程式,也支援客座端安裝此驅動程式

在 Microsoft Hyper-V 上整合 RHEL 客座端的安裝,以及支援 RHEL 6.4 上的 Hyper-V 半虛擬裝置,能讓使用者在 Microsoft Hyper-V 上執行 RHEL 6.4 客座端。以下 Hyper-V 驅動程式與時鐘來源已經加入 RHEL 6.4 的 kernel:
  • 網路驅動程式(hv_netvsc
  • 儲存裝置驅動程式(hv_storvsc
  • HID 相容的滑鼠驅動程式(hid_hyperv
  • VMbus 驅動程式(hv_vmbus
  • 工具程式驅動程式(hv_util
  • IDE 磁碟驅動程式(ata_piix
  • 時脈來源(i386, AMD64/Intel 64:hyperv_clocksource
RHEL 6.4 也包括了 Hyper-V 作為時脈來源,以及客座 Hyper-V 的 KVP(Key-Value Pair)daemon(hypervkvpd)用來把基本資訊,例如客座端 IP、FQDN、作業系統名稱、以及作業系統版本等,透過 VMbus 傳送到主機上。

8.3. VMware ESX

VMware PV 驅動程式

VMware 半虛擬驅動程式已經更新,已提供在 VMware ESX 中使用 RHEL 6.4 時,開機即用的無縫體驗。Anaconda 安裝程式也已經更新,以在安裝過程中列出驅動程式。以下驅動程式已經更新:
  • 網路卡驅動程式(vmxnet3
  • 儲存裝置驅動程式(vmw_pvscsi
  • 記憶體飄移驅動程式(vmware_balloon
  • 滑鼠驅動程式(vmmouse_drv
  • 顯示卡驅動程式(vmware_drv