添加/修改硬件
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