添加/修改硬件
1. 图形模式
给虚拟机添加新硬件:
首先,关闭要添加硬件的虚拟机
双击虚拟机,在打开的对话框点击上方的View,点击Details,点击Add Hardware可以选择要添加的虚拟硬件
2. 修改配置文件, 下一次开机生效
-
内存
# virsh edit mini
<memory unit='KiB'>524288</memory>
<currentMemory unit='KiB'>524288</currentMemory>
-
CPU数量
# virsh edit mini
<vcpu placement='static'>2</vcpu>
* 注意不要超过物理CPU的逻辑数量
-
添加磁盘
1.创建虚拟磁盘文件

2.修改配置文件,在原来的磁盘位置添加以下几行:
# virsh edit mini #如果使用vi直接修改配置文件,需要重启libvirtd服务
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/mini.qcow2'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x11' function='0x0'/>
</disk>
不同的总线对应的设备名称:
virtio vd..
sata sd..
scsi sd..
ide hd..
-
网卡:
# virsh edit mini
<interface type='bridge'>
<mac address='52:54:00:9d:29:05'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<interface type='network'>
<mac address='52:54:00:e9:10:51'/>
<source network='default'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</interface>

slot: 插槽
热添加
热添加磁盘
guest os为centos:
1)进入guest,执行fdisk -l ,发现只有一块磁盘sda 使用dumpxml,domblklist来查询
[root@lvm qemu]# virsh domblklist test
Target Source
------------------------------------------------
vda /var/lib/libvirt/images/test.qcow2
2)在host上新建一块qcow2格式磁盘
# qemu-img create -f qcow2 test_disk.qcow2 10G
并且编写对应的xml文件test_disk.xml:
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/home/tony/work/vm_demo/disk/test_disk.qcow2'/>
<target dev='vdb' bus='virtio'/>
</disk>
3) 在host上执行virsh attach-device domain test_disk.xml --persistent,执行完后在centos 执行fdisk -l
会发现多了一块磁盘vdb
4)在guest上执行fdisk /dev/vda 给vda创建一个分区vda1,挂载之后就可以正常使用了
5)在host上执行virsh detach-disk domain disk --persistent会热删除该磁盘,此时分为两种情况
(1)该分区在执行detach时已经umount,此时guest host都正常
(2) 该分区在执行detach时没有umount,执行detach在guest上会出现filesystem force shutdown
这个磁盘也能删除,如果再次attach,在guest上也可以正常添加,但是guest上的设备描述符会由原来的vda
变为vdb,如果继续在没有umount时detach,再attach描述符会由vdb变为vdc
如果重启guest设备描述符变为正常

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
guest os为win7:
步骤同上,但是不存在挂载状态detach设备描述符异常的问题
NIC 热添加过程和磁盘完全相同也是用attach-device和detach-device,不同的是设备的xml配置文件,下面贴出示例:
<interface type='network'>
<source network='default' bridge='virbr0'/>
<model type='virtio'/>
</interface>
attach和detach参数:
--persistent 让实时更改持久,立即生效
--config 影响下一次引导,之后一直生效
--live 影响运行的域,重新启动失效
--current 影响当前域
--------------------------------------------------------------------------------
添加: attach-device <domain> <xml> [--persistent]
删除:
detach-disk <domain> <target> [--persistent] # target: 磁盘名称,如 sdc, vdd等
detach-interface <domain> <type> <--mac mac> [--persistent] # type: network 或 bridge等
热添加CPU
只支持热添加,不支持热删除,个数不能超过在xml文件里面设置的最大个数, 最大个数不能超过物理CPU个数
guestos为centos7
1)配置虚拟机的xml文件:
<!-- 配置CPU数目 -->
<vcpu placement='auto' current="1">4</vcpu> #current中的数量为当前cpu数量, 后面的4是最大cpu数量
2)启动虚拟机,在guest中查看虚拟机cpu个数:
lscpu
3)在host上使用virsh命令添加cpu:
virsh setvcpus <domain> <count> --live --config # --live 修改运行中的guest, --config 将修改写入配置文件,以便下一次启动生效
----------------------------------------------------------------------------------------------------------------------------------------------------
# 修改最大可使用的cpu数量, 不可超过物理CPU数量, 下次重启生效
virsh setvcpus <domain> <count> --maximum --config
----------------------------------------------------------------------------------------------------------------------------------------------------
--config 写到配置文件里面,下次重启虚拟机有效
--live 影响正在运行的虚拟机,虚拟机进程消失后效果消失,默认是这种模式
--current 影响停止和正在运行的虚拟机,如果虚拟机运行,虚拟机进程停止后,效果消失
guest os 为win7
同样修改虚拟机的xml文件,测试的结果是virsh setvcpus test 2 --live 执行结果成功,在设备管理其里里面也可以看到增加的cpu,但是计算机->属性看到的处理器个数还是原来的,并且在任务管理器里面看到的也是只有原来个数的cpu在运行
结论: 在win7上cpu热添加行不通,原因是win7没有对热添加的cpu直接运行的方法,有人测试过过win8 server he 2012 好像是可以
热添加内存
setmem 用法同cpu