Loading

qemu设备热插拔

需要支持的条件
  • 总线电器特性
  • 主板BIOS
  • 操作系统
  • 设备驱动
物理机可实现热插拔的部件
  • SATA硬盘 (IDE不支持热插拔)
  • CPU
  • 内存
  • USB
  • 网卡
  • 风扇
qemu支持的热插拔
  • PCI设备
  • CPU
  • 内存
PCI 设备的热插拔需要几个方面的支持
  • bios默认的SeaBIOS就支持

  • PCI 总线,目前PCIPCIE都支持。

  • 虚拟机

    数流行的Linux和Windows操作系统都支持设备的热插拔。可以在客户机的Linux系统的内核配置文件中看到一些相关的配置

    # RHEL7 相关配置
    CONFIG_HOTPLUG_PCI_PCIE=y
    CONFIG_HOTPLUG_PCI=y
    CONFIG_HOTPLUG_PCI_ACPI=y
    CONFIG_HOTPLUG_PCI_ACPI_IBM=y
    CONFIG_HOTPLUG_PCI_SHPC=y
    
  • 客户机中的驱动程序

    一些网卡驱动(如Intel的e1000eigbixgbeigbvfixgbevf等)、SATASAS磁盘驱动、USB2.0USB3.0驱动都支持设备的热插拔

相关命令
直通设备热插拔

device_add vfio_pci,host=02:00.0,id=mydevice

device_del mydevice

USB设备的热插拔

QEMU默认没有向客户机提供USB总线,需要在启动客户机的qemu命令行中添加-usb参数(或-device piix4-usb-uhci参数),来提供客户机中的USB总线。

usb_add host:003.003

或者

usb_add host:03f0:8607

device_add vfio-pci,host=00:14.0,id-myusb

CPU 热插拔

内核配置

CONFIG_HOTPLUG_CPU=y

CONFIG_BOOTPARAM_HOTPLUG_CPU0=y

CONFIG_ACPI_HOTPLUG_CPU=y

配置

-smp n,maxvcpus=N

初始为n个cpu,可以动态添加到N个

cpu-add x

内存热插拔

内核参数
image

添加

object_add memory-backend-ram,id=mem1,size=1G

device_add pc-dimm,id=dimm1,memdev=mem1

删除

device_del mem1

object_del mm1

磁盘热插拔

drive_add file=/a/b/c.qcow2,format=qcow2,id=drive001,if=none

device_add virtio-blk-pci,drive=drive001,id=disk1

device_del disk1

网络接口热插拔

netdev_add user,id=net1

device_add virtio-net-pci,netdev=net1,id=nic1,max=xxx

device_del nic1

posted @ 2021-09-30 23:29  Test002  阅读(450)  评论(0)    收藏  举报