qemu使用
qemu使用?
本文目錄
- 前言:
 - qemu-img基本命令
 - qemu-img使用
 
回到目錄
前言:
qemu-img是QEMU的磁盤管理工具,在qemu-kvm源碼編譯后就會(huì)默認(rèn)編譯好qemu-img這個(gè)二進(jìn)制文件。qemu-img也是QEMU/KVM使用過程中一個(gè)比較重要的工具,本節(jié)對(duì)其用法和實(shí)踐使用方法進(jìn)行介紹。
本文先介紹qemu-img的基本命令及語(yǔ)法,這個(gè)也可以通過qemu-img --help得到。然后簡(jiǎn)單介紹創(chuàng)建和使用kvm虛擬機(jī)鏡像文件的一般過程。
回到目錄
qemu-img基本命令
1、check [-f fmt] filename
對(duì)磁盤鏡像文件進(jìn)行一致性檢查,查找鏡像文件中的錯(cuò)誤,目前僅支持對(duì)“qcow2”、“qed”、“vdi”格式文件的檢查。其中,qcow2是QEMU 0.8.3版本引入的鏡像文件格式,也是目前使用最廣泛的格式。qed(QEMU enhanced disk)是從QEMU 0.14版開始加入的增強(qiáng)磁盤文件格式,為了避免qcow2格式的一些缺點(diǎn),也為了提高性能,不過目前還不夠成熟。而vdi(Virtual Disk Image)是Oracle的VirtualBox虛擬機(jī)中的存儲(chǔ)格式。參數(shù)-f fmt是指定文件的格式,如果不指定格式qemu-img會(huì)自動(dòng)檢測(cè),filename是磁盤鏡像文件的名稱(包括路徑)。
2、create [-f fmt] [-o options] filename [size]
創(chuàng)建一個(gè)格式為fmt大小為size文件名為filename的鏡像文件。根據(jù)文件格式fmt的不同,還可以添加一個(gè)或多個(gè)選項(xiàng)(options)來(lái)附加對(duì)該文件的各種功能設(shè)置,可以使用“-o ?”來(lái)查詢某種格式文件支持那些選項(xiàng),在“-o”選項(xiàng)中各個(gè)選項(xiàng)用逗號(hào)來(lái)分隔。
如果“-o”選項(xiàng)中使用了backing_file這個(gè)選項(xiàng)來(lái)指定其后端鏡像文件,那么這個(gè)創(chuàng)建的鏡像文件僅記錄與后端鏡像文件的差異部分。后端鏡像文件不會(huì)被修改,除非在QEMU monitor中使用“commit”命令或者使用“qemu-img commit”命令去手動(dòng)提交這些改動(dòng)。這種情況下,size參數(shù)不是必須需的,其值默認(rèn)為后端鏡像文件的大小。另外,直接使用“-b backfile”參數(shù)也與“-o backing_file=backfile”效果相同。
size選項(xiàng)用于指定鏡像文件的大小,其默認(rèn)單位是字節(jié)(bytes),也可以支持k(或K)、M、G、T來(lái)分別表示KB、MB、GB、TB大小。另外,鏡像文件的大小(size)也并非必須寫在命令的最后,它也可以被寫在“-o”選項(xiàng)中作為其中一個(gè)選項(xiàng)。
對(duì)create命令的演示如下所示,其中包括查詢qcow2格式支持的選項(xiàng)、創(chuàng)建有backing_file的qcow2格式的鏡像文件、創(chuàng)建沒有backing_file的10GB大小的qcow2格式的鏡像文件。
3、commit [-f fmt] [-t cache] filename
提交filename文件中的更改到后端支持鏡像文件(創(chuàng)建時(shí)通過backing_file指定的)中去。
4、convert [-c] [-p] [-f fmt] [-t cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 [...]] output_filename
將fmt格式的filename鏡像文件根據(jù)options選項(xiàng)轉(zhuǎn)換為格式為output_fmt的名為output_filename的鏡像文件。它支持不同格式的鏡像文件之間的轉(zhuǎn)換,比如可以用VMware用的vmdk格式文件轉(zhuǎn)換為qcow2文件,這對(duì)從其他虛擬化方案轉(zhuǎn)移到KVM上的用戶非常有用。一般來(lái)說,輸入文件格式fmt由qemu-img工具自動(dòng)檢測(cè)到,而輸出文件格式output_fmt根據(jù)自己需要來(lái)指定,默認(rèn)會(huì)被轉(zhuǎn)換為與raw文件格式(且默認(rèn)使用稀疏文件的方式存儲(chǔ)以節(jié)省存儲(chǔ)空間)。
其中,“-c”參數(shù)是對(duì)輸出的鏡像文件進(jìn)行壓縮,不過只有qcow2和qcow格式的鏡像文件才支持壓縮,而且這種壓縮是只讀的,如果壓縮的扇區(qū)被重寫,則會(huì)被重寫為未壓縮的數(shù)據(jù)。同樣可以使用“-o options”來(lái)指定各種選項(xiàng),如:后端鏡像、文件大小、是否加密等等。使用backing_file選項(xiàng)來(lái)指定后端鏡像,讓生成的文件是copy-on-write的增量文件,這時(shí)必須讓轉(zhuǎn)換命令中指定的后端鏡像與輸入文件的后端鏡像的內(nèi)容是相同的,盡管它們各自后端鏡像的目錄、格式可能不同。
如果使用qcow2、qcow、cow等作為輸出文件格式來(lái)轉(zhuǎn)換raw格式的鏡像文件(非稀疏文件格式),鏡像轉(zhuǎn)換還可以起到將鏡像文件轉(zhuǎn)化為更小的鏡像,因?yàn)樗梢詫⒖盏纳葏^(qū)刪除使之在生成的輸出文件中并不存在。
5、info [-f fmt] filename
展示filename鏡像文件的信息。如果文件是使用稀疏文件的存儲(chǔ)方式,也會(huì)顯示出它的本來(lái)分配的大小以及實(shí)際已占用的磁盤空間大小。如果文件中存放有客戶機(jī)快照,快照的信息也會(huì)被顯示出來(lái)。
6、snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
“-l” 選項(xiàng)是查詢并列出鏡像文件中的所有快照,“-a snapshot”是讓鏡像文件使用某個(gè)快照,“-c snapshot”是創(chuàng)建一個(gè)快照,“-d”是刪除一個(gè)快照。
7、rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename
改變鏡像文件的后端鏡像文件,只有qcow2和qed格式支持rebase命令。使用“-b backing_file”中指定的文件作為后端鏡像,后端鏡像也被轉(zhuǎn)化為“-F backing_fmt”中指定的后端鏡像格式。
它可以工作于兩種模式之下,一種是安全模式(Safe Mode)也是默認(rèn)的模式,qemu-img會(huì)去比較原來(lái)的后端鏡像與現(xiàn)在的后端鏡像的不同進(jìn)行合理的處理;另一種是非安全模式(Unsafe Mode),是通過“-u”參數(shù)來(lái)指定的,這種模式主要用于將后端鏡像進(jìn)行了重命名或者移動(dòng)了位置之后對(duì)前端鏡像文件的修復(fù)處理,由用戶去保證后端鏡像的一致性。
8、resize filename [+ | -]size
改變鏡像文件的大小,使其不同于創(chuàng)建之時(shí)的大小?!?#43;”和“-”分別表示增加和減少鏡像文件的大小,而size也是支持K、M、G、T等單位的使用??s小鏡像的大小之前,需要在客戶機(jī)中保證里面的文件系統(tǒng)有空余空間,否則會(huì)數(shù)據(jù)丟失,另外,qcow2格式文件不支持縮小鏡像的操作。在增加了鏡像文件大小后,也需啟動(dòng)客戶機(jī)到里面去應(yīng)用“fdisk”、“parted”等分區(qū)工具進(jìn)行相應(yīng)的操作才能真正讓客戶機(jī)使用到增加后的鏡像空間。不過使用resize命令時(shí)需要小心(最好做好備份),如果失敗的話,可能會(huì)導(dǎo)致鏡像文件無(wú)法正常使用而造成數(shù)據(jù)丟失。(www.sijitao.net)
回到目錄
qemu-img使用
1、創(chuàng)建虛擬機(jī)鏡像
以下命令是創(chuàng)建一個(gè)raw格式,大小為8G的鏡像。
root@ubuntu:/var/lib/libvirt/images# qemu-img create -f raw test.raw 8G
 Formatting '/var/lib/libvirt/images/test.raw', fmt=raw size=8589934592
