38 KVM管理设备-管理虚拟机USB

文章目录

    • 38 KVM管理设备-管理虚拟机USB
      • 38.1 配置USB控制器
        • 38.1.1 概述
        • 38.1.2 注意事项
        • 38.1.3 配置方法
      • 38.2 配置USB直通设备
        • 38.2.1 概述
        • 38.2.2 注意事项
        • 38.2.3 配置说明
        • 38.2.4 配置方法

38 KVM管理设备-管理虚拟机USB

为了方便在虚拟机内部使用USBkey设备、USB海量存储设备等USB设备,openEuler提供了USB设备直通的功能。用户可以通过USB直通和热插拔相关接口给虚拟机配置直通USB设备、或者在虚拟机处于运行的状态下热插/热拔USB设备。

38.1 配置USB控制器

38.1.1 概述

USB控制器是为虚拟机上的USB设备提供具体USB功能的虚拟控制器设备,在虚拟机内部使用USB设备必须给虚拟机配置USB控制器。当前openEuler支持如下三种USB控制器:

  • UHCI(Universal Host Controller Interface):通用主机控制器接口,也称为USB 1.1主机控制器规范。
  • EHCI(Enhanced Host Controller Interface):增强主机控制器接口,也称为USB 2.0主机控制器规范。
  • xHCI(eXtensible Host Controller Interface):可扩展主机控制器接口,也称为USB 3.0主机控制器规范。

38.1.2 注意事项

  • 主机服务器上需存在支持USB 1.1、USB 2.0和USB 3.0标准的USB控制器硬件和模块。
  • 为虚拟机配置USB控制器时,请按照USB 1.1、USB 2.0到USB 3.0的顺序来配置。
  • 一个xHCI控制器有8个端口,最多可以挂载4个USB 3.0设备和4个USB 2.0设备。一个EHCI控制器有6个端口,最多可以挂载6个USB2.0设备。一个UHCI控制器有2个端口,最多可以挂载2个USB 1.1设备。
  • 每台虚拟机最多支持配置一个相同类型的USB控制器。
  • 不支持热插拔USB控制器。
  • 若虚拟机没有安装USB 3.0的驱动,可能无法识别xHCI控制器,USB 3.0驱动下载和安装方法请参见对应OS发行商官方说明。
  • 为了不影响操作系统的兼容性,为虚拟机配置USB接口的tablet设备时,请指定USB控制器bus号为0(默认挂载到USB 1.1控制器上)。

38.1.3 配置方法

这里介绍为虚拟机配置USB控制器的配置内容说明。建议同时配置USB 1.1、USB 2.0和USB 3.0,做到同时兼容三种设备。

USB 1.1控制器(UHCI)的XML配置项为:

<controller type='usb' index='0' model='piix3-uhci'>
</controller>

USB 2.0控制器(EHCI)的XML配置为:

<controller type='usb' index='1' model='ehci'>
</controller>

USB 3.0控制器(xHCI)的XML配置为:

<controller type='usb' index='2' model='nec-xhci'>
</controller>

38.2 配置USB直通设备

38.2.1 概述

当虚拟机配置好USB控制器后,就可以通过设备直通的方式将主机上的物理USB设备挂载到虚拟机内部供虚拟机使用。在虚拟化场景下,除了支持静态配置以外还同时支持USB设备的热插/拔操作,即在虚拟机处于运行状态的时候挂载/卸载USB设备。

38.2.2 注意事项

  • 一个USB设备只能直通给一台虚拟机使用
  • 配置了直通USB设备的虚拟机不支持热迁移
  • 虚拟机配置文件中直通的USB设备不存在时,虚拟机会创建失败
  • 对一个正在读写的USB存储设备进行强制热拔操作有可能会损坏USB设备内的文件

38.2.3 配置说明

这里介绍为虚拟机配置USB设备的配置内容说明。

USB设备的XML描述:

<hostdev mode='subsystem' type='usb' managed='yes'>
    <source>        
        <address bus='m' device='n'/>
    </source>
    <address type='usb' bus='x' port='y'/>
</hostdev>
  • ,其中,m表示该USB设备在主机上的bus地址,n表示device ID编号。
  • 表示该USB设备要挂载到虚拟机指定的USB控制器。其中x表示控制器ID,与虚拟机所配置的USB控制器index编号相对应,y表示port地址。用户配置直通USB设备的时候需要配置这个字段,确保设备挂载的控制器与预期相符。

38.2.4 配置方法

配置USB直通的步骤如下:

  1. 为虚拟机配置USB控制器,配置方法请参见“虚拟机配置 - 配置USB控制器”。

  2. 查询主机上的USB设备信息。

    通过lsusb命令(需要安装usbutils软件包)查询主机上的USB设备信息,包含bus地址、device地址、设备厂商ID、设备ID和产品描述信息等。例如:

    # lsusb
    
    Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 006 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. 
    Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 005 Device 003: ID 136b:0003 STEC 
    Bus 005 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. 
    Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 003: ID 12d1:0003 Huawei Technologies Co., Ltd. 
    Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    
  3. 准备USB设备的XML描述文件,注意在设备热拔之前,请确保USB设备当前不在使用当中,否则可能造成数据丢失。

  4. 执行热插、热拔命令。

    假设虚拟机名称为openEulerVM,对应的配置文件为usb.xml。

    • 热插USB设备,只对当前运行的虚拟机有效,虚拟机冷重启后需要重新配置。

      # virsh attach-device openEulerVM usb.xml --live
      
    • 热插USB设备,持久化该配置,即该虚拟机重启后该设备会自动直通给该虚拟机使用。

      # virsh attach-device openEulerVM usb.xml --config
      
    • 热拔USB设备,只对当前运行的虚拟机有效,持久化配置的USB设备在虚拟机重启后USB设备会自动直通给该虚拟机。

      # virsh detach-device openEulerVM usb.xml --live
      
    • 热拔USB设备,持久化该配置。

      # virsh detach-device openEulerVM usb.xml --config
      

点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

38 KVM管理设备-管理虚拟机USB_第1张图片

你可能感兴趣的:(KVM,云计算,开源软件,运维,linux)