天天看點

KVM libvirt使用虛拟機、磁盤、快照

文章目錄

      • 基本指令
      • 磁盤格式說明
      • 建立虛拟機
      • clone虛拟機
      • 删除虛拟機
      • 添加、删除磁盤
      • 建立、删除内部快照
      • 轉換格式
      • 其他問題
      • 可參考連結

基本指令

其中kylin01表機器名稱,執行指令需要在主控端上執行

重新開機:virsh reboot kylin01
開機:virsh start kylin01
開機自啟:virsh authostart kylin01
取消開機自啟:virsh authostart --disable kylin01
挂起:virsh suspend kylin01
恢複:virsh resume kylin01
控制台:virsh console kylin01
強制關機: virsh destroy kylin01

普通關機(這個不好用,建議用destroy): 
virsh shutdown kylin01
編輯配置(不建議使用vi直接修改xml檔案):
virsh edit kylin01
檢視所有虛拟機,不帶all隻能看到開機的,帶了all可以檢視所有:
virsh list [--all]
檢視詳細資訊,包括檔案類型
virsh dominfo kylin01
檢視版本号:virsh verison

備份/導出配置檔案,随意備份到什麼地方
virsh dumpxml kylin01 > /tmp/kylin01.xml
檢視備份檔案
virsh dumpxml kylin01
解除虛拟機在list中标記
virsh undefine kylin01 
恢複kylin01,需要先備份
virsh define /tmp/kylin01.xml 
           

相關檔案位置,也可以自行建立

# 自帶的xml位置,每個虛拟機都有自己的xml檔案
/etc/libvirt/qemu/
存放快照的目錄
/var/lib/libvirt/qemu/
存放磁盤的位置
/var/lib/libvirt/imges

# 自定義克隆後虛拟機存放的位置
/virt
# 本文中自定義存放增加的磁盤的位置
/images

           

磁盤格式說明

kvm磁盤鏡像常見的格式主要有raw和qcow2兩種格式,一般預設是raw,也是使用virt-install安裝時的預設格式。

以下兩種圖檔對格式有說明,連結來自于http://www.361way.com/kvm-img-format/3167.html,不再複述:

KVM libvirt使用虛拟機、磁盤、快照
KVM libvirt使用虛拟機、磁盤、快照

也有表格對比的圖檔,來源https://blog.csdn.net/majiangNB/article/details/81672911:

KVM libvirt使用虛拟機、磁盤、快照

建立虛拟機

這裡有個圖檔文檔,還蠻不錯

1、https://blog.csdn.net/qq_36345864/article/details/104828420

2、有說明具體步驟:http://chengyaogen.blog.chinaunix.net/uid-30272819-id-5166021.html

clone虛拟機

kylinBase

為克隆的虛拟機,

kylin01

為克隆後的虛拟機:

# 先關閉kylinBase
virsh destroy kylinBase
# clone,如果想要做快照,生成的檔案名字尾用qcow2,raw不支援快照
virt-clone -o kylinBase -n kylin01 -f /virt/kylin01.raw
           

其中,參數說明:

-o: --origin,克隆的機器,這就需要自己備一個模闆
-n: --name,克隆後的機器的名稱
-f: --file,克隆後端機器存放的目錄
           

clone後需要改IP,kylin01的IP和kylinBase是一樣的,由于kylinBase已經關機,那麼通路該IP進入的是kylin01。

以下兩種是我常用的兩種辦法:

1、通過通路kylinBase的IP+9090端口通路web,在左側欄找到終端,正常修改後重新開機network服務;
2、一種是通過VNC VIewer軟體連接配接,通路ip為主控端的ip加上端口,這個端口需要在kylin01的xml配置檔案裡修改。但是不推薦使用vim去改,而推薦virsh edit kylin01的方式去修改
           

在檔案的最後幾行找到,将autoport改為no,将端口改成我們可以使用的即可

<graphics type='vnc' port='5921' autoport='no' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
</graphics>
           

然後啟動虛拟機

virsh start kylin01
           

個人建議是最好配置端口,有的時候因為一些原因會在本地無法通過kylin01的IP通路,比如防火牆和路由的關系,隻能通路主控端,而不能通路虛拟機。

删除虛拟機

1、關閉需要删除的虛拟機
virsh destroy kylin01
2、解除虛拟機在list中标記,建議帶上nvram參數,可以删除配置
virsh undefine kylin01 [--nvram]
3、手動删除/virt下的raw配置
rm -rf /virt/kylin01.raw
4、删除磁盤,建議建立磁盤時命名格式類似kylin01-1這種,友善區分也友善删除
rm -rf /images/kylin01*
           

這時kylin01已經是幹淨的,可以直接重新clone了

添加、删除磁盤

一般kvm常用的有raw和qcow2兩種格式,一般預設是raw,但它不支援snapshot,即快照,但qcow2支援。

1、關機
virsh destroy kylin01
2、建立一個raw,字尾也可以是raw
qemu-img create -f raw /images/kylin01-1.img 10G
如果是qcow2
qemu-img create -f qcow2 /images/kylin01-1.qcow2 10G
3、添加磁盤到系統中,映射到如sdg,此時是關機狀态,如果想在運作時添加,則後面加個live參數
virsh attach-disk kylin01 /images/kylin01-1.img sdg --cache none --subdriver raw --config [--live]

