管理 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. 使用进程 ID (PID) 停止守护程序的进程。 若要查找 PID,请查看输出的第二列,或使用 pidof。 因为 Hyper-V 守护程序作为根运行,所以需要根权限。

    sudo kill -15 `pidof hv_kvp_daemon`
    
  2. 若要验证所有 hv_kvp_daemon 进程是否已消失,请运行:

    ps -ef | hv
    
  3. 若要再次启用守护程序,请将守护程序作为根运行:

    sudo hv_kvp_daemon
    
  4. 若要验证 hv_kvp_daemon 进程是否以新的进程 ID 列出,请运行:

    ps -ef | hv
    

使集成服务保持最新状态

建议使集成服务保持最新状态,以获得虚拟机的最佳性能和最新功能。 如果 Windows 来宾设置为从Windows 更新获取重要更新,则会默认保持最新状态。 使用当前内核的 Linux 来宾包含内置集成服务,但可能会提供可选更新。 更新内核时,将收到最新的集成组件。 有关 Linux 来宾的详细信息,请参阅 Windows 上 Hyper-V 支持的 Linux 和 FreeBSD 虚拟机

注意

从 Windows Server 2016 和 Windows 10 开始,映像文件集成服务磁盘 (vmguest.iso) 不包含在 Hyper-V 中,因为不再需要它。 Windows Server 2012 及更早版本需要数据交换集成服务。 如果无法启用数据交换集成服务,这些来宾的集成服务将在下载中心中作为 Cabinet (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. 安装完成后,集成服务即可使用。