Proxmox VE Qemu/KVM 虛擬機設置要求


Qemu(Quick Emulator 的縮寫)是一種模擬物理計算機的開源虛擬機管理程序。從運行 Qemu 的主機系統的角度來看,Qemu 是一個用戶程序,它可以訪問許多本地資源,如分區、文件、網卡,然后將這些資源傳遞給模擬計算機,模擬計算機將它們視為真實設備.

在模擬計算機中運行的來賓操作系統訪問這些設備,並像在真實硬件上運行一樣運行。例如,您可以將 ISO 映像作為參數傳遞給 Qemu,在模擬計算機中運行的操作系統將看到插入 CD 驅動器的真實 CD-ROM。

Qemu 可以模擬從 ARM 到 Sparc 的多種硬件,但 Proxmox VE 只關注 32 位和 64 位 PC 克隆模擬,因為它代表了絕大多數服務器硬件。由於處理器擴展的可用性,當模擬架構與主機架構相同時,PC 克隆的仿真也是最快的之一。

您有時可能會遇到術語KVM(基於內核的虛擬機)。這意味着 Qemu 通過 Linux KVM 模塊在虛擬化處理器擴展的支持下運行。在 Proxmox VE 的上下文中,Qemu和 KVM可以互換使用,因為 Proxmox VE 中的 Qemu 將始終嘗試加載 KVM 模塊。

Proxmox VE 中的 Qemu 作為根進程運行,因為這是訪問塊和 PCI 設備所必需的。

仿真設備和半虛擬化設備

Qemu 模擬的 PC 硬件包括主板、網絡控制器、SCSI、IDE 和 SATA 控制器、串行端口(完整列表可以在kvm(1)手冊頁中看到),所有這些都在軟件中進行了模擬。所有這些設備都是與現有硬件設備完全等效的軟件,如果來賓中運行的操作系統具有適當的驅動程序,它將像在真實硬件上運行一樣使用這些設備。這允許 Qemu 運行未經修改的操作系統。

然而,這會帶來性能成本,因為在軟件中運行本應在硬件中運行的內容涉及主機 CPU 的大量額外工作。為了緩解這種情況,Qemu 可以呈現給來賓操作系統半虛擬化設備,其中來賓操作系統識別出它在 Qemu 內部運行並與管理程序合作。

Qemu 依賴於 virtio 虛擬化標准,因此能夠呈現半虛擬化 virtio 設備,其中包括半虛擬化通用磁盤控制器、半虛擬化網卡、半虛擬化串口、半虛擬化 SCSI 控制器等……

強烈建議您盡可能使用 virtio 設備,因為它們提供了很大的性能改進。使用 virtio 通用磁盤控制器與模擬 IDE 控制器相比,順序寫入吞吐量將增加一倍,如使用bonnie++(8)測量的那樣。使用 virtio 網絡接口可提供高達模擬 Intel E1000 網卡吞吐量的三倍,如使用iperf(1)測量。

虛擬機設置

一般來說,Proxmox VE 嘗試為虛擬機 (VM) 選擇合理的默認值。確保您了解您更改的設置的含義,因為它可能會導致性能下降或將您的數據置於危險之中。

通用設置

虛擬機的一般設置包括:

  • 節點:在此物理服務器上虛擬機將運行

  • VM ID:Proxmox VE中一個唯一的編號,用於識別您的VM

  • 名稱:可用於描述 VM 的自由格式文本字符串

  • 資源池:VM 的邏輯組

操作系統設置

在創建虛擬機 (VM) 時,設置適當的操作系統 (OS) 允許 Proxmox VE 優化一些低級參數。例如,Windows 操作系統期望 BIOS 時鍾使用本地時間,而基於 Unix 的操作系統期望 BIOS 時鍾具有 UTC 時間。

系統設置

創建 VM 時,您可以更改新 VM 的一些基本系統組件。您可以指定要使用的顯示類型。

此外,可以更改SCSI 控制器。如果您打算安裝 QEMU 訪客代理,或者您選擇的 ISO 映像已經提供並自動安裝,您可能需要勾選Qemu 代理框,這讓 Proxmox VE 知道它可以使用其功能來顯示更多信息,並更智能地完成一些操作(例如,關機或快照)。

Proxmox VE 允許啟動具有不同固件和機器類型的 VM,即 SeaBIOS 和 OVMF。在大多數情況下,只有當您計划使用 PCIe pass through 時,您才希望從默認的 SeaBIOS 切換到 OVMF 。VM機器類型定義了 VM 的虛擬主板的硬件布局。您可以選擇默認的 Intel 440FX 或 Q35 芯片組,后者還提供虛擬 PCIe 總線,因此如果想要直通 PCIe 硬件,可能需要。