2、查看虛擬機(jī)鏡像文件
以下命令是查看剛剛創(chuàng)建的文件。
root@ubuntu:/var/lib/libvirt/images# qemu-img info test.raw
 image: test.raw
 file format: raw
 virtual size: 8.0G (8589934592 bytes)
 disk size: 0
ls中看到文件的大小是8G,但是實(shí)際上現(xiàn)在這塊磁盤大小是0。這就是稀疏文件。
3、轉(zhuǎn)化格式
qemu-img支持的格式如下所示:
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
以下命令是把文件從raw轉(zhuǎn)成qcow2格式,然后再查看新鏡像文件。
root@ubuntu:/var/lib/libvirt/images# qemu-img convert -c -O qcow2 test.raw test.qcow2
 root@ubuntu:/var/lib/libvirt/images# qemu-img info test.qcow2
 image: test.qcow2
 file format: qcow2
 virtual size: 8.0G (8589934592 bytes)
 disk size: 136K
 cluster_size: 65536
4、改變鏡像文件大小
這個(gè)命令需要注意數(shù)據(jù)的備份,下面是轉(zhuǎn)化的例子。
root@ubuntu:/var/lib/libvirt/images# qemu-img resize test.raw +1GB
 Image resized.
 root@ubuntu:/var/lib/libvirt/images# qemu-img info test.raw
 image: test.raw
 file format: raw
 virtual size: 9.0G (9663676416 bytes)
 disk size: 0
