qmeu-img建立虛擬機器

來源:互聯網
上載者:User
文章目錄
  •  
  • qemu-img基本命令
  • 增加減少鏡像大小
  • 快照
qmeu-img建立虛擬機器(建立虛擬機器,虛擬機器快照) 使用 qmeu-img 管理虛擬機器磁碟鏡像(建立虛擬機器,虛擬機器快照)

一台虛擬機器的核心就是一個磁碟鏡像,這個鏡像可以理解成虛擬機器的磁碟,裡面有虛擬機器的作業系統和驅動等重要檔案。本文主要介紹建立虛擬機器的一般過程。

建立虛擬機器鏡像

 

要在一台host上跑起一個虛擬機器一般需要兩個步驟:

第一步:建立虛擬機器鏡像

qemu-img create -f raw /images/vm1.raw 8G

qmeu-img建立的鏡像是一個疏鬆檔案,也就是說剛建立出來的檔案並沒有8G,它會隨著資料的增多慢慢增加,直到8G

 

第二步:啟動虛擬機器

kvm /imges/vm1.raw

運行結果: 因為鏡像裡面沒有任何內容,所以提示找不到可引導裝置。

 

使用qemu-img管理鏡像 qemu-img基本命令

 

上節介紹了使用qemu-img建立鏡像,這一節將會介紹qemu-img在鏡像管理上的強大功能。

qemu-img有很多命令,包括下面常用的,當然qemu-img -h你懂得。

info

查看鏡像的資訊

create

建立鏡像

check

檢查鏡像

convert

轉化鏡像的格式,(raw,qcow ……)

snapshot

管理鏡像的快照

rebase

在已有的鏡像的基礎上建立新的鏡像

resize

增加或減小鏡像大小

  建立鏡像

 

qemu-img create -f <fmt> -o <options> <fname> <size>

 舉例:

qemu-img create -f raw -o size=4G /images/vm2.raw

 

hzgatt@hzgatt:~/images$ lltotal 0-rw-r--r-- 1 hzgatt hzgatt 4.0G  6月 29 14:11 vm2.rawhzgatt@hzgatt:~/images$ ll -stotal 00 -rw-r--r-- 1 hzgatt hzgatt 4.0G  6月 29 14:11 vm2.raw

 

hzgatt@hzgatt:~/images$ qemu-img info vm2.raw image: vm2.rawfile format: rawvirtual size: 4.0G (4294967296 bytes)disk size: 0

 

雖然ls中看到檔案的大小是4G,但是實際上磁碟大小是0。這就是疏鬆檔案

 

 

轉化

將一個鏡像檔案轉化為另外一種格式,qemu-img支援的格式可以看qemu-img -h最後一行。

Supported formats: vvfat vpc vmdk vdi sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd dmg tftp ftps ftp https http cow cloop bochs blkverify blkdebug

 

轉化命令:

qemu-img convert -c -f fmt -O out_fmt -o options fname out_fname

 

-c:採用壓縮,只有qcow和qcow2才支援

-f:源鏡像的格式,它會自動檢測,所以省略之

-O 目標鏡像的格式

-o 其他選先

fname:源檔案

out_fname:轉化後的檔案

看例子:

hzgatt@hzgatt:~/images$ qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2

 

hzgatt@hzgatt:~/images$ ll -stotal 136K   0 -rw-r--r-- 1 hzgatt hzgatt 5.0G  6月 29 13:55 vm1.raw136K -rw-r--r-- 1 hzgatt hzgatt 193K  6月 29 14:22 vm2.qcow2   0 -rw-r--r-- 1 hzgatt hzgatt 4.0G  6月 29 14:11 vm2.raw
hzgatt@hzgatt:~/images$ qemu-img info vm2.qcow2 image: vm2.qcow2file format: qcow2virtual size: 4.0G (4294967296 bytes)disk size: 136Kcluster_size: 65536

 

如果想看要轉化的格式支援的-o選項有哪些,可以在命令末尾加上 -o ?