硬盤

總線/控制器

Qemu 可以模擬許多存儲控制器:

  • IDE控制器,有一個設計可以追溯到1984年的PC/AT磁盤控制器。即使此控制器已被最近的設計所取代,您能想到的每個操作系統都支持它,如果您想運行 2003 年之前發布的操作系統,它是一個不錯的選擇。 您最多可以在此控制器上連接 4 個設備.

  • 2003 年推出的 SATA(串行 ATA)控制器采用更現代的設計,允許更高的吞吐量和更多數量的設備連接。您最多可以在此控制器上連接 6 個設備。

  • SCSI 控制器,在1985年設計的,在服務器級硬件通常發現,並且最多可連接14個存儲裝置。 Proxmox VE 默認模擬 LSI 53C895A 控制器。

如果您的目標是性能,則推薦使用 VirtIO SCSI 類型的 SCSI 控制器,並且自 Proxmox VE 4.3 以來,它會自動為新創建的 Linux VM 選擇。 Linux 發行版自 2012 年起支持此控制器,自 2014 年起支持 FreeBSD。 對於 Windows 操作系統,您需要在安裝過程中提供包含驅動程序的額外iso。 如果您的目標是最高性能,您可以選擇 VirtIO SCSI single 類型的 SCSI 控制器, 這將允許您選擇 IO 線程選項。選擇 Virtio SCSI single 時,單個 QEMU 將為每個磁盤創建一個新的控制器,而不是將所有磁盤添加到同一控制器。

  • VirtIO Block 控制器,通常被叫做為 Virtio 或 virtio-BLK,都是老式的半虛擬化控制器。在功能方面,它已被 VirtIO SCSI 控制器取代。

鏡像格式

在每個控制器上,您連接了許多模擬硬盤,這些硬盤由駐留在配置存儲中的文件或塊設備支持。存儲類型的選擇將決定硬盤映像的格式。呈現塊設備的存儲(LVM、ZFS、Ceph)將需要原始磁盤映像格式,而基於文件的存儲(Ext4、NFS、CIFS、GlusterFS)將允許您選擇原始磁盤映像格式或 QEMU 映像格式。

  • QEMU鏡像格式(例如:qcow2)是寫時復制的,其允許快照,以及磁盤映像的精簡配置。

  • 原始磁盤映像(例如:raw)是硬盤,類似於執行時,你會得到什么樣的位,以位圖像DD在Linux的塊設備上的命令。此格式本身不支持自動精簡配置或快照,需要存儲層配合完成這些任務。然而,它可能比QEMU鏡像格式快10%。

  • VMware的鏡像格式(vmdk),如果要導入/導出磁盤映像到其他虛擬機管理程序才有意義。

緩存模式

設置硬盤驅動器的緩存模式將影響主機系統如何將塊寫入完成通知來賓系統。默認方式是沒有高速緩存,客戶系統會通知寫入完成后,每個塊到達物理存儲寫入隊列,忽略主機頁面緩存。這在安全性和速度之間提供了良好的平衡。

如果您希望 Proxmox VE 備份管理器在備份 VM 時跳過磁盤,您可以在該磁盤上設置無備份選項。默認設置是備份VM時同時備份磁盤。

如果您希望 Proxmox VE 存儲復制機制在啟動復制作業時跳過磁盤,您可以在該磁盤上設置跳過復制選項。從 Proxmox VE 5.0 開始,復制要求磁盤映像位於zfspool類型的存儲上 ,因此當 VM 配置了復制時,將磁盤映像添加到其他存儲需要跳過此磁盤映像的復制。默認設置是復制時不跳過磁盤。

修剪/丟棄

如果您的存儲支持精簡配置(請參閱 Proxmox VE 指南中的存儲章節),您可以激活驅動器上的丟棄選項。使用Discard set 和啟用TRIM 的來賓操作系統[ 30 ],當 VM 的文件系統在刪除文件后將塊標記為未使用時,控制器會將此信息轉發到存儲,然后存儲將相應地縮小磁盤映像。為了讓來賓能夠發出TRIM命令,您必須在驅動器上啟用Discard選項。某些客戶操作系統可能還需要設置 SSD 仿真標志。需要注意的是丟棄的 VirtIO Block 只有使用 Linux 內核 5.0 或更高版本的來賓才支持驅動器。