raw和qcow2都可以支持resize。
root@ubuntu:/var/lib/libvirt/images# qemu-img resize test.qcow2 +1GB
 Image resized.
 root@ubuntu:/var/lib/libvirt/images# qemu-img info test.qcow2
 image: test.qcow2
 file format: qcow2
 virtual size: 9.0G (9663676416 bytes)
 disk size: 140K
 cluster_size: 65536
5、磁盤鏡像快照
快照這個(gè)功能只支持qcow2格式,raw不支持。其中-c是創(chuàng)建快照,-l是查看快照,-a是恢復(fù)快照,-d是刪除快照。注意,創(chuàng)建磁盤快照時(shí)虛擬機(jī)需要處理關(guān)閉的狀態(tài)。
root@ubuntu:/var/lib/libvirt/images# qemu-img snapshot -c base test.raw
 qemu-img: Could not create snapshot 'base': -95 (Operation not supported)
 root@ubuntu:/var/lib/libvirt/images# qemu-img snapshot -c base test.qcow2
 root@ubuntu:/var/lib/libvirt/images# qemu-img snapshot -l test.qcow2
 Snapshot list:
 ID??????? TAG???????????????? VM SIZE??????????????? DATE?????? VM CLOCK
 1???????? base????????????????????? 0 2014-11-06 15:52:38?? 00:00:00.000
root@ubuntu:/var/lib/libvirt/images# qemu-img snapshot -a 1 test.qcow2
 root@ubuntu:/var/lib/libvirt/images# qemu-img snapshot -l test.qcow2
 Snapshot list:
 ID??????? TAG???????????????? VM SIZE??????????????? DATE?????? VM CLOCK
 1???????? base????????????????????? 0 2014-11-06 15:52:38?? 00:00:00.000
 root@ubuntu:/var/lib/libvirt/images# qemu-img snapshot -d 1 test.qcow2
 root@ubuntu:/var/lib/libvirt/images# qemu-img snapshot -l test.qcow2
6、使用派生鏡像
剛剛我們創(chuàng)建了test.raw鏡像,比如使用這個(gè)鏡像的虛擬機(jī)安裝了一個(gè)系統(tǒng)。然后我們可以通過創(chuàng)建派生鏡像來(lái)使用這個(gè)系統(tǒng),避免每創(chuàng)建一個(gè)虛擬機(jī)就安一個(gè)系統(tǒng)的情況。下面是創(chuàng)建一個(gè)派生鏡像的例子。
root@ubuntu:/var/lib/libvirt/images# qemu-img create -f qcow2 test1.qcow2 -o backing_file=test.raw
 Formatting 'test1.qcow2', fmt=qcow2 size=9663676416 backing_file='test.raw' encryption=off cluster_size=65536
 root@ubuntu:/var/lib/libvirt/images# qemu-img info test1.qcow2
 image: test1.qcow2
 file format: qcow2
 virtual size: 9.0G (9663676416 bytes)
 disk size: 136K
 cluster_size: 65536
 backing file: test.raw (actual path: test.raw)
總結(jié)
                            
                        - 上一篇: Windows下ftp拷贝出现 当前的安
 - 下一篇: 哈工大软件构造 复习