共用方式為


管理 Hyper-V 整合服務

Hyper-V 整合服務透過利用 Hyper-V 主機的雙向通訊來增強虛擬機器效能,並提供便利功能。 許多服務都非常方便,例如客體檔案複製,而其他服務對虛擬機器的功能很重要,例如綜合裝置驅動程式。 這組服務和驅動程式有時稱為整合元件。 您可以控制個別便利服務是否針對任何指定的虛擬機器運作。 驅動程式元件並非要手動服務。

如需每個整合服務的詳細資料,請參閱 Hyper-V 整合服務

重要

您想要使用的每個服務都必須在主機和客體中啟用,才能運作。 當您在主機中啟用服務時,它會自動開始在客體中執行。 除了 Hyper-V 客體服務介面以外的所有整合服務,預設都會在 Windows 客體作業系統上開啟。 這些服務可以個別開啟和關閉。 接下來幾節將示範如何運作。

使用 Hyper-V 管理員開啟或關閉整合服務

  1. 從中央窗格中,以滑鼠右鍵按一下虛擬機器,然後選取 [設定]

  2. 從 [設定] 視窗的左側窗格中,在 [管理] 下,選取 [整合服務]

[整合服務] 窗格會列出 Hyper-V 主機上可用的所有整合服務,以及主機是否已啟用虛擬機器使用它們。

使用 PowerShell 開啟整合服務

若要在 PowerShell 中進行此操作,請使用 Enable-VMIntegrationServiceDisable-VMIntegrationService

下列範例示範針對名為 DemoVM 的虛擬機器,開啟和關閉客體檔案複製整合服務。

  1. 取得執行整合服務的清單:

    Get-VMIntegrationService -VMName "DemoVM"
    
  2. 輸出應該看起來像這樣:

    VMName      Name                    Enabled PrimaryStatusDescription SecondaryStatusDescription
    ------      ----                    ------- ------------------------ --------------------------
    DemoVM      Guest Service Interface False   OK
    DemoVM      Heartbeat               True    OK                       OK
    DemoVM      Key-Value Pair Exchange True    OK
    DemoVM      Shutdown                True    OK
    DemoVM      Time Synchronization    True    OK
    DemoVM      VSS                     True    OK
    
  3. 開啟客體服務介面:

    Enable-VMIntegrationService -VMName "DemoVM" -Name "Guest Service Interface"
    
  4. 確認客體服務介面已啟用:

    Get-VMIntegrationService -VMName "DemoVM"
    
  5. 關閉客體服務介面:

    Disable-VMIntegrationService -VMName "DemoVM" -Name "Guest Service Interface"
    

檢查客體的整合服務版本

某些功能可能無法正常運作,或者如果客體的整合服務不是最新的,則完全無法運作。 若要取得 Windows 的版本資訊,請登入客體作業系統、開啟命令提示字元,然後執行此命令:

REG QUERY "HKLM\Software\Microsoft\Virtual Machine\Auto" /v IntegrationServicesVersion

先前的客體作業系統不會具備所有可用的服務。 例如,Windows Server 2008 R2 客體不能有 Hyper-V 客體服務介面。

從 Windows 客體啟動和停止整合服務

為了讓整合服務能夠完全運作,其對應的服務必須在客體內執行,而且必須在主機上啟用。 在 Windows 客體中,每個整合服務都會列為標準 Windows 服務。 您可以使用 [控制台] 或 PowerShell 中的 [服務] 小程式來停止和啟動這些服務。

重要

停止整合服務可能會嚴重影響主機管理虛擬機器的能力。 若要正確運作,您必須在主機和客體上啟用您想要使用的每個整合服務。 最佳做法是,您應該僅使用上述指示來控制 Hyper-V 的整合服務。 當您在 Hyper-V 中變更其狀態時,會自動停止或啟動客體作業系統中的比對服務。 如果您在客體作業系統中啟動服務,但它在 Hyper-V 中已停用,服務將會停止。 如果您在 Hyper-V 中啟用的客體作業系統中停止服務,Hyper-V 最終會再次啟動它。 如果您停用客體中的服務,Hyper-V 將無法啟動它。

使用 Windows 服務來啟動或停止 Windows 客體內的整合服務

  1. 以管理員身分執行 services.msc,或按兩下 [控制台] 中的 [服務] 圖示,以開啟 [服務管理員]。

    顯示 [Windows 服務] 窗格的螢幕快照

  2. 尋找以 Hyper-V 開頭的服務。

  3. 以滑鼠右鍵按一下您想要啟動或停止的服務。 選取所需的動作。

使用 PowerShell 來啟動或停止 Windows 客體內的整合服務

  1. 若要取得執行整合服務的清單,請執行:

    Get-Service -Name vmic* | FT -AutoSize
    
  2. 輸出應類似以下的內容:

    Status  Name               DisplayName
    ------  ----               -----------
    Running vmicguestinterface Hyper-V Guest Service Interface
    Running vmicheartbeat      Hyper-V Heartbeat Service
    Running vmickvpexchange    Hyper-V Data Exchange Service
    Running vmicrdv            Hyper-V Remote Desktop Virtualization Service
    Running vmicshutdown       Hyper-V Guest Shutdown Service
    Running vmictimesync       Hyper-V Time Synchronization Service
    Stopped vmicvmsession      Hyper-V PowerShell Direct Service
    Running vmicvss            Hyper-V Volume Shadow Copy Requestor
    
  3. 執行 Start-ServiceStop-Service。 例如,若要關閉 Windows PowerShell Direct,請執行:

    Stop-Service -Name vmicvmsession
    

