QCOW2格式是KVM-QEMU推出的一種鏡格式,它不預先分配全部的磁盤空間,並且支持快照功能,並且你可以用以前的鏡像作為基礎,創建出基於它的新鏡像,這樣可以加快創建虛擬機的速度。
這篇文章將講述一些qemu-img的高級功能。我們會先創建一個QCOW2鏡像(base鏡像),為它做快照(base.snap1),創建一個基於它的新鏡像(base.demo),讓新鏡像擺脫base鏡像.
qem-img命令:
寫這篇文章的時候,Virt-Manager不支持qcow2的高級功能,唯一使用這些高級功能的辦法就是執行shell 命令
在看這篇文章之前你可以先看下qemu-img的man手冊,找到你想使用的功能。文章中我們只討論下面這些命令。
qemu-img info <imagename>
查看鏡像基本信息
qemu-img create -f qcow2 <鏡像名字> <max-storage>
創建一個qcow2鏡像。需要指定鏡像容量.
qemu-img create -b <鏡像1> -f qcow2 <鏡像2>
創建一個基於鏡像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
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
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 clus查看新建鏡像的信息(注意最後一行)
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最後 更多的高級功能請參考qemu-img的man手冊。