4、attach-disk能即時生效,但重新開機後就失效,是以修改配置,示例放在稍後
virsh edit kylin01

5、啟動
virsh start kylin01
           

删除磁盤,主要指定虛拟機、磁盤名

virsh detach-disk kylin01 sdg --config [--live]
           

attach-disk和detach-disk參數如下:

--persistent 讓實時更改更改持久,立即生效
--config 影響下一次引導,之後一直生效
--live 影響運作的域,重新開機失效
--current 影響目前域
           

添加磁盤後在配置中預設生成如下:

<disk type='file' device='disk'>
      <driver name='qemu' type='img' cache='none'/>
      <source file='/images/kylin01-1.img'/>
      <target dev='sdf' bus='scsi'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
           

我們需要将bus由scsi修改為virtio,删除

行,:wq退出儲存後會自動生成type為pci的行,這段無需手動修改:

<disk type='file' device='disk'>
      <driver name='qemu' type='img' cache='none'/>
      <source file='/images/kylin01-1.img'/>
      <target dev='sdf' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
</disk>
           

建立、删除内部快照

内部快照不支援raw,需要轉換成qcow2。一般來說建議使用外部快照,這裡因為沒測過,是以請參考連結4。

# 帶-as是可以指定新生成快照名的,如果沒有-as則不需要第二個參數
virsh snapshot-create-as kylin01 kylin01_clone
# 這種方式生成的快照名是數字
virsh snapshot-create kylin01


檢視kylin01的快照狀态配置檔案
virsh snapshot-current kylin01

檢視kylin01的快照資訊
virsh snapshot-list kylin01

恢複快照,若要在不停機時復原需要加force參數
virsh snapshot-revert [--force] kylin01 kylin01_clone

删除快照
virsh snapshot-delete kylin01 kylin01_clone

           

注意事項:

1、生成的快照目錄`/var/lib/libvirt/qemu`,是以删除時還需要手動删除該目錄下對應快照;
2、恢複前最後關閉虛拟機,也可以在開啟時復原,但有新資料寫入時還是有問題。需要加--force,不加會提示
error: revert requires force: Target controller type ide does not match source usb;
3、如果建立時報錯,則說明raw不支援内部快照,需要轉換格式:
error: unsupported configuration: internal snapshot for disk vda unsupported for storage type raw
           

轉換格式

轉換格式,轉換後需要改配置裡的type和file的名字字尾,-f指源格式,-O指目标格式,是以也可以互相轉換

qemu-img convert -f raw -O qcow2 /imges/kylin01-1.img /imges/kylin01-1.qcow2
           

檢視磁盤鏡像格式

qemu-img info /imges/kylin01-1.img
           

檢視資訊如

[[email protected] images]# qemu-img info kylin01.img 
image: kylin01.raw
file format: raw
virtual size: 50G (53687091200 bytes)
disk size: 16G
           

此外,還需要修改配置,如type由img改為qcow2,并将file的字尾改為qcow2

<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/images/kylin01-1.qcow2'/>
      <target dev='sdf' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
</disk>
           

但轉換了格式之後,建立内部快照還是有可能報錯,是以可以嘗試外部快照

internal snapshot of a VM with pflash based firmware are not supported
           

意思是不支援具有基于pflash固件的VM的内部快照

其他問題

1、如果偶爾出現VNC通過端口能通路子機,但是主控端和子機之間無法連接配接,在排除沒有搭建橋接的前提下,可以重新開機防火牆服務firewalld,但最好先start再stop,不要直接執行restart。

2、如果在重新開機了主控端後發現,主控端内能ping通虛拟機,但是從虛拟機内無法ping通主控端及外網。可以用VNC通過端口連接配接通路虛拟機,但是xshell無法連上,從裡往外ping主控端及相同其他網段都無法ping通,可以參考連結3。簡單解釋來說,就是防火牆被關之後,路由表就沒有了,無法進行IP轉發。

3、原本試圖通過快照來做環境恢複,就像VMWare上建立虛拟機做的那樣,但是後來發現這個快照主要是用來備份資料的。假設你已經建立了虛拟機子機,你一通過指令恢複就會提示你已存在,如果不存在子機又會提示你沒有這個子機。也就是說,恢複以子機存在為前提。

4、Ubuntu橋接配置可以參考我另一篇:https://blog.csdn.net/qq_28304687/article/details/116132295。

5、虛拟機進入pause狀态,無法resume:https://blog.csdn.net/qq_28304687/article/details/116302027

可參考連結

1、内部快照:http://www.361way.com/internal-snapshot/3179.html

2、https://blog.csdn.net/qq_36345864/article/details/104828420

3、解決KVM虛拟機不能連外網的問題:https://blog.csdn.net/u010099177/article/details/107426372

4、内部快照和外部快照:https://www.jianshu.com/p/4f1a1ce7c6a8

5、圖檔文檔:https://blog.csdn.net/qq_36345864/article/details/104828420

6、https://blog.csdn.net/majiangNB/article/details/81672911

7、http://chengyaogen.blog.chinaunix.net/uid-30272819-id-5166021.html

8、Ubuntu配置網橋:https://blog.csdn.net/qq_28304687/article/details/116132295

9、https://blog.csdn.net/weixin_34380296/article/details/85822000