從 Linux 客體啟動和停止整合服務

Linux 整合服務通常是透過 Linux 核心提供。 Linux 整合服務驅動程式叫做 hv_utils

  1. 若要找出是否已載入 hv_utils,請使用此命令:

    lsmod | grep hv_utils
    
  2. 輸出應類似以下的內容:

    Module                  Size   Used by
    hv_utils               20480   0
    hv_vmbus               61440   8 hv_balloon,hyperv_keyboard,hv_netvsc,hid_hyperv,hv_utils,hyperv_fb,hv_storvsc
    
  3. 若要找出所需的精靈是否正在執行,請使用此命令。

    ps -ef | grep hv
    
  4. 輸出應類似以下的內容:

    root       236     2  0 Jul11 ?        00:00:00 [hv_vmbus_con]
    root       237     2  0 Jul11 ?        00:00:00 [hv_vmbus_ctl]
    ...
    root       252     2  0 Jul11 ?        00:00:00 [hv_vmbus_ctl]
    root      1286     1  0 Jul11 ?        00:01:11 /usr/lib/linux-tools/3.13.0-32-generic/hv_kvp_daemon
    root      9333     1  0 Oct12 ?        00:00:00 /usr/lib/linux-tools/3.13.0-32-generic/hv_kvp_daemon
    root      9365     1  0 Oct12 ?        00:00:00 /usr/lib/linux-tools/3.13.0-32-generic/hv_vss_daemon
    user     43774 43755  0 21:20 pts/0    00:00:00 grep --color=auto hv
    
  5. 若要查看可使用哪些精靈,請執行:

    compgen -c hv_
    
  6. 輸出應類似以下的內容:

    hv_vss_daemon
    hv_get_dhcp_info
    hv_get_dns_info
    hv_set_ifconfig
    hv_kvp_daemon
    hv_fcopy_daemon
    

    可能列出的整合服務精靈包括下列各項。 如果遺失任何項目,則可能是系統不支援,或可能未安裝。 如需詳細資料,請參閱 Windows 上 Hyper-V 的受支援的 Linux 和 FreeBSD 虛擬機器

    • hv_vss_daemon:建立即時的 Linux 虛擬機器備份需要此精靈。
    • hv_kvp_daemon:此精靈可以設定及查詢內建和外來機碼值組。
    • hv_fcopy_daemon:此精靈可實作主機和客體之間的檔案複製服務。

範例

這些範例示範停止和啟動名為 hv_kvp_daemon 的 KVP 精靈。

  1. 使用處理程序識別碼 (PID) 來停止精靈的處理程序。 若要尋找 PID,請查看輸出的第二個資料行,或使用 pidof。 由於 Hyper-V 精靈是以 root 身分執行,因此您需要根權限。

    sudo kill -15 `pidof hv_kvp_daemon`
    
  2. 若要確認所有 hv_kvp_daemon 處理程序都已消失,請執行:

    ps -ef | hv
    
  3. 若要再次啟動精靈,請以 root 身分執行精靈:

    sudo hv_kvp_daemon
    
  4. 若要確認 hv_kvp_daemon 處理程序已列出新的處理程序識別碼,請執行:

    ps -ef | hv
    

將整合服務保持在最新狀態

建議您讓整合服務保持在最新狀態,以取得虛擬機器的最佳效能和最新功能。 如果 Windows 客體已設定為從 Windows Update 取得重要更新,則預設會發生這種情況。 使用目前核心的 Linux 客體包含內建的整合服務,但可能會有選用的更新可供使用。 當您更新核心時,您會收到最新的整合元件。 如需 Linux 客體的詳細資訊,請參閱 Windows 上 Hyper-V 支援的 Linux 和 FreeBSD 虛擬機器

注意

從 Windows Server 2016 和 Windows 10 開始,Hyper-V 不再包含映像檔整合服務磁碟 (vmguest.iso),因為已不再需要它。 Windows Server 2012 和更舊版本需要 Data Exchange 整合服務。 如果無法啟用 Data Exchange 整合,則可從下載中心以封包檔 (cab) 的形式取得這些客體的整合服務。 如需套用 cab 的指示,請參閱此 Microsoft TechCommunity 部落格文章。 如果您的 Hyper-V 主機執行 Windows Server 2012 R2 和更舊版本,請參閱下一節,了解如何安裝或更新整合服務。

安裝或更新早於 Windows Server 2016 和 Windows 10 的 Hyper-V 主機整合服務

注意

Windows Server 2016 和 Windows 10 或更新版本不需要執行此操作。

針對早於 Windows Server 2016 和 Windows 10 的 Hyper-V 主機,您必須手動安裝或更新客體作業系統中的整合服務。

若要手動安裝或更新整合服務:

  1. 開啟 [Hyper-V 管理員]。

  2. 連線到虛擬機器。 以滑鼠右鍵按一下虛擬機器,並選取 [連線]

  3. 在虛擬機器連線的 [動作] 功能表中,選取 [插入整合服務安裝磁碟]。 這個動作會載入虛擬 DVD 光碟機中的安裝磁片。 視客體作業系統而定,您可能需要從 [檔案總管] 手動啟動安裝。

  4. 安裝完成後,即可使用整合服務。