cpu热插拔
# virsh setvcpus $domain_name --count 4 --live (--config可写入配置文件永久保存)
#前提条件和后续激活参考《libvirt-qemu-虚拟机cpu分配和cpu热插拔》
 
内存热插拔
<memory model='dimm'>
    <target>
        <size unit='KiB'>524287</size>
        <node>0</node>
    </target>
</memory>
#和doamin中格式相同
# virsh attach-device $domain_name mem.xml (--config可写入配置文件永久保存)
#前提条件和后续激活参考《libvirt-qemu-虚拟机内存分配和内存热插拔》
 
网卡热插拔
<interface type='bridge'>
      <mac address='52:54:00:2d:ea:aa'/>
      <source bridge='br0'/>
      <model type='virtio'/>
</interface>
#和doamin中格式相同
# virsh attach-device $domain_name interface.xml  (--config可写入配置文件永久保存)
# virsh detach-device $domain_name interface.xml
 
磁盘热插拔
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/tmp/test.img'/>
      <target dev='vdd' bus='virtio'/>
</disk>
#和doamin中格式相同
# virsh attach-device $domain_name disk.xml (--config可写入配置文件永久保存)
# virsh detach-device $domain_name disk.xml
 
USB设备
<hostdev mode='subsystem' type='usb'>
  <source>
    <vendor id='0x096e'/>
    <product id='0x0405'/>
  </source>
</hostdev>
#和doamin中格式相同
# virsh attach-device $domain_name usb.xml (--config可写入配置文件永久保存)
# virsh detach-device $domain_name usb.xml
 
PCI设备热插拔
<hostdev mode='subsystem' type='pci' managed='yes'>
    <source>
        <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </source>
</hostdev>
#和doamin中格式相同
# virsh attach-device $domain_name pci.xml (--config可写入配置文件永久保存)
# virsh detach-device $domain_name pci.xml
 
 
  在使用libvirt给虚拟机分配内存大小时,涉及到memory和currentMemory两个字段,很多人都有这个疑惑,为什么需要两个呢。其实是和内存气泡动态调整内存有关系的。简单的来说,memory是虚拟机启动时分配给的内存,currentMemory是内存气泡生效后动态调整到的内存。下面看具体的解释。
 
一. 启动内存
<memory unit='KiB'>8388608</memory>
虚拟机启动时使用的内存
 
二. 内存气泡
 
在虚拟机的xml文件中配置:
 
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>158608</currentMemory>
  ......
  <devices>
    <memballoon model='virtio'>
      <stats period='10'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </memballoon>
  </devices>
参数说明:
memory:
在qemu命令中使用参数-m来设置的。表示虚拟机在启动阶段使用的内存。包括在启动或稍后热插拔时指定的可能的附加内存。
currentMemory:
通过libvirt调整balloon值的初始值是currentMemory。
说明:
1.在虚拟机启动后加载了内存balloon驱动后就开始对虚拟机内存进行热插拔,先设置内存为<currentMemory>大小,这个<currentMemory>qemu进程不知道,时记录在libvirt中的。然后根据需求对内存进行调整(balloon),调整的上限是<memory>,这个<memory>qemu进程是知道的,在虚拟机启动时使用了这个值。
2.要禁止memballoon设备,可以设置memballoon model='none'
禁止内存气泡设备后,虚拟机内部看到的内存就是<memory>,也不能通过气泡进行调整。
 
通过ballon调整虚拟机内存大小(调整后在虚拟机内部是可以看到虚拟机内存大小变化的):
# virsh qemu-monitor-command instance-00000005 --hmp "info balloon"
# virsh qemu-monitor-command instance-00000005 --hmp "balloon 1024"
或者:
# virsh setmem instance-00000005 2097152
# virsh dommemstat instance-00000005
 
 
三. 内存热插拔
 
虚拟机的xml文件
 <maxMemory slots='1' unit='KiB'>10388608</maxMemory>
  ......
 <cpu mode='host-model'>
    ......
    <numa>
      <cell id='0' cpus='0' memory='4194304' unit='KiB'/>
    </numa>
  </cpu>
<maxMemory>的值表示通过 hot-plug 可以达到的内存的上限(包含虚拟机初始内存)。其中 slots 表示 DIMM 插槽的数量,每个插槽在运行时都可以插入一个内存设备,上限是 255 个。
<numa>内的配置用于指定虚拟机内的 NUMA 拓扑。
 
要插入内存设备xml文件
<memory model='dimm'>
    <target>
        <size unit='KiB'>524287</size>
        <node>0</node>
    </target>
</memory>
<size>指定设备的内存容量,<node>指定插入到虚拟机的哪个 NUMA 节点。
 
插入内存前虚拟机内部:
插入内存:
# virsh attach-device --live instance-00000005 mem.xml
 
插入内存后虚拟机内部:
激活新插入的内存,并查看内存:
注:新的内存设备插入之后,内存气泡可调整的上限值也随之增大相应的大小。
 
