在 Hyper-V 上執行 FreeBSD 的最佳做法

適用於: Windows Server 2022、Azure Stack HCI 版本 20H2;Windows Server 2019、Windows Server 2016、Hyper-V Server 2016、Windows Server 2012 R2、Hyper-V Server 2012 R2、Windows Server 2012、Hyper-V Server 2012、Windows Server 2008 R2、Windows 10、Windows 8.1、Windows 8、Windows 7.1、Windows 7

本主題包含在 Hyper-V 虛擬機器上以客體作業系統身分執行 FreeBSD 的建議清單。

在 Hyper-V 上啟用 FreeBSD 10.2 中的 CARP

通用位址備援通訊協定 (CARP) 可讓多部主機共用相同的 IP 位址和虛擬主機識別碼 (VHID),以協助為一或多個服務提供高可用性。 如果一或多個主機失敗,其他主機會以透明方式接管,讓使用者不會注意到服務失敗。若要在 FreeBSD 10.2 中使用 CARP,請遵循 FreeBSD 手冊中的指示,並在 Hyper-V 管理員中執行下列動作。

  • 確認虛擬機器具有網路介面卡,並已指派虛擬交換器。 選取虛擬機器,然後選取 [動作>設定]

Screenshot of virtual machine settings with network adapter selected

  • 啟用 MAC 位址詐騙。 若要這樣做:

    1. 選取虛擬機器,然後選取 [動作>設定]

    2. 展開 [網路介面卡],然後選取 [進階功能]

    3. 選取 [啟用 MAC 位址詐騙]

建立磁碟裝置的標籤

在啟動期間,會在探索新裝置時建立裝置節點。 這可能表示新增裝置時,裝置名稱可能會變更。 如果您在啟動時收到根掛接錯誤,您應該為每個 IDE 分割區建立標籤,以避免衝突和變更。 若要了解如何,請參閱為磁碟裝置加上標籤。 以下是範例。

重要

進行任何變更之前,請先製作 fstab 的備份複本。

  1. 將系統重新啟動為單一使用者模式。 選取 FreeBSD 10.3+ 的開機功能表選項 2 即可完成此作業(FreeBSD 8.x 的選項 4),或從開機提示字元執行「boot -s」。

  2. 在 [單一使用者模式] 中,針對 fstab 中所列的每個 IDE 磁碟分割建立 GEOM 標籤 (根和交換)。 以下是 FreeBSD 10.3 的範例。

    # cat  /etc/fstab
    # Device           Mountpoint      FStype  Options   Dump   Pass#
    /dev/da0p2         /               ufs     rw        1       1
    /dev/da0p3         none            swap    sw        0       0
    
    # glabel  label rootfs  /dev/da0p2
    # glabel  label swap   /dev/da0p3
    # exit
    

    如需 GEOM 標籤的其他資訊,請參閱:為磁碟裝置加上標籤

  3. 系統會繼續多使用者開機。 開機完成之後,請編輯 /etc/fstab,並以各自的標籤取代傳統裝置名稱。 最後的 /etc/fstab 看起來會像這樣:

    # Device                Mountpoint      FStype  Options         Dump    Pass#
    /dev/label/rootfs       /               ufs     rw              1       1
    /dev/label/swap         none            swap    sw              0       0
    
  4. 系統現在可以重新啟動。 如果一切順利,它就會正常出現,掛接會顯示:

    # mount
    /dev/label/rootfs on / (ufs, local, journaled soft-updates)
    devfs on /dev (devfs, local, mutilabel)
    

使用無線網路介面卡作為虛擬交換器

如果主機上的虛擬交換器是以無線網路介面卡為基礎,請依照下列命令將 ARP 到期時間縮短為 60 秒。 否則,VM 的網路功能可能會在一段時間後停止運作。

   # sysctl net.link.ether.inet.max_age=60

另請參閱