如果您希望將驅動器作為固態驅動器而不是機械硬盤呈現給來賓,您可以在該驅動器上設置 SSD 仿真選項。不要求底層存儲實際上由 SSD 支持;此功能可用於任何類型的物理媒介。請注意,VirtIO Block 驅動器不支持 SSD 仿真。

IO線程

選項 IO Thread 只能在將磁盤與VirtIO控制器或SCSI控制器一起使用時使用 ,當仿真控制器類型為 VirtIO SCSI single 時。啟用此功能后,Qemu 會為每個存儲控制器創建一個 I/O 線程,而不是為所有 I/O 創建一個線程。當使用多個磁盤並且每個磁盤都有自己的存儲控制器時,這可以提高性能。

中央處理器

一個CPU插座是PC主板,你可以插入一個CPU上的物理插槽。然后,該 CPU 可以包含一個或多個內核,這些內核是獨立的處理單元。從性能的角度來看,無論您是擁有單個 4 核 CPU 插槽還是兩個具有兩個核心的 CPU 插槽,幾乎都無關緊要。但是,某些軟件許可證取決於機器擁有的插槽數,在這種情況下,將插槽數設置為許可證允許的數量是有意義的。

增加虛擬 CPU(核心和插槽)的數量通常會提高性能,盡管這在很大程度上取決於 VM 的使用。多線程應用程序當然會受益於大量的虛擬 CPU,對於您添加的每個虛擬 CPU,Qemu 將在主機系統上創建一個新的執行線程。如果您不確定 VM 的工作負載,通常將總內核數設置為 2 是一個安全的選擇。

如果所有 VM的總內核數大於服務器上的內核數(例如,在只有 8 個內核的機器上有 4 個 VM,每 VM 4 個內核),這是完全安全的。在這種情況下,主機系統將平衡服務器內核之間的 Qemu 執行線程,就像您正在運行標准的多線程應用程序一樣。但是,Proxmox VE 會阻止您啟動虛擬 CPU 內核多於物理可用內核的 VM,因為這只會由於上下文切換的成本而降低性能。

資源限制

除了虛擬內核的數量之外,您還可以配置一個虛擬機可以獲得多少與主機 CPU 時間以及其他虛擬機相關的資源。使用cpulimit(“主機 CPU 時間”)選項,您可以限制整個 VM 在主機上可以使用的 CPU 時間。它是一個浮點值,以百分比表示 CPU 時間,因此1.0等於100%,2.5到250%等等。如果單個進程將完全使用一個單核,則CPU 時間使用率為 100%。如果具有四個內核的 VM 充分利用其所有內核,則理論上將使用400%. 實際上,使用率甚至可能更高一些,因為除了 vCPU 核心線程之外,Qemu 還可以為 VM 外圍設備提供額外的線程。如果 VM 應該有多個 vCPU,則此設置很有用,因為它並行運行幾個進程,但整個 VM 不應能夠同時 100% 運行所有 vCPU。舉一個具體的例子:假設我們有一個虛擬機,它可以從擁有 8 個 vCPU 中受益,但是這 8 個核心在任何時候都不應全負載運行 - 因為這會使服務器超載,以至於其他虛擬機和 CT 將無法更少的 CPU。因此,我們將cpulimit限制設置為 4.0 (=400%)。如果所有內核都做同樣繁重的工作,它們都將獲得 50% 的真實主機內核 CPU 時間。但是,如果只有 4 個可以工作,他們每個人仍然可以獲得幾乎 100% 的真實內核。

VM 可以根據其配置使用額外的線程,例如用於網絡或 IO 操作以及實時遷移。因此,VM 可能會使用比其虛擬 CPU 所能使用的更多的 CPU 時間。為確保 VM 使用的 CPU 時間永遠不會超過分配的虛擬 CPU,請將cpulimit設置設置為與總內核數相同的值。

第二個 CPU 資源限制設置cpuunits(現在通常稱為 CPU 份額或 CPU 權重)控制 VM 相對於其他正在運行的 VM 獲得的 CPU 時間。這是一個相對權重,默認為1024,如果您為 VM 增加此值,調度程序將優先考慮與其他權重較低的 VM 相比。例如,如果 VM 100 已設置默認值 1024 並且 VM 200 更改為2048,則后一個 VM 200 將獲得兩倍於第一個 VM 100 的 CPU 帶寬。

CPU類型

