KVM-QEMU, QCOW2, QEMU-IMG and Snapshots

介紹:

QCOW2格式是KVM-QEMU推出的一種鏡像格式,它不預先分配所有的磁盤空間,支持快照功能,而且你能夠用之前的鏡像做爲基礎,建立出基於它的新鏡像,這樣能夠加快建立虛擬機的速度。shell

這篇文章將講述一些qemu-img的高級功能。咱們會先建立一個QCOW2鏡像(base鏡像),爲它作快照(base.snap1),建立一個基於它的新鏡像(base.demo),讓新鏡像擺脫base鏡像.spa

基礎知識:

qem-img命令:.net

寫這篇文章的時候,Virt-Manager不支持qcow2的高級功能,惟一使用這些高級功能的辦法就是執行shell 命令code

在看這篇文章以前你能夠先看下qemu-img的man手冊,找到你想使用的功能。文章中咱們只討論下面這些命令。orm

  • qemu-img info <imagename> ci

  • 查看鏡像基本信息 get

     

  • qemu-img create -f qcow2 <鏡像名字> <max-storage> 虛擬機

  • 建立一個qcow2鏡像。須要指定鏡像容量.io

     

  • qemu-img create -b <鏡像1> -f qcow2  <鏡像2> form

  • 建立一個基於鏡像1的鏡像2,鏡像2的文件將基於鏡像1,鏡像2中的文件將基於鏡像1中的.  在鏡像2中所做的任何讀寫操做都不會影響到鏡像1. 鏡像1能夠被其餘鏡像當作backing file. 可是要確保鏡像1不要被修改

  • 警告: 修改做爲backing file的鏡像會影響基於它的全部鏡像 

     

  • qemu-img snapshot -l <鏡像名字> 

  • 查看鏡像的全部快照 

 

  • qemu-img snapshot -c <快照名字> <鏡像名字>

  • 爲鏡像建立快照,就像給它照了張像。

     

  • qemu-img snapshot -a <快照名字> <鏡像名字> 

  • 恢復快照。 

     

  • qemu-img snapshot -d <快照名字> <鏡像名字> 

  •  從鏡像中刪除快照,刪除快照並不會減少鏡像的所佔空間。 但這樣刪除後釋放的空間會給鏡像自身未來使用。

     

  • qemu-img convert -p -f qcow2 <源鏡像> -O qcow2 <目標鏡像> 

  • 鏡像格式的轉換, 當轉換的源鏡像和目標鏡像格式都是qcow2的時候至關於複製源鏡像的當前狀態至目標鏡像。 -p參數是顯示轉換進度。 轉換出的目標鏡像將不含任何原有鏡像快照。 這樣有助於幫助鏡像擺脫backing file。

     




     
  •  

實踐 :

接下來咱們將使用上面的命令來作實驗。

建立一個1g大小的base鏡像

qemu-img create -f qcow2 base.qcow2 1G

查看鏡像信息

qemu-img info base.qcow2 
image: base.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 136K
cluster_size: 65536

建立快照snap1

qemu-img snapshot -c snap1 base.qcow2

查看鏡像信息

qemu-img info base.qcow2 
image: base.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 144K
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snap1                     0 2015-01-29 17:04:36   00:00:00.000

建立快照snap2並查看鏡像信息

qemu-img snapshot -c snap2 base.qcow2
qemu-img info base.qcow2 
image: base.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 156K
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snap1                     0 2015-01-29 17:04:36   00:00:00.000
2         snap2                     0 2015-01-29 17:07:03   00:00:00.000

 

刪除快照snap1並查詢鏡像信息

qemu-img snapshot -d snap1 base.qcow2
qemu-img info base.qcow2 
image: base.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 156K
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
2         snap2                     0 2015-01-29 17:07:03   00:00:00.000

  恢復快照snap2

qemu-img snapshot -a snap2 base.qcow2

建立基於base.qcow2的鏡像test1.qcow2

qemu-img create -b base.qcow2 -f qcow2 test1.qcow2
Formatting 'test1.qcow2', fmt=qcow2 size=1073741824 backing_file='base.qcow2' encryption=off cluster_size=65536

查看新建鏡像的信息(注意最後一行)

qemu-img info test1.qcow2 
image: test1.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
backing file: base.qcow2

 

建立一個test-merge.qcow2 讓 test1.qcow2 並擺脫backing file

qemu-img convert -p -f qcow2 test1.qcow2 -O qcow2 test1-merge.qcow2
    (100.00/100%)

查看鏡像信息(注意最後沒有了backing file)

qemu-img info test1-merge.qcow2 
image: test1-merge.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 136K
cluster_size: 65536

 

更改backing file 操做以下

#qemu-img info test1.qcow2 
image: test1.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
backing file: /opt/test/base.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
# qemu-img rebase test1.qcow2 -b base2.qcow2 
# qemu-img info test1.qcow2 
image: test1.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
backing file: base2.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false


 

 

 

 

最後 更多的高級功能請參考qemu-img的man手冊。

 

 

原文:http://www.azertech.net/content/kvm-qemu-qcow2-qemu-img-and-snapshots

相關文章
相關標籤/搜索