歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> KVM-QEMU, QCOW2, QEMU-IMG and Snapshots

KVM-QEMU, QCOW2, QEMU-IMG and Snapshots

日期:2017/2/27 15:56:01   编辑:Linux教程

介紹:

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

創建快照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 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手冊。
Copyright © Linux教程網 All Rights Reserved