本文主要介紹虛拟機的啟動、停止、重新開機、挂起等基礎操作,不過在進行這些操作之前,我們得先有一台kvm虛拟機,根據之前的文章,先建立一台虛拟機。
可以使用vncviewer進行系統安裝,安裝後虛拟機reboot,此時會退出vncviewer。我們需要重新啟動該虛拟機,但是系統安裝完了,又不能使用上面的指令安裝,怎麼做呢?
這裡我們首先到/etc/libvirt/qemu/目錄下,會在該目錄下看到一個名為centos5.xml的檔案,這就是我們之前使用virt-install建立虛拟機的配置檔案。
于是,我們想要啟動該虛拟機,可以使用如下指令:
virsh create centos5.xml #根據centos5.xml建立虛拟機
[root@kvm-node1 qemu]# virsh create centos5.xml
domain centos5 created from centos5.xml
[root@kvm-node1 qemu]# virsh list
id name state
----------------------------------------------------
11 centos5 running
virsh的常用指令介紹:
virt-install: 建立虛拟機,并安裝os;也可以建立虛拟機并導入image檔案
根據xml檔案建立虛拟機:
virsh create *.xml #建立并啟動虛拟機
virsh define *.xml #建立但不啟動虛拟機
關閉domain:
virsh destroy domain_name #強制關閉domain
virsh shutdown domain_name #優雅的關閉domain
vrish reboot domain_name #重新開機一個domain
删除domain:
virsh undefine domain_name #删除一個domain,該操作會删除虛拟機的xml配置檔案,但不會删除虛拟磁盤檔案
連接配接一個domain:
virsh console domain_name #連接配接到一個domain的管理控制台
列出domain:
virsh list #列出domains,會列出活動中的虛拟機
virsh list -all #列出所有的domains,包含已經停止的虛拟機
附加或拆除disk:
virsh attach-disk domain_name #附加一個磁盤到一個domain中
virsh detach-disk domain_name #從一個domain中移除磁盤
注意:
centos5.x版本不支援線上調整cpu,記憶體等, 以下在centos6.x,7.x測試
centos6.x, 7.x平台下,cpu core數隻能線上增加,不能線上減小
應注意你想要添加的硬體是臨時生效,還是永久生效
是以這裡建立一個centos6.5的虛拟機:
確定虛拟機處于running狀态,然後使用qemu-img建立一個磁盤映像,然後使用virsh attach-disk指令添加給正在運作的虛拟機。
在主控端出現“disk attach successfully”後,進入客戶機作業系統檢視
在客戶機中可以看到,通過attach-disk指令附加的磁盤,可以像普通磁盤一樣使用該磁盤,就不多示範了。
下面,再動态移除之前添加的磁盤,使用virsh detach-disk指令。
成功移除磁盤後,在客戶機中也沒有了磁盤檔案。另外,也可以将iso檔案附件到虛拟機中,這樣就實作了挂載磁盤鏡像的問題。
注意:上面的附加磁盤操作都是臨時生效,待domain重新開機後就失去挂載的磁盤。要想附加的磁盤永久生效,有兩種方法:
1)使用--persistent參數,比如:virsh attach-disk centos6.5 /images/kvm/test.img vdb --cache none --subdriver raw --persistent
--persistent 重新開機生效,相當于:-config --live
2)在添加磁盤成功後,導出xml檔案。其實,就是使用attach-disk附加磁盤,然後使用virsh dumpxml domain_name > domain_name.xml,然後用這個新的xml檔案建立虛 拟機。
3)使用xml檔案進行attach-device操作。(這裡實際上算介紹attach-device指令了)
首先,配置一個xml檔案,添加需要配置的參數項,比如cache=none, io=native等。
[root@kvm-node1 ~] # cat disk.xml
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none' io='native'/>
<source dev='/dev/centos_kvm/centos02_lij_data1'/>
<target dev='vdb' bus='virtio'/>
</disk>
然後,使用virsh attach-device指令添加,
virsh attach-device centos6.5 disk.xml --persistent
說明:attach-device才是更通用的新增硬體方法,新增硬體的同時可以配置相應參數,比如我們需要添加/dev/vg01/lv01這塊新磁盤
附加或拆除網卡:
virsh attach-interface domain_name #往一個domain中添加網卡
virsh detach-interface domain_name #從一個domain中移除網卡
注意:使用attach-interface和附件磁盤是一樣的,都是暫時儲存,重新開機後失效,如果想永久生效,可參照上面附件磁盤的方法,不再贅述。
調整cpu:
virsh setvcpus domain_name vcpus_num --config --live #使用--config --live 使修改永久生效
例如:virsh setvcpus centos6.5 2 --config --live
注意:centos5.x不支援調整cpu、記憶體等,需要在centos6.x及以上版本中操作;
設定cpu數量不能超過domain的配置檔案中設定的maxvcpus的值,不然會失敗。
調整記憶體:
virsh setmem domain_name mem_num
例如:virsh setmem centos6.5 512m #臨時設定記憶體為512m
virsh setmem centos6.5 786m --config --live #永久設定記憶體為786m
注意:能夠調整的記憶體最大值不超過xml檔案中記憶體設定的值。
記憶體能夠線上調整的原理是利用了virtio-balloon技術。
擴充:
virtio-balloon氣球記憶體技術:它可以在客戶機運作時動态地調整它所占用的主控端記憶體資源,而不需要關閉客戶機
該技術能夠實作:
<1>當主控端記憶體緊張時,可以請求客戶機回收利用已配置設定給客戶機的部分記憶體,客戶機就會釋放部分空閑記憶體。若其記憶體空間不足,可能還會回收部分使用中的記憶體,可能會将部分記憶體換到交換分區中;
<2>當客戶機記憶體不足時,也可以讓客戶機的記憶體氣球壓縮,釋放出記憶體氣球中的部分記憶體,讓客戶機使用更多的記憶體。
記憶體調整過程:
a. kvm 發送請求給 vm 讓其歸還一定數量的記憶體給kvm。
b. vm 的 virtio_balloon 驅動接到該請求。
c. vm 的驅動是客戶機的記憶體氣球膨脹,氣球中的記憶體就不能被客戶機使用。
d. vm 的作業系統歸還氣球中的記憶體給vmm
e. kvm 可以将得到的記憶體配置設定到任何需要的地方。
f. kvm 也可以将記憶體返還到客戶機中。
儲存狀态至磁盤檔案或從磁盤檔案恢複:
virsh save domain_name #保留一個正在運作的domain的ram狀态
virsh restore domain_name #恢複一個domain
例如:virsh save --bypass-cache centos6.5 /usr/src/centos6.5_snapshot_1 --running --verbose
--bypass-cache:避免在儲存的時候檔案系統緩存而儲存不完全
--running:設定恢複後domain的運作狀态是running
--verbose:顯示儲存的進度
例如:virsh restore /usr/src/centos6.5_snapshot_1 --bypass-cache --running
--bypass-cache:避免在還原時發生檔案系統緩存
--running:還原domain後進入running狀态
暫停于記憶體或繼續運作:
virsh suspend domain_name #挂起(暫停)一個domain
virsh resume domain_name #恢複一個domain