四. 热插拔内存后虚拟机内部自动 online 内存
为了让系统自动 online 添加的内存,可以设置 udev 规则,内容如下:
/etc/udev/rules.d/99-hotplug-memory.rules
# automatically online hot-plugged memory
ACTION=="add", SUBSYSTEM=="memory",ATTR{state}="online"

libvirt-qemu-虚拟机设备热插拔的更多相关文章

  1. 【转】libvirt kvm 虚拟机上网 – Bridge桥接

    libvirt kvm 虚拟机上网 – Bridge桥接 2013 年 7 月 3 日 / 东东东 / 暂无评论 目录 [hide] 1 Bridge桥接原理 2 在host机器配置桥接网络 2.1  ...

  2. 虚拟机设备直通的两种方式(Working in Progress)

    声明: 本博客欢迎转发.但请保留原作者信息! 博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! pci passthroug ...

  3. 干货分享: 长达250页的Libvirt Qemu KVM的ppt,不实验无真相

    下载地址:Libvirt Qemu KVM 教程大全 http://files.cnblogs.com/popsuper1982/LibvirtQemuKVM.pptx 1. 概论 1.1 虚拟化的基 ...

  4. libvirt/qemu特性之numa

    博客地址:http://blog.csdn.net/halcyonbaby 内容系本人学习.研究和总结,如有雷同,实属荣幸! Numa 查看主机node情况 使用virsh命令查看 virsh # c ...

  5. 基于QMP实现对qemu虚拟机进行交互

    本文详解QMP,包含qmp.hmp.qemu-guest-agent的介绍.工作原理.配置方法.范例 小慢哥的原创文章,欢迎转载 目录 ▪ QMP介绍 ▪ QMP语法 ▪ 单独使用qemu,启用QMP ...

  6. 利用QMP和QEMU虚拟机交互的几种方式

    QMP是一种基于JSON格式的传输协议,我们能利用它与一个QEMU虚拟机实例进行交互,例如查询,更改虚拟机的状态,获取设备信息等等.下面是几种创建QMP的方法以及对其它的一些基本命令的使用: 1.基于 ...

  7. KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  8. CentOS学习笔记--SCSI 设备热插拔

    CentOS学习笔记--SCSI 设备热插拔 处于运行中的服务器,因业务要求也许不允许重启机器,而新添加的SCSI设备(主要是硬盘)如何实现热插拔呢? 首先需要查看一下设备: #cat /proc/s ...

  9. libvirt保持虚拟机运行情况下修改名称

    通过virsh list命令能看到虚拟机的列表: [root@compute2 ~]# virsh list Id 名称 状态 ------------------------------------ ...

随机推荐

  1. 第一百四十五节,JavaScript,同步动画

    JavaScript,同步动画 将上一节的,移动透明动画,修改成可以支持同步动画,也就是可以给这个动画方法多个动画任务,让它同时完成 原理: 向方法里添加一个属性,这个属性是一个对象,同步动画属性,属 ...

  2. smartJS 0.1 API 讲解 - FlowController

    本篇介绍0.1版中最后一个特性,FlowController:同时也对第一版总结一下,因为近两年全部都是在搞前端,都是做一些js框架类的东西,也做了不少有意思的功能,做smartjs对我来说一个是对自 ...

  3. mvc中使用uploadify批量上传的应用

    网上找了很多资料都没有发现一个好用.可以用的uploadify批量上传的应用,这里通过官方和自己的一些项目需要整理了一个出来. 希望能帮助到需要的人. 效果图:

  4. 【BZOJ4631】踩气球 链表+线段树+堆

    [BZOJ4631]踩气球 Description 六一儿童节到了, SHUXK 被迫陪着M个熊孩子玩一个无聊的游戏:有N个盒子从左到右排成一排,第i个盒子里装着Ai个气球. SHUXK 要进行Q次操 ...

  5. linux时间格式化

    echo `date +'[%Y-%m-%d %H:%M:%S]'`

  6. 手动爬虫之京东笔记本栏(ptyhon3)

    import urllib.request as ur import urllib.error as ue import re # 目标网址 url = 'https://list.jd.com/li ...

  7. Spring容器初始化的时候如何添加一个定时器?

    昨天遇到这个问题,在项目启动的时候添加一个定时器隔一段时间扫描有没有定时发送的邮件(当然也可以是你自己的业务逻辑),也在网上找了资料,加上自己的修改,终于成功了.所以来做个记录. 1.ServletC ...

  8. IOS数据持久化之归档NSKeyedArchiver, NSUserDefaults,writeToFile

    //2.文件读写 //支持:NSString, NSArray , NSDictionay, NSData //注:集合(NSArray, NSDictionay)中得元素也必须是这四种类型, 才能够 ...

  9. mysql 使用命令执行外部sql文件

    语句 source e:\\phpPro\\fileName.sql 注意,不需要再后面加  分号  !!!!!

  10. php 正则表达式二.基本语法

    官方手册正则语法:http://php.net/manual/zh/reference.pcre.pattern.syntax.php 正则表达式在线测试工具:regexpal 正则表达式的匹配先后顺 ...