在 HYPER-V 上執行 Linux 的最佳作法

 

適用於: Hyper-V Server 2012, Windows 8.1, Windows Server 2008 R2, Windows Server 2012 R2, Microsoft Hyper-V Server Technical Preview, Windows Server 2012, Hyper-V Server 2012 R2, Windows 10 Technical Preview, Windows Server Technical Preview, Windows 8

本文件包含 Linux 虛擬機器在 HYPER-V 上執行的建議的清單。

微調動態的 VHDX 檔案上的 Linux 檔案系統

即使大部分是空的檔案系統部分 Linux 檔案系統可能會耗用大量的實際磁碟空間。 若要減少實際磁碟空間使用量的動態的 VHDX 檔案,請考慮下列建議事項:

  • 建立時 VHDX,使用 1 MB BlockSizeBytes (從預設值 32 MB) 在 PowerShell 中,例如:

    PS > New-VHD –Path C:\MyVHDs\test.vhdx –SizeBytes 127GB –Dynamic –BlockSizeBytes 1MB
    
  • 建議要 ext3 ext4 格式,因為 ext4 ext3 動態的 VHDX 檔案搭配使用比空間效率。

  • 當建立檔案系統指定的數目為 4096,例如群組:

    # mkfs.ext4 –G 4096 /dev/sdX1 
    

在第 2 代虛擬機器上的 grub 功能表逾時

由於無法從第 2 代虛擬機器中的模擬舊版的硬體、 grub 功能表倒數計時器倒數太快要顯示的 grub 功能表立即載入預設項目。 修改 grub 修正之前使用 EFI 支援計時器,/boot/grub/grub.conf,/etc/default/grub,或具有同等權限 」 逾時 = 100000"而非預設的 「 逾時 = 5"。

在第 2 代虛擬機器上的 PxE 開機

因為 PIT 計時器沒有出現在層代 2 虛擬機器,PxE TFTP 伺服器的網路連線可以提前終止並防止從讀取 Grub 組態和從伺服器載入核心開機載入器。

RHEL 上 6.x,舊版 grub v0.97 EFI 開機載入器可用來代替 grub2 如下所示: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-netboot-pxe-config-efi.html

RHEL 以外的 Linux 散發套件上 6.x,類似的步驟可供遵循以設定從一部 PxE 伺服器載入 Linux 核心的 grub v0.97。

此外,在 RHEL/CentOS 6.6 鍵盤和滑鼠輸入不能用於預先安裝核心可避免指定安裝選項] 功能表中。 序列主控台必須設定為允許選擇安裝選項。

  • efidefault PxE 伺服器上的檔案中加入下列的核心參數 “console=ttyS1”

  • 在 HYPER-V VM 上安裝程式使用這個 PowerShell 指令程式的 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 特定網路介面卡已附加至虛擬機器、 網路名稱的輸出中ifconfig –a可能顯示隨機值例如**_tmp12000801310**。 若要避免這個問題,請使用 Linux 虛擬機器中的 Hyper-v 特定網路介面卡時移除所有傳統網路介面卡。

用於 I/O 效能更佳的磁碟 I/O 排程器 NOOP。

Linux 核心都有四個不同的 I/O 排程器若要重新排列要求不同的演算法。 NOOP 是傳遞排程決定由 hypervisor 先進佇列。 建議使用的排程器的 NOOP Linux 虛擬機器在 HYPER-V 上執行時。 若要變更之排程器的開機載入器設定中的特定裝置 (/ etc/grub.conf,例如)、 新增elevator=noop核心參數以及然後重新啟動。

新增 「 numa = 關閉 「 如果 Linux 虛擬機器有超過 7 虛擬處理器或多個 30 GB RAM。

設定為使用 7 多個虛擬處理器的 Linux 虛擬機器應該加入numa=off至 GRUB boot.cfg,若要解決 2.6.x Linux 核心中的已知問題。 Linux 虛擬機器設定為使用超過 30 GB RAM 應該也會加入numa=off至 GRUB boot.cfg。

保留 kdump 的更多的記憶體

萬一傾印擷取核心最後在開機恐慌,保留更多記憶體的核心。 例如,將參數變更crashkernel=384M-:128Mcrashkernel=384M-:256MUbuntu grub 組態檔中。

壓縮或擴展 VHD 檔案可能會導致錯誤的 GPT 磁碟分割表

HYPER-V 可讓壓縮而不管任何磁碟分割、 磁碟區或可能存在於磁碟的檔案系統資料結構的虛擬磁碟 (VHD) 檔案。 如果 VHD 壓縮到 VHD 結尾這時候磁碟分割的結尾之前,可能發生資料遺失、 資料分割可能會變得損毀或無效的資料可傳回讀取資料分割時。

之後調整大小的 VHD、 系統管理員應該使用像是 fdisk 的公用程式或更新資料分割、 磁碟區和檔案系統的結構以反映變更磁碟的大小不會在意。 壓縮或擴展具有 GUID 磁碟分割表格 (GPT) VHD 的大小就會在資料分割管理工具用來檢查的磁碟分割配置和系統管理員將會收到警告若要修正的第一個和第二個 GPT 標頭時造成警告。 此手動步驟可以安全地執行不會遺失資料。

另請參閱