Qemu 可以模擬從 486 到最新的 Xeon 處理器的多種不同CPU 類型。每代新處理器都會增加新功能,例如硬件輔助 3D 渲染、隨機數生成、內存保護等……功能(也稱為CPU 標志)將在您的 VM 中可用。如果您想要完全匹配,您可以將 CPU 類型設置為 host,在這種情況下,VM 將具有與您的主機系統完全相同的 CPU 標志。

但這有一個缺點。如果您想在不同主機之間進行 VM 的實時遷移,您的 VM 可能會在具有不同 CPU 類型的新系統上結束。如果傳遞給來賓的 CPU 標志丟失,qemu 進程將停止。為了解決這個問題,Qemu 也有自己的 CPU 類型 kvm64,Proxmox VE 默認使用它。kvm64 看起來很像 Pentium 4 CPU 類型,它設置了減少的 CPU 標志,但保證可以在任何地方工作。

簡而言之,如果您關心節點之間的實時遷移和移動虛擬機,請保留 kvm64 默認值。如果您不關心實時遷移或擁有所有節點都具有相同 CPU 的同構集群,請將 CPU 類型設置為 host,因為理論上這將為您的來賓提供最大性能。

內存

當將內存和最小內存設置為相同數量時,Proxmox VE 將簡單地將您指定的內容分配給您的 VM。

為 VM 分配 RAM 時,一個好的經驗法則是始終為主機留出 1GB 的 RAM。

網絡設備

每個 VM 可以有許多網絡接口控制器(NIC),有四種不同類型:

  • Intel E1000 是默認設置,模擬 Intel 千兆網卡。

  • Virtio 半虛擬化,如果你的目標是獲得最大性能NIC應該使用此類型。像所有 VirtIO 設備一樣,客戶操作系統應該安裝了正確的驅動程序。

  • 在瑞昱8139模擬一個較舊的100 MB/s的網卡,只應模擬舊版操作系統時使用(2002年之前發布)

  • VMware VMXNET3是另一個半虛擬化設備,從另一個VMware管理程序導入VM時,才應使用。

Proxmox VE 將為每個 NIC 生成一個隨機MAC 地址,以便您的 VM 可在以太網網絡上尋址。

您添加到 VM 的 NIC 可以遵循以下兩種不同模型之一:

  • 在默認的橋接模式下,每個虛擬 NIC 都由一個Tap 設備(模擬以太網 NIC 的軟件環回設備)支持在主機上 。這個 tap 設備被添加到一個網橋,默認情況下 Proxmox VE 中的 vmbr0。在這種模式下,VM 可以直接訪問主機所在的以太網 LAN。

  • 在備用NAT 模式下,每個虛擬 NIC 將僅與 Qemu 用戶網絡堆棧通信,其中內置路由器和 DHCP 服務器可以提供網絡訪問。此內置 DHCP 將為私有 10.0.2.0/24 范圍內的地址提供服務。NAT 模式比橋接模式慢得多,只能用於測試。此模式僅可通過 CLI 或 API 使用,而不能通過 WebUI 使用。

您還可以通過選擇 No network device 在創建 VM 時跳過添加網絡設備。

Multiqueue

如果您使用的是 VirtIO 驅動程序,您可以選擇激活 Multiqueue選項。此選項允許來賓操作系統使用多個虛擬 CPU 處理網絡數據包,從而增加傳輸的數據包總數。

在 Proxmox VE 中使用 VirtIO 驅動程序時,每個 NIC 網絡隊列都被傳遞到主機內核,在那里隊列將由 vhost 驅動程序產生的內核線程處理。激活此選項后,可以將多個 網絡隊列傳遞給每個 NIC 的主機內核。

使用 Multiqueue 時,建議將其設置為等於來賓的 Total Cores 數的值。您還需要使用 ethtool 命令在 VM 中設置每個 VirtIO NIC 上的多用途通道數:

ethtool -L ens1 combined X

其中 X 是 VM 的 vcpus 數量。

您應該注意,將 Multiqueue 參數設置為大於 1 的值會隨着流量的增加而增加主機和來賓系統上的 CPU 負載。我們建議僅當 VM 必須處理大量傳入連接時才設置此選項,例如當 VM 作為路由器、反向代理或繁忙的 HTTP 服務器執行長輪詢時。

USB直通

USB 直通設備有兩種不同類型:

  • 主機 USB 直通
  • SPICE USB 直通

主機 USB 直通通過為 VM 提供主機的 USB 設備來工作。這可以通過供應商和設備 ID 或通過主機總線和端口來完成。

供應商/設備 ID 如下所示:0123:abcd,其中0123是供應商的 id,abcd是設備的 id,這意味着同一 USB 設備的兩個部分具有相同的 id。

