天天看點

使用libvirt指令行管理虛拟機

本文主要介紹虛拟機的啟動、停止、重新開機、挂起等基礎操作,不過在進行這些操作之前,我們得先有一台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

使用libvirt指令行管理虛拟機

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指令添加給正在運作的虛拟機。

使用libvirt指令行管理虛拟機

          在主控端出現“disk attach successfully”後,進入客戶機作業系統檢視

使用libvirt指令行管理虛拟機

          在客戶機中可以看到,通過attach-disk指令附加的磁盤,可以像普通磁盤一樣使用該磁盤,就不多示範了。

          下面,再動态移除之前添加的磁盤,使用virsh detach-disk指令。

使用libvirt指令行管理虛拟機

         成功移除磁盤後,在客戶機中也沒有了磁盤檔案。另外,也可以将iso檔案附件到虛拟機中,這樣就實作了挂載磁盤鏡像的問題。

使用libvirt指令行管理虛拟機

         注意:上面的附加磁盤操作都是臨時生效,待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中移除網卡

使用libvirt指令行管理虛拟機
使用libvirt指令行管理虛拟機

         注意:使用attach-interface和附件磁盤是一樣的,都是暫時儲存,重新開機後失效,如果想永久生效,可參照上面附件磁盤的方法,不再贅述。

調整cpu:

         virsh setvcpus domain_name vcpus_num --config --live       #使用--config --live 使修改永久生效

         例如:virsh setvcpus centos6.5 2 --config --live

使用libvirt指令行管理虛拟機

         注意: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

使用libvirt指令行管理虛拟機

         注意:能夠調整的記憶體最大值不超過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

使用libvirt指令行管理虛拟機

         例如:virsh save --bypass-cache centos6.5 /usr/src/centos6.5_snapshot_1 --running --verbose

                    --bypass-cache:避免在儲存的時候檔案系統緩存而儲存不完全

                    --running:設定恢複後domain的運作狀态是running

                    --verbose:顯示儲存的進度

使用libvirt指令行管理虛拟機

         例如: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

使用libvirt指令行管理虛拟機

繼續閱讀