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