本文提供在 Hyper-V 上執行 Linux 虛擬機的建議清單。
在動態 VHDX 檔案上調整 Linux 檔案系統
即使檔案系統大部分是空的,某些 Linux 檔案系統仍可能會耗用大量的實際磁碟空間。 若要減少動態 VHDX 檔案的實際磁碟空間使用量,請考慮下列建議:
- 建立 VHDX 時,請在 PowerShell 中使用 1 MB 的區塊大小位元組(預設值為 32 MB),例如:
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
ext4 格式會比 ext3 受到喜歡,因為 ext4 與動態 VHDX 檔案搭配使用時,會比 ext3 更有空間效率。
建立檔案系統時,指定群組數目為 4096,例如:
# mkfs.ext4 -G 4096 /dev/sdX1
第 2 代虛擬機器上的 Grub 功能表逾時
由於舊版硬體已從第 2 代虛擬機的模擬環境中移除,grub 功能表的定時器倒數太快,導致無法顯示 grub 功能表,並立即載入預設選項。 在修正 grub 使用 EFI 支援的定時器之前,請修改 /boot/grub/grub.conf、/etc/default/grub,或等於 “timeout=100000”,而不是預設的 “timeout=5”。
第 2 代虛擬機器上的 PxE 開機
由於 PIT 定時器不存在於第 2 代虛擬機中,因此 PxE TFTP 伺服器的網路聯機會終止,並防止開機載入器讀取 Grub 設定,並從伺服器載入核心。
在 RHEL 6.x 上,可以使用舊版 grub v0.97 EFI 開機載入器,而不是 grub2,如下所述: https://access.redhat.com/documentation/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-netboot-pxe-config-efi.html
在除了 RHEL 6.x 以外的 Linux 發行版本上,可以遵循類似的步驟來設定 grub v0.97 以從 PxE 伺服器載入 Linux 核心。
此外,在 RHEL/CentOS 6.6 上,鍵盤和滑鼠輸入無法運作,這是由於預安裝的核心問題,導致無法在安裝選單中指定選項。 序列主控台必須設定為允許選擇安裝選項。
在 PxE 伺服器上的 efidefault 檔案中,新增下列核心參數 "console=ttyS1"
在 Hyper-V 中的 VM 上,使用此 PowerShell Cmdlet 設定 COM 連接埠:
Set-VMComPort -VMName <Name> -Number 2 -Path \\.\pipe\dbg1
在安裝期間,將啟動檔案指定至核心也避免需要鍵盤和滑鼠輸入。
搭配容錯移轉叢集使用靜態 MAC 位址
使用故障轉移叢集部署的Linux虛擬機應該為每個虛擬網路適配器設定靜態媒體訪問控制 (MAC) 位址。 在某些 Linux 版本中,網路設定可能會在容錯移轉後遺失,因為新的 MAC 位址會指派給虛擬網路介面卡。 若要避免遺失網路設定,請確定每個虛擬網路介面卡都有靜態 MAC 位址。 您可以在 Hyper-V 管理員或容錯移轉叢集管理員中編輯虛擬機器的設定,以設定 MAC 位址。
使用 Hyper-V 特定的網路介面卡,而不是舊版網路介面卡
設定並使用虛擬乙太網路介面卡,這是具有增強效能的 Hyper-V 特定網路卡。 如果舊版和 Hyper-V 特定網路介面卡都連結至虛擬機器,則 config -a 輸出中的網路名稱可能會顯示隨機值,例如 _tmp12000801310。 若要避免此問題,在 Linux 虛擬機器中使用 Hyper-V 特定網路介面卡時,請移除所有舊版網路介面卡。
使用 I/O 排程器 noop/none 以提升磁碟 I/O 效能
Linux 核心提供兩組磁碟 I/O 排程器來重新排序要求。 一組適用於較舊的 『blk』 子系統,而一組則適用於較新的 『blk-mq』 子系統。 不論是哪一種情況,使用現今的固態磁碟,建議使用排程器,將排程決策傳遞至基礎 Hyper-V Hypervisor。 對於使用 'blk' 子系統的Linux核心,這是 “noop” 排程器。 對於使用 'blk-mq' 子系統的 Linux 核心,這是「none」排程程序。
對於特定的磁碟,您可以在這個檔案系統位置看到可用的排程器: /sys/class/block/<diskname>
/queue/scheduler,目前選取的排程器會以方括弧括住。 您可以寫入此檔案系統位置來變更排程器。 變更必須新增至初始化指令碼,才能在重新開機後保存。 如需詳細資訊,請咨詢您的 Linux 散發文件。
NUMA
早於 2.6.37 的 Linux 核心版本不支援具較大 VM 大小之 Hyper-V 上的 NUMA。 這個問題主要會影響使用上游 Red Hat 2.6.32 核心的較舊發行版本,而且已在 Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504) 中加以修正。 執行的自訂核心是 2.6.37 以前版本的系統,或 2.6.32-504 以前的 RHEL 型核心必須在 grub.conf 的核心命令列上設定開機參數 numa=off
。 如需詳細資訊,請參閱 Red Hat KB 436883 \(英文\)。
為 kdump 保留更多記憶體
如果傾印擷取核心最終在開機時發生異常狀況,請為核心保留更多記憶體。 例如,將 crashkernel=384M-:128M 參數變更為 Ubuntu grub 設定檔中的 crashkernel=384M-:256M。
壓縮 VHDX 或展開 VHD 和 VHDX 檔案可能會導致錯誤的 GPT 分割區資料表
Hyper-V 允許壓縮虛擬磁碟 (VHDX) 檔案,而不考慮磁碟上可能存在的任何磁碟分割、磁碟區或檔案系統資料結構。 如果 VHDX 縮小至其結尾位於分割區的結尾之前,資料可能會遺失,分割區可能會損壞,或讀取分割區時可能會返回無效的資料。
調整 VHD 或 VHDX 的大小之後,系統管理員應該使用 fdisk 之類的公用程式或部分來更新磁碟分割、磁碟區和檔案系統結構,以反映磁碟大小變更。 使用分割區管理工具檢查分割區配置時,壓縮或擴充具有 GUID 數據分割數據表的 VHD 或 VHDX 大小會造成警告,並警告系統管理員修正第一個和次要 GPT 標頭。 此手動步驟很安全,不會造成資料遺失。