hzgatt@hzgatt:~/images$ qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2 -o ?Supported options:size             Virtual disk sizebacking_file     File name of a base imagebacking_fmt      Image format of the base imageencryption       Encrypt the imagecluster_size     qcow2 cluster sizepreallocation    Preallocation mode (allowed values: off, metadata)

 

增加減少鏡像大小

注意:只有raw格式的鏡像才可以改變大小

hzgatt@hzgatt:~/images$ qemu-img resize vm2.raw +2GB
hzgatt@hzgatt:~/images$ ll -stotal 136K   0 -rw-r--r-- 1 hzgatt hzgatt 5.0G  6月 29 13:55 vm1.raw136K -rw-r--r-- 1 hzgatt hzgatt 193K  6月 29 14:22 vm2.qcow2   0 -rw-r--r-- 1 hzgatt hzgatt 6.0G  6月 29 14:28 vm2.rawhzgatt@hzgatt:~/images$ qemu-img info vm2.raw image: vm2.rawfile format: rawvirtual size: 6.0G (6442450944 bytes)disk size: 0

 

快照

查看快照

qemu-img snapshot -l /images/vm2.qcow2

注意:只有qcow2才支援快照

打快照

qemu-img snapshot -c booting vm2.qcow2

 

舉例:

hzgatt@hzgatt:~/images$ qemu-img snapshot -c booting vm2.qcow2 hzgatt@hzgatt:~/images$ qemu-img snapshot -l vm2.qcow2 Snapshot list:ID        TAG                 VM SIZE                DATE       VM CLOCK1         booting                   0 2012-06-29 14:35:04   00:00:00.000

 

從快照恢複:

qemu-img snapshot -a 1 /images/vm2.qcow2

然後從kvm啟動這個虛擬機器,會發現虛擬機器又在打快照時的狀態了

 

刪除快照:

qemu-img snapshot -d 2 /images/vm2.qcow

 

 

使用派生鏡像(qcow2)

    當建立的虛擬機器越來越多,並且你發現好多虛擬機器都是同一個作業系統,它們的區別就是安裝的軟體不大一樣,那麼你肯定會希望把他們公用的部分提取出來,只儲存那些與公用部分不同的東西,這樣鏡像大小下去了,空間變多了,管理也方便了。派生鏡像就是用來幹這事的!

首先看一個原始鏡像

hzgatt@hzgatt:~/images$ qemu-img info vm3_base.raw image: vm3_base.rawfile format: rawvirtual size: 2.0G (2147483648 bytes)disk size: 2.0G

現在我們建立一個鏡像,但是派生自它

hzgatt@hzgatt:~/images$ qemu-img create -f qcow2 vm3_5.qcow2 -o backing_file=vm3_base.raw 5GFormatting 'vm3_5.qcow2', fmt=qcow2 size=5368709120 backing_file='vm3_base.raw' encryption=off cluster_size=65536

 

hzgatt@hzgatt:~/images$ ll-rw-r--r-- 1 hzgatt hzgatt 193K  6月 29 15:00 vm3_5.qcow2-rw-r--r-- 1 hzgatt hzgatt 2.0G  6月 29 14:51 vm3_base.raw

 

hzgatt@hzgatt:~/images$ qemu-img info vm3_5.qcow2 image: vm3_5.qcow2file format: qcow2virtual size: 5.0G (5368709120 bytes)disk size: 136Kcluster_size: 65536backing file: vm3_base.raw (actual path: vm3_base.raw)

 

 ^_^,這個鏡像才136K,夠省了吧。DRY永遠的真理啊!

現在我們在vm3_5.qcow2上打了很多安全補丁,然後發現我又想在vm3_5.qcow2上派生新的虛擬機器,o(∩∩)o...哈哈,這下怎麼辦呢?

hzgatt@hzgatt:~/images$ qemu-img convert -O raw vm3_5.qcow2 vm3_base2.raw

 

hzgatt@hzgatt:~/images$ qemu-img info vm3_base2.raw image: vm3_base2.rawfile format: rawvirtual size: 5.0G (5368709120 bytes)disk size: 592M

 

這個轉化將會將vm3_5和base合并,產生新的vm3_base2.raw,然後你就可以繼續無窮無盡的派生之旅了!

原文

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.