總線/端口如下所示:1-2.3.4,其中1是總線,2.3.4是端口路徑。這代表主機的物理端口(取決於 USB 控制器的內部順序)。

如果 VM 啟動時 VM 配置中存在設備,但主機中不存在該設備,則 VM 可以毫無問題地啟動。一旦設備/端口在主機中可用,它就會通過。

使用這種 USB 直通意味着您無法將 VM 聯機移動到另一台主機,因為硬件僅在 VM 當前所在的主機上可用。

第二種直通類型是 SPICE USB 直通。如果您使用支持它的 SPICE 客戶端,這將非常有用。如果向 VM 添加 SPICE USB 端口,則可以將 SPICE 客戶端所在的 USB 設備直接傳遞到 VM(例如輸入設備或硬件加密狗)。

BIOS 和 UEFI

為了正確模擬計算機,QEMU 需要使用固件。這在通常稱為 BIOS 或 (U)EFI 的普通 PC 上作為啟動 VM 時的第一步執行。它負責進行基本的硬件初始化,並為操作系統提供固件和硬件的接口。默認情況下,QEMU為此使用SeaBIOS,這是一個開源的 x86 BIOS 實現。SeaBIOS 是大多數標准設置的不錯選擇。

然而,在某些情況下,BIOS 不是一個好的啟動固件,例如,如果您想進行 VGA 直通。在這種情況下,您應該使用OVMF,這是一種開源 UEFI 實現。

如果要使用 OVMF,需要考慮以下幾點:

為了保存引導順序之類的內容,需要一個 EFI 磁盤。此磁盤將包含在備份和快照中,並且只能存在一個。

您可以使用以下命令創建這樣的磁盤:

qm set <vmid> -efidisk0 <storage>:1,format=<format>

其中, 是您要放置磁盤的存儲, 是存儲支持的格式。或者,您可以使用虛擬機硬件部分中的添加→ EFI 磁盤通過 Web 界面創建此類磁盤。

將 OVMF 與虛擬顯示器(無 VGA 直通)一起使用時,您需要在 OVMF 菜單中設置客戶端分辨率(啟動時按 ESC 按鈕即可到達),或者您必須選擇 SPICE 作為顯示類型.

音頻設備

要添加音頻設備,請運行以下命令:

qm set <vmid> -audio0 device=<device>

支持的音頻設備有:

  • ich9-intel-hda:英特爾高清音頻控制器,模擬 ICH9
  • intel-hda:英特爾高清音頻控制器,模擬 ICH6
  • AC97 : Audio Codec '97,適用於 Windows XP 等較舊的操作系統

有兩個后端可用:

  • spice

spice后端可與組合使用SPICE而沒有如果需要在虛擬機的音頻設備的一些軟件,后台的工作可能是有用的。要使用主機的物理音頻設備,請使用設備直通(請參閱 PCI 直通和 USB 直通)。像 Microsoft 的 RDP 這樣的遠程協議可以選擇播放聲音。

Qemu Guest Agent

Qemu Guest Agent 是運行在 VM 內部的服務,提供主機和來賓之間的通信通道。它用於交換信息並允許主機向來賓發出命令。

例如,VM 摘要面板中的 IP 地址是通過來賓代理獲取的。

或者在開始備份時,通過來賓代理告訴來賓通過fs-freeze和fs-thaw命令同步未完成的寫入。

要使訪客代理正常工作,必須采取以下步驟:

  • 在來賓中安裝代​​理並確保它正在運行
  • 通過 Proxmox VE 中的代理啟用通信

安裝訪客代理

對於大多數 Linux 發行版,來賓代理可用。該包通常命名為qemu-guest-agent。

對於 Windows,它可以從Fedora VirtIO 驅動程序 ISO安裝 。
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

啟用訪客代理通信

可以在 VM 的選項面板中啟用 Proxmox VE 與來賓代理的通信 。要使更改生效,必須重新啟動 VM。

可以啟用Run guest-trim選項。啟用此功能后,Proxmox VE 將在以下操作后向來賓發出修剪命令,這些操作有可能將零寫入存儲:

  • 將磁盤移動到另一個存儲
  • 將 VM 實時遷移到具有本地存儲的另一個節點

在精簡配置存儲上,這有助於釋放未使用的空間。

故障排除

  • 虛擬機沒有關閉

確保來賓代理已安裝並正在運行。

一旦啟用來賓代理,Proxmox VE 將通過來賓代理發送電源命令,如關閉。如果來賓代理未運行,則無法正確執行命令,並且關閉命令將超時。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM