qemu-img————QEMU的磁盘管理工具
qemu-img command [command options]
Command:
check [-f fmt] filename # 對磁盤鏡像文件進行一致性檢查,查找鏡像文件中的錯誤
# 目前僅支持對"qcow2 "、"qed"、"vdi"格式文件的檢查
# 參數-f fmt是指定文件的格式,如果不指定格式,qemu-img會自動檢測。
# filename是磁盤鏡像文件的名稱(包括路徑)
qcow2是QEMU 0.8.3版本引入的鏡像文件格式,也是目前使用最廣泛的格式。
qed(QEMU enhance disk)是從QEMU 0.14版開始加入的增強磁盤文件格式,避免了qcow2格式的一些缺點,也提高了性能,不過目前還不夠成熟。
vdi( Virtual Disk Image)是Oracle的Virtual Box虛擬機中的存儲格式。
create [-f fmt] [-o options ] filename [size] #創建一個格式為fmt , 大小為size, 文件名為filename 的鏡像文件
注意:
1、使用-f指定不同的硬盤格式(qcow、qed、vid),-o選項支持的選項也不同可以添加一個或多個選項(options)來附加對該文件的各種功能設置
2、可以使用"-o ?"來查詢某種格式文件支持哪些選項,在"-o" 選項中各個選項用逗號來分隔。
3、如果在"-o"選項中使用了backing_file這個選項來指定其后端基礎鏡像文件,那么這個創建的鏡像文件僅記錄與后端鏡像文件的差異部分
4、后端鏡像文件不會被修改,除非在QEMU monitor中使用"commit"命令或使用"qemu-img commit"命令去手動提交這些改動
5、這種情況下,size參數不是必須需的,其值默認為后端鏡像文件的大小。
6、另外,直接使用"-b backfile"參數也與"-o backing_file=backfile"效果相同!!!!
7、size選項用于像文件的大小,其默認單位是字節(bytes), 也可以支持k (即K )、M、G、T來分別表示KB 、MB 、GB 、TB 大小。
8、另外,鏡像文件的大小(size)也并非必須寫在命令的最后,也可以寫在"-o" 選項中作為其中一個選項
使用示例:
不使用基礎鏡像:
qemu-img create -f qcow2 /application/kvm_data/cs-00.qcow2 10G
使用基礎鏡像(基礎鏡像必須事先存在):
qemu-img -f qcow2 -b /application/kvm_data/cs-00.qcow2 /application/kvm_data/cs-01.qcow2 #未指定size,使用基礎鏡像的size
或
qumu-img -f qcow2 -o backing_file='/application/kvm_data/cs-00.qcow2' /application/kvm_data/cs-01.qcow2
使用-o選項指定基礎鏡像,同時指定size
qumu-img -f qcow2 -o backing_file='/application/kvm_data/cs-00.qcow2',size=15G /application/kvm_data/cs-01.qcow2
commit [-f fmt] filename #提交filename文件中的更改到后端支持鏡像文件(創建時通過-o選項的backing_file參數指定的基礎鏡像或使用-b選項指定的基礎鏡像)中。
#最好不要這樣操作,因為這樣會更改基礎鏡像,除非要更改基礎鏡像
convert [-c] [-f fmt1] [-O fmt2] [-o options] filename [filename2 […]] output_filename
#根據-o指定的選項,將格式為fmt1的名稱為filename鏡像文件 轉換為 格式為fmt2的名稱為output_filename的鏡像
一般來說:
輸入文件格式fmt1由qemu-img工具自動檢測到(可以不使用-f指定),
輸出文件格式fmt2根據自己需要來指定,默認會被轉換為raw文件格式(且默認使用稀疏文件的方式存儲以節省存儲空間)
"-c " #表示對輸出的鏡像文件進行壓縮,只有qcow2和qcow格式的鏡像文件才支持壓縮,
#并且這種壓縮是只讀的,如果壓縮的扇區被重寫,則會被重寫為未壓縮的數據
-f #指定輸入鏡像文件的格式 ,可省略,指令能夠自動檢測
-O #指定輸出鏡像文件的格式,如果省略,則使用默認的raw,若轉換成其它格式必須明確指定
"-o options" #和create中的-o選項相同,指定各種選項,如后端鏡像、文件大小、是否加密等等。
-o支持的選項:
backing_file 用于指定后端鏡像文件。
backing_fmt 設置后端鏡像的鏡像格式。
cluster_size 設置鏡像中簇的大小,取值在512B到2MB之間,默認值為64KB。
較小的簇可以節省鏡像文件的空間,而較大的簇可以帶來更好的性能,需要根據實際情況來平衡,一般采用默認值即可。
preallocation 設置鏡像文件空間的預分配模式,其值可為"off"、"metadata" 之一:
"off"模式是默認值,設置了不為鏡像文件預分配磁盤空間。
"metadata" 模式用于設置為鏡像文件預分配metadata的磁盤空間,所以這種方式生成的鏡像文件稍大一點,不過在其真正分配空間寫入數據時效率更高。
另外,一些版本的qemu-img (如RHEL6.3 自帶的)還支持"full"模式的預分配,它表示在物理上預分配全部的磁盤空間,它將整個鏡像的空間都填充零以占用空間,當然它所花費的時間較長,不過使用時性能更好。
encryption 用于設置加密, 當它等于"on"時,鏡像被加密。
它使用128位密鑰的ASE加密算法,故其密碼長度可達16個字符(每個字符8位),可以保證加密的安全性較高。
在將"qemu-img convert"命令轉化為qcow2格式時,加上"-o encryption",即可對鏡像文件設置密碼,
而在使用鏡像啟動客戶機時需要在QEMU monitor中輸入"cont"或"c"(是continue的意思)
命令來喚醒客戶機輸入密碼后繼續執行(否則客戶機將不會真正啟動)。
示例:
#將VMware的vmdk格式鏡像轉換為KVM可以使用的raw格式的鏡像
qernu-img convert my-vmware.vrndk my-kvm.img
#將一個raw鏡像文件轉化為qcow2格式的鏡像
qemu-img convert -O qcow2 rhel6u3.img rhel6u3-a.qcow2
info [-f fmt] filename #展示filename鏡像文件的信息
#如果文件使用的是稀疏文件的存儲方式,也會顯示出它本來分配的大小及實際已占用的磁盤空間大小
#如果文件中存放有客戶機快照,快照的信息也會被顯示出來
snapshot [-l | -a snapshot | -c snapshot | -d snapshot] filename
"-l" #選項表示查詢并列出鏡像文件中的所有快照,
"-a snapshot" #表示讓鏡像文件使用某個快照,
"-c snapshot" #表示創建一個快照,
"-d snapshot" #表示刪除—個快照
rebase [-f fmt] [-t cache] [-p] [-u] -b backing_file [-F backingfmt] filename #改變鏡像文件的后端基礎鏡像文件,只有qcow2和qed格式的鏡像支持rebase命令!!!!
"-b backing_file" 指定后端鏡像文件
"-F backingfmt" 原后端鏡像也被轉化為這里指定的后端鏡像格式
-u 使用非安全模式
-p 顯示命令的執行過程
這個命令可以工作于兩種模式之下:
一種是安全模式(Safe Mode),這是默認的模式,qemu-img會根據比較原來的后端鏡像與現在的后端鏡像的不同進行合理的處理;
一種是非安全模式(Unsafe Mode),是通過"-u"參數來指定的,這種模式主要用于將后端鏡像重命名或移動位置后對前端鏡像文件的修復處理,由用戶去保證后端鏡像的一致性
resize filename [+ | -]size #改變鏡像文件的大小,使其不同于創建之時的大小。"+"和"-"分別表示增加和減少鏡像文件的大小,size 也支待K 、M 、G 、T 等單位的使用
qcow2格式文件不支持縮小鏡像的操作!!!!
增加了鏡像文件大小后,也需啟動客戶機在其中應用"fdisk"、"parted"、“resize”等分區工具進行相應的操作才能真正讓客戶機使用到增加后的鏡像空間
示例:
如下命令行演示了兩個鏡像的大小改變:
將一個8GB 的qcow2 鏡像增加2GB 的空間,
qemu-img resize rhel6u3-a.img +2G
將一個8GB 大小的raw 鏡像減少1GB 空間。
qemu-img resize rhel6u3-b.img -1G
總結
以上是生活随笔為你收集整理的qemu-img————QEMU的磁盘管理工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eureka源码分析
- 下一篇: matlab程序中,如何解决矢量长度必须