Red Hat Training

A Red Hat training course is available for RHEL 8

10.5. 管理虚拟 USB 设备

使用虚拟机(VM)时,您可以访问并控制 USB 设备,如附加到主机系统的如闪存驱动器或 Web 相机。在这种情况下,主机系统会将设备的控制权传递给虚拟机。这也被称为 USB-passthrough。

以下部分提供有关使用命令行的信息:

10.5.1. 将 USB 设备附加到虚拟机

要将 USB 设备附加到虚拟机,您可以在虚拟机 XML 配置文件中包含 USB 设备信息。

先决条件

  • 确定您要传递给虚拟机的设备已附加到主机。

流程

  1. 找到您要附加到虚拟机的 USB 总线和设备值。

    例如:以下命令显示附加到该主机的 USB 设备列表。在这个示例中,使用的设备作为设备 005 总线附加到总线 001 中。

    # lsusb
    [...]
    Bus 001 Device 003: ID 2567:0a2b Intel Corp.
    Bus 001 Device 005: ID 0407:6252 Kingston River 2.0
    [...]
  2. 使用 virt-xml 工具及 --add-device 参数。

    例如,以下命令将 USB 闪存驱动器附加到 example-VM-1 虚拟机。

    # virt-xml example-VM-1 --add-device --hostdev 001.005
    Domain 'example-VM-1' defined successfully.
注意

要将 USB 设备连接到正在运行的虚拟机,请将 --update 参数添加到上一命令中。

验证

  • 运行虚拟机并测试该设备是否存在并正常工作。
  • 使用 virsh dumpxml 命令查看设备的 XML 定义是否已添加到虚拟机 XML 配置文件中的 <devices> 部分。

    # virsh dumpxml example-VM-1
    [...]
    <hostdev mode='subsystem' type='usb' managed='yes'>
      <source>
        <vendor id='0x0407'/>
        <product id='0x6252'/>
        <address bus='1' device='5'/>
      </source>
      <alias name='hostdev0'/>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    [...]

其它资源

10.5.2. 从虚拟机中删除 USB 设备

要从虚拟机中删除 USB 设备,您可以从虚拟机 XML 配置中删除 USB 设备信息。

流程

  1. 找到您要从虚拟机中删除的 USB 的 bus 和 device 值。

    例如:以下命令显示附加到该主机的 USB 设备列表。在这个示例中,使用的设备作为设备 005 总线附加到总线 001 中。

    # lsusb
    [...]
    Bus 001 Device 003: ID 2567:0a2b Intel Corp.
    Bus 001 Device 005: ID 0407:6252 Kingston River 2.0
    [...]
  2. 使用 virt-xml 工具及 --remove-device 参数。

    例如,以下命令从 example-VM-1 虚拟机中删除附加到主机上作为总线 001 上设备 005 的 USB 闪存驱动器。

    # virt-xml example-VM-1 --remove-device --hostdev 001.005
    Domain 'example-VM-1' defined successfully.
注意

要从正在运行的虚拟机中删除 USB 设备,请将 --update 参数添加到上一命令中。

验证

  • 运行虚拟机并检查该设备是否已从设备列表中删除。

其它资源

10.5.3. 将智能卡读卡器附加到虚拟机

如果智能卡读卡器已附加到主机,您也可以将其提供给该主机上的虚拟机(VM)。libvirt 提供了一个专用的虚拟设备,为客户虚拟机提供了一个智能卡接口。建议您只使用 spicevmc 设备类型,它利用 SPICE 远程显示协议将身份验证请求隧道传输到主机。

虽然可以将标准设备直通与智能卡读卡器一起使用,但此方法无法使设备在主机和客户机系统上可用。因此,在将智能卡读卡器附加到虚拟机时,您可以锁定主机系统。

重要

SPICE 远程显示协议已在 RHEL 8 中被弃用。由于将智能卡读卡器附加到虚拟机的唯一方法取决于 SPICE 协议,因此客户虚拟机中智能卡的使用也已在 RHEL 8 中被弃用。

在 RHEL 未来的主发行版本中,将智能卡读卡器附加到虚拟机的功能仅被第三方远程视觉解决方案支持。

先决条件

  • 确定您要传给虚拟机的智能卡读卡器已附加到主机上。
  • 确保智能卡读卡器类型 在 RHEL 8 中被支持

流程

  • 创建并将虚拟智能卡读卡器设备附加到虚拟机上。例如,要将智能卡读卡器附加到 testguest 虚拟机上:

    # virt-xml testguest --add-device --smartcard mode=passthrough,type=spicevmc
    Domain 'testguest' defined successfully.
    Changes will take effect after the domain is fully powered off.
    注意

    要将虚拟智能卡读卡器设备附加到正在运行的虚拟机上,请在上一个命令中添加 --update 参数。

验证

  1. 查看虚拟机的 XML 配置。

    # virsh dumpxml testguest
  2. 确保 XML 配置包含以下智能卡设备定义。

    <smartcard mode='passthrough' type='spicevmc'/>