KVM精簡教程(五):qemu-img命令詳解

qemu-img工具的命令行基本用法如下:

qemu-img command [command options]

它支持的命令分爲如下幾種:

5.1check

5.1.1命令格式

check [-f fmt] filename

對磁盤鏡像文件進行一致性檢查,查找鏡像文件中的錯誤,目前僅支持對“qcow2”、“qed”、“vdi”格式文件的檢查。其中,qcow2是QEMU 0.8.3版本引入的鏡像文件格式,也是目前使用最廣泛的格式。qed(QEMU enhanced disk)是從QEMU 0.14版開始加入的增強磁盤文件格式,爲了避免qcow2格式的一些缺點,也爲了提高性能,不過目前還不夠成熟。而vdi(Virtual Disk Image)是Oracle的VirtualBox虛擬機中的存儲格式。

參數-f fmt是指定文件的格式,如果不指定格式qemu-img會自動檢測,filename是磁盤鏡像文件的名稱(包括路徑)。

5.1.2 示例

#qemu-img check g1.img

No errors were found on the p_w_picpath.

5.2 create

5.2.1 命令格式

create [-f fmt] [-o options] filename [size]

創建一個格式爲fmt大小爲size文件名爲filename的鏡像文件。根據文件格式fmt的不同,還可以添加一個或多個選項(options)來附加對該文件的各種功能設置,可以使用“-o ?”來查詢某種格式文件支持那些選項,在“-o”選項中各個選項用逗號來分隔。

如果“-o”選項中使用了backing_file這個選項來指定其後端鏡像文件,那麼這個創建的鏡像文件僅記錄與後端鏡像文件的差異部分。後端鏡像文件不會被修改,除非在QEMU monitor中使用“commit”命令或者使用“qemu-img commit”命令去手動提交這些改動。這種情況下,size參數不是必須需的,其值默認爲後端鏡像文件的大小。另外,直接使用“-b backfile”參數也與“-o backing_file=backfile”效果相同。

size選項用於指定鏡像文件的大小,其默認單位是字節(bytes),也可以支持K、M、G、T來分別表示KB、MB、GB、TB大小。另外,鏡像文件的大小(size)並非必須寫在命令的最後,它也可以被寫在“-o”選項中作爲其中一個選項。

支持的選項:

size             虛擬盤大小

compat          兼容級別(0.10 or 1.1)

backing_file      派生自鏡像的名字

backing_fmt      派生自鏡像的格式

encryption       加密

cluster_size     qcow2 cluster size

preallocation    Preallocation mode (allowed values: off, metadata)

5.2.2 示例

創建格式爲qcow2的磁盤,大小爲6G,路徑爲/data/centos6.qcow2

#qemu-img create -f qcow2 /data/centos6.qcow2 6G

使用派生鏡像

# qemu-img create -f qcow2 test.qcow2 -o backing_file=centos6.qcow2 5G

返回結果:

Formatting 'test.qcow2', fmt=qcow2 size=5368709120 backing_file='centos6.qcow2' encryption=off cluster_size=65536

查看派生出的鏡像

# qemu-img info test.qcow2 

p_w_picpath: test.qcow2

file format: qcow2

virtual size: 5.0G (5368709120 bytes)

disk size: 196K

cluster_size: 65536

backing file: centos6.qcow2

5.3 commit

5.3.1 命令格式

commit [-f fmt] filename

提交filename文件中的更改到後端支持鏡像文件(創建時通過backing_file指定的)中去。

5.4 convert

5.4.1 命令格式

convert [-c] [-f fmt] [-O output_fmt] [-o options] filenam% [filename2 [...]] output_filename

將fmt格式的filename鏡像文件根據options選項轉換爲格式爲output_fmt的名爲output_filename的鏡像文件。它支持不同格式的鏡像文件之間的轉換,比如可以用VMware用的vmdk格式文件轉換爲qcow2文件,這對從其他虛擬化方案轉移到KVM上的用戶非常有用。一般來說,輸入文件格式fmt由qemu-img工具自動檢測到,而輸出文件格式output_fmt根據自己需要來指定,默認會被轉換爲與raw文件格式(且默認使用稀疏文件的方式存儲以節省存儲空間)。

其中,“-c”參數是對輸出的鏡像文件進行壓縮,不過只有qcow2和qcow格式的鏡像文件才支持壓縮,而且這種壓縮是隻讀的,如果壓縮的扇區被重寫,則會被重寫爲未壓縮的數據。同樣可以使用“-o options”來指定各種選項,如:後端鏡像、文件大小、是否加密等等。使用backing_file選項來指定後端鏡像,讓生成的文件是copy-on-write的增量文件,這時必須讓轉換命令中指定的後端鏡像與輸入文件的後端鏡像的內容是相同的,儘管它們各自後端鏡像的目錄、格式可能不同。

