章 9. 虛擬化

9.1. 以 kernel 為基礎的虛擬化

透過使用 virtio-blk-data-plane 改善區塊 I/O 效能

在 Red Hat Enterprise Linux 7.0 中,virtio-blk-data-plane I/O 虛擬化功能為技術預覽。這項功能延伸了 QEMU 以在專屬的執行續(已優化 I/O 效能)中進行磁碟 I/O。

PCI Bridge

QEMU 先前僅支援至 32 個 PCI 插槽。Red Hat Enterprise Linux 7.0 包含了 PCI Bridge,這能讓使用者配置超過 32 個 PCI 裝置。請注意,目前尚未支援在橋接後方進行裝置的熱插拔。

QEMU Sandboxing

Red Hat Enterprise Linux 7.0 功能透過使用 kernel 系統調用過濾來增強了 KVM 虛擬化的安全性,這改善了主機系統與客座之間的隔離。

QEMU 虛擬 CPU 熱新增支援

Red Hat Enterprise Linux 7.0 中的 QEMU 包含了虛擬 CPU(vCPU)熱新增的支援。虛擬 CPU(vCPU)可新增至一個執行中的虛擬機器上,以滿足工作量需求或是維持與工作量相聯的服務等級條款(Service Level Agreement,SLA)。請注意 vCPU 熱插拔僅在使用 pc-i440fx-rhel7.0.0 機器類型的虛擬機器上受到支援,也就是 Red Hat Enterprise Linux 7.0 上的預設機器類型。

多重佇列 NIC

多重佇列的 virtio_net 提供較佳的延展性;各個虛擬 CPU 皆能擁有獨立的傳輸或接收佇列,以及不會影響其它虛擬 CPU 的獨立插斷機能。

多重佇列 virtio_scsi

多重佇列的 virtio_scsi 提供較佳的延展性;各個虛擬 CPU 皆能擁有獨立的傳輸或接收佇列,以及不會影響其它虛擬 CPU 的獨立插斷機能。

即時遷移的分頁 delta 壓縮

KVM 即時遷移功能已藉由壓縮客座端記憶體分頁,和縮減傳輸遷移資料大小以取得改善。這項功能能讓遷移交集速度更快。

KVM 中的 HyperV Enlightenment

KVM 已更新了數項 Microsoft Hyper-V 功能;比方說記憶體管理單元(Memory Management Unit,MMU)以及虛擬插斷控制器(Virtual Interrupt Controller)上的支援。Microsoft 在客座與主機之間提供了半虛擬化的 API,藉由在主機上實作這項功能並根據 Microsoft 的規格公開,Microsoft Windows 客座端將能改善其效能。

高頻寬 I/O 的 EOI 加速

Red Hat Enterprise Linux 7.0 利用了 Intel 和 AMD 對於進階可程式化插斷控制器(APIC)的增強, 加快了插斷結束(EOI)處理的速度。對於較舊的晶片組,Red Hat Enterprise Linux 7.0 提供了半虛擬化的選項,以進行 EOI 的加速。

KVM 客座端的 USB 3.0 支援

Red Hat Enterprise Linux 7.0 藉由新增了 USB 3.0 hostadapter(xHCI)模擬作為技術預覽,以包含改善的 USB 支援。

Windows 8 和 Windows Server 2012 Guest 支援

Red Hat Enterprise Linux 7.0 支援在 KVM 虛擬機器中執行 Microsoft Windows 8 和 Windows Server 2012 客座。

QEMU 客座的 I/O 節流

這項功能為 QEMU 客座區塊裝置提供了 I/O 節流處理或限制。I/O 節流會使 I/O 記憶體請求的速度慢下來,同時也會使系統的速度慢下來,然而卻可避免系統當機。請注意,您無法節流處理資料面(data plane)。

佔用與通透式巨型分頁的整合

佔用(Ballooning)和通透式巨型分頁(transparent huge page)的整合性在 Red Hat Enterprise Linux 7.0 中已改善。佔用分頁(Balloon page)能被移動或是壓縮,以成為巨型分頁。

由主機截取系統熵

客座端能夠配置 virtio-rng 這個新裝置,這能讓客座端由主機取得系統熵。就預設值,這項資訊源自主機的 /dev/random 檔案,然而主機上的硬體隨機數字產生器(RNG)亦可被使用來作為來源。

Bridge Zero Copy 傳輸

Bridge zero-copy 傳輸乃一項用來改善 CPU 處理大型訊息的效能功能。Bridge zero-copy 傳輸功能透過使用橋接,改善了客座端至外部流量的效能。

即時遷移支援

支援客座從 Red Hat Enterprise Linux 6.5 主機即時遷移至 Red Hat Enterprise Linux 7.0 主機上。

qemu-kvm 中的支援捨棄

透過使用 fstrim 或是 mount -o discard 指令來捨棄支援,在網域的 XML 定義中的 <driver> 要素上加入 discard='unmap' 便能在客座上使用。例如:
<disk type='file' device='disk'>
	<driver name='qemu' type='raw' discard='unmap'/>
  <source file='/var/lib/libvirt/images/vm1.img'>
  ...
</disk>

NVIDIA GPU 裝置指派

Red Hat Enterprise Linux 7.0 支援 NVIDIA 專業版系列顯示裝置(GRID 和 Quadro)的裝置指派作為模擬 VGA 的次要圖形裝置。

半虛擬化 Ticketlock

Red Hat Enterprise Linux 7.0 支援半虛擬化的 ticketlock(pvticketlocks),這能改善 Red Hat Enterprise Linux 7.0 客座端虛擬機器的效能(這些客座端虛擬機器執行於搭載了過度訂閱的 CPU 的 Red Hat Enterprise Linux 7.0 主機上)。

指派的 PCIe 裝置上的錯誤處理

若含有進階錯誤回報(Advanced Error Reporting,AER)的 PCIe 裝置在指派給客座端時遇上了錯誤,受影響的客座將會被停用,並且不會影響主機或是任何其它運作中的客座。裝置的主機驅動程式由錯誤情況下復原之後,客座便可重新啟動。

Q35 晶片組、PCI Express Bus 和 AHCI Bus Emulation

Red Hat Enterprise Linux 7.0 帶入了要在 KVM 客座端虛擬機器中支援 PCI express 匯流排所需要的 Q35 機器類型,作為技術預覽。AHCI 匯流排的支援僅搭配 Q35 機器類型,並且也同為 Red Hat Enterprise Linux 7.0 中的技術預覽。

基於 VFIO 的 PCI 裝置指派

Virtual Function I/O(VFIO)使用者空間驅動程式介面為 KVM 客座虛擬機器提供了改善的 PCI 裝置指派方案。VFIO 提供了 kernel 等級的裝置隔絕強制機制,改善了裝置存取上的安全性,並且與安全開機之類的機能相容。VFIO 取代了 Red Hat Enterprise Linux 6 中所使用的 KVM 裝置指派機制。

Intel VT-d 巨型分頁

當在 Red Hat Enterprise Linux 7.0 上搭配 KVM 客座端虛擬機器使用 Virtual Function I/O(VFIO)裝置指派時,輸入/輸出記憶體管理單元(input/output memory management unit,IOMMU)將會使用 2MB 的分頁,並減少 I/O 作業的轉譯對應緩衝區(translation lookaside buffer,TLB)額外負荷。目前已為 Red Hat Enterprise Linux 7.0 準備了 1GB 的分頁支援。VT-d 巨型分頁功能僅在特定新型、基於 Intel 的平台上受到支援。

KVM 時鐘 Get Time 效能

Red Hat Enterprise Linux 7.0 中的 vsyscall 機制已被增強,以便支援來自於 KVM 客座使用者空間的快速時鐘讀取。一個執行 Red Hat Enterprise Linux 7.0(在 Red Hat Enterprise Linux 7.0 主機上)的客座端虛擬機器,其應用程式若頻繁讀取當日時間,效能將會提升。

QCOW2 Version 3 影像格式

Red Hat Enterprise Linux 7.0 新增了 QCOW2 版本 3 影像格式上的支援。

改善的即時遷移數據

有關於即時遷移的資訊現在已能被用來分析和調整效能。改善的數據包含了有關於預期停機時間上的資訊、停機時間或是中途分頁(dirty page)比例。

即時遷移執行續

KVM 的即時遷移功能已改善,以支援執行續。

字元裝置與序列埠的熱插拔

Red Hat Enterprise Linux 7.0 中現在已支援新字元裝置的新序列埠熱插拔。

AMD Opteron G5 模擬

KVM 現在已能模擬 AMD Opteron G5 處理器。

支援在 KVM 客座上使用新的 Intel 指示

KVM 客座現在已能使用 Intel 22nm 處理器所支援的新指示。這包含了:
  • Floating-Point Fused Multiply-Add、
  • 256-bit Integer vectors
  • big-endian 移動指示(MOVBE)支援,
  • 或是 HLE/HLE+。

VPC 和 VHDX 檔案格式

Red Hat Enterprise Linux 7.0 中的 KVM 包含了 Microsoft Virtual PC(VPC)和 Microsoft Hyper-V 虛擬硬碟(VHDX)檔案格式上的支援。

libguestfs 中的新功能

libguestfs 乃一組用來存取和修改虛擬機器磁碟映像的工具。Red Hat Enterprise Linux 7.0 中的 libguestfs 包含了數項改善,以下為最顯著的改善:
  • Secure Virtualization Using SELinux(sVirt)保護提供了增強的安全性,以防禦含有威脅性及格式錯誤的磁碟映像。
  • 遠端磁碟一開始能透過網路區塊裝置(NBD)檢查和修改。
  • 特定應用程式的效能可藉由磁碟熱插拔來提升。

WHQL-Certified virtio-win 驅動程式

Red Hat Enterprise Linux 7.0 包含了最新 Microsoft Windows 客座(目前乃 Microsoft Window 8、8.1、2012 和 2012 R2)的 Windows Hardware Quality Labs(WHQL)認證 virtio-win 驅動程式。