如果使用qcow2、qcow、cow等作爲輸出文件格式來轉換raw格式的鏡像文件(非稀疏文件格式),鏡像轉換還可以起到將鏡像文件轉化爲更小的鏡像,因爲它可以將空的扇區刪除使之在生成的輸出文件中並不存在。

下面的命令行演示了兩個轉換:將VMware的vmdk格式鏡像轉換爲KVM可以使用的qcow2鏡像,將一個raw鏡像文件轉化爲qcow2格式的鏡像。

5.4.2 示例

# qemu-img convert my-vmware.vmdk my-kvm.img

# qemu-img convert -O qcow2 rhel6u3.img rhel6u3-a.img

5.5 info

5.5.1 命令格式

info [-f fmt] filename

展示filename鏡像文件的信息。如果文件是使用稀疏文件的存儲方式,也會顯示出它的本來分配的大小以及實際已佔用的磁盤空間大小。如果文件中存放有客戶機快照,快照的信息也會被顯示出來。下面的命令行演示了前面進行文件轉換的輸入、輸出文件的信息。

5.5.2 示例

# qemu-img info rhel6u3.img

p_w_picpath: rhel6u3.img

file format: raw

virtual size: 8.0G (8589934592 bytes)

disk size: 8.0G

# qemu-img info rhel6u3-a.img

p_w_picpath: rhel6u3-a.img

file format: qcow2

virtual size: 8.0G (8589934592 bytes)

disk size: 6.8G

cluster_size: 65536

5.6 snapshot

5.6.1 命令格式

snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename

“-l” 選項是查詢並列出鏡像文件中的所有快照,“-a snapshot”是讓鏡像文件使用某個快照,“-c snapshot”是創建一個快照,“-d”是刪除一個快照。

5.6.2 示例

查看快照

# qemu-img snapshot -l centos6.qcow2

wKioL1e4HdvgIiDYAAAVZtl771k545.png-wh_50

創建快照

在centos6.qcow2上創建名稱爲c1快照

# qemu-img snapshot -c c1 centos6.qcow2

wKiom1e4HfLzVPPQAAAdtmUlV8w421.png-wh_50

刪除快照

# qemu-img snapshot -d one centos6.qcow2

wKioL1e4HgCheVA3AAAUkb7MhKI308.png-wh_50 

從快照中恢復

首先先查看有哪些快照

#qemu-img snapshot -l centos6.qcow2

wKiom1e4HhGhDbGNAAAUM123ruE671.png-wh_50

恢復快照時必須要關閉虛擬機.

從ID:2快照中恢復

#qemu-img snapshot -a 2 centos6.qcow2  #2爲ID

5.7 rebase

rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backing_fmt] filename

改變鏡像文件的後端鏡像文件,只有qcow2和qed格式支持rebase命令。使用“-b backing_file”中指定的文件作爲後端鏡像,後端鏡像也被轉化爲“-F backing_fmt”中指定的後端鏡像格式。

它可以工作於兩種模式之下,一種是安全模式(Safe Mode)也是默認的模式,qemu-img會去比較原來的後端鏡像與現在的後端鏡像的不同進行合理的處理;另一種是非安全模式(Unsafe Mode),是通過“-u”參數來指定的,這種模式主要用於將後端鏡像進行了重命名或者移動了位置之後對前端鏡像文件的修復處理,由用戶去保證後端鏡像的一致性。

5.8 resize

5.8.1 命令格式

resize filename [+ | -]size

改變鏡像文件的大小,使其不同於創建之時的大小。“+”和“-”分別表示增加和減少鏡像文件的大小,而size也是支持K、M、G、T等單位的使用。

注意:

1.縮小鏡像的大小之前,需要在客戶機中保證裏面的文件系統有空餘空間,否則會數據丟失.

2.qcow2格式文件不支持縮小鏡像的操作。

3.在增加了鏡像文件大小後,也需啓動客戶機到裏面去應用“fdisk”、“parted”等分區工具進行相應的操作才能真正讓客戶機使用到增加後的鏡像空間。

4.創建了快照的虛擬機不支持該操作.

5.使用resize命令時需要小心(最好做好備份),如果失敗的話,可能會導致鏡像文件無法正常使用而造成數據丟失。

5.8.2 示例

爲centos6.qcow2增加2G空間

# qemu-img resize centos6.qcow2 +2G

# qemu-img resize rhel6u3-b.img -1G

Image resized.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章