應用場景
支持導入vhd、vmdk、qcow2、raw、vhdx、qcow、vdi、qed、zvhd或zvhd2格式鏡像文件。其他鏡像文件,需要轉換格式后再導入。本節操作指導您使用開源qemu-img工具轉換鏡像格式。
方案構架
本節提供本地為Windows操作系統和Linux操作系統的轉換鏡像格式的操作方法。
資源和成本規劃
| 資源 | 資源說明 | 成本說明 |
|---|---|---|
| qemu-img | 是一款開源的轉換鏡像格式的工具。獲取方式: | 免費 |
約束與限制
- qemu-img鏡像格式轉換工具支持vhd、vmdk、qcow2、raw、vhdx、qcow、vdi或qed社區格式的鏡像的相互轉換。
- vhd格式鏡像在執行命令轉換格式時請使用vpc代替,否則可能造成qemu-img工具無法識別鏡像格式。
例如,將CentOS 6.9鏡像的vhd格式轉換為qcow2格式,請執行如下命令:
qemu-img convert -p -f vpc -O qcow2 centos6.9.vhd centos6.9.qcow2
本地為Windows操作系統
1、安裝qemu-img。
a.下載qemu-img安裝包至本地://qemu.weilnetz.de/w64/。
b.雙擊setup文件安裝qemu-img,以下操作以安裝路徑為“D:\Program Files\qemu”為例。
2、配置環境變量。
a.選擇“開始 > 計算機”,右鍵單擊“屬性”。
b.單擊“高級系統設置”。
c.在“系統屬性”對話框里,單擊“高級 > 環境變量"。
d.在環境變量對話框里,在系統變量部分找到Path,并單擊“編輯”。在“變量值”里,添加“D:\Program Files\qemu”,不同的變量值之間以“;”分隔。
說明:
如果沒有Path變量請新建,并補充Path的變量值為“D:\Program Files\qemu”。
e.單擊“確定”,保存修改。
3、驗證安裝成功。
單擊“開始 > 運行”,輸入“cmd”后按回車鍵,在“cmd”窗口輸入qemu-img --help,如回顯信息中出現qemu-img工具的版本信息,即表示安裝成功。
4、轉換鏡像格式。
a.在“cmd”窗口輸入如下命令切換文件目錄,以安裝目錄為“D:\Program Files\qemu”為例。
d:
cd D:\Program Files\qemu
b.執行如下命令轉換鏡像文件格式,以轉換vmdk格式為qcow2格式的鏡像為例。
qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2
上述命令中各參數對應的說明如下:
- -p:表示鏡像轉換的進度。
- -f后面為源鏡像格式。
- -O(必須是大寫)后面的參數由如下3個部分組成:轉換出來的鏡像格式 + 源鏡像文件名稱 + 目標文件名稱。
轉換完成后,目標文件會出現在源鏡像文件所在的目錄下。
回顯信息如下所示:
# qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2
(100.00/100%)
c.執行如下命令,查詢轉換后的qcow2格式鏡像文件的詳細信息。
qemu-img info centos6.9.qcow2
回顯信息如下所示:
# qemu-img info centos6.9.qcow2
image: centos6.9.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 200K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
本地為Linux系統
1、安裝qemu-img。
- Ubuntu、Debian系列操作系統,請執行如下命令:
apt install qemu-img
- CentOS、Red Hat、Oracle系列操作系統,請執行如下命令:
yum install qemu-img
SUSE、openSUSE系列操作系統,請執行如下命令:
zypper install qemu-img
2、執行如下命令,驗證安裝成功。
qemu-img -v
如回顯信息中出現qemu-img工具的版本信息和幫助手冊,即表示安裝成功。以CentOS 7為例,回顯信息如下所示:
[root@CentOS7 ~]# qemu-img -v
qemu-img version 1.5.3, Copyright (c) 2004-2008 Fabrice Bellard
usage: qemu-img command [command options]
QEMU disk image utility
Command syntax:
check [-q] [-f fmt] [--output=ofmt] [-r [leaks | all]] [-T src_cache] filename
create [-q] [-f fmt] [-o options] filename [size]
commit [-q] [-f fmt] [-t cache] filename
compare [-f fmt] [-F fmt] [-T src_cach]
3、轉換鏡像格式,以CentOS 7操作系統中轉換vmdk格式為qcow2格式的鏡像為例。
a.執行如下命令轉換鏡像文件格式。
qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2
上述命令中各參數對應的說明如下:
-
-p標識轉換的進度條。
-
-f后面為源鏡像格式。
-
-O(必須是大寫)后面的參數為轉換出來的鏡像格式 + 源鏡像文件名稱 + 目標文件名稱。
轉換完成后,目標文件會出現在源鏡像文件所在的目錄下。
回顯信息如下所示:
[root@CentOS7 home]# qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2
(100.00/100%)
b.執行如下命令,查詢轉換后的qcow2格式鏡像文件的詳細信息。
qemu-img info centos6.9.qcow2
回顯信息如下所示:
[root@CentOS7 home]# qemu-img info centos6.9.qcow2
image: centos6.9.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 200K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
典型應用案例
- 應用場景
用戶從VMware平臺導出一個pre-allocated格式的鏡像文件(pre-allocated格式是VMDK monolithic Flat子格式類型),pre-allocated格式鏡像依賴2個文件“xxxx.vmdk”和“xxxx-flat.vmdk”(“xxxx.vmdk”是一個配置文件,“xxxx-flat.vmdk”是實際數據文件),這兩種格式的鏡像文件不能直接導入到云平臺,需提前轉換成通用的vmdk或qcow2格式才能導入。
以下以鏡像文件格式為centos6.9-64bit-flat.vmdk和centos6.9-64bit.vmdk為例,通過qemu-img工具轉換鏡像格式。
- 操作步驟
1、執行如下命令,查詢鏡像文件的詳細信息。
ls -lh centos6.9-64bit*
qemu-img info centos6.9-64bit.vmdk
qemu-img info centos6.9-64bit-flat.vmdk
回顯信息如下所示:
[root@CentOS7 tmp]# ls -lh centos6.9-64bit*
-rw-r--r--. 1 root root 10G Jun 13 05:30 centos6.9-64bit-flat.vmdk
-rw-r--r--. 1 root root 327 Jun 13 05:30 centos6.9-64bit.vmdk
[root@CentOS7 tmp]# qemu-img info centos6.9-64bit.vmdk
image: centos6.9-64bit.vmdk
file format: vmdk
virtual size: 10G (10737418240 bytes)
disk size: 4.0K
Format specific information:
cid: 3302005459
parent cid: 4294967295
create type: monolithicFlat
extents:
[0]:
virtual size: 10737418240
filename: centos6.9-64bit-flat.vmdk
format: FLAT
[root@CentOS7 tmp]# qemu-img info centos6.9-64bit-flat.vmdk
image: centos6.9-64bit-flat.vmdk
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 0
說明:
從回顯信息中看出,centos6.9-64bit.vmdk文件的格式為vmdk,centos6.9-64bit-flat.vmdk文件的格式為raw,在執行鏡像格式轉換命令時,源鏡像文件必須使用centos6.9-64bit.vmdk(詳見步驟3)。
2、執行如下命令,查看pre-allocated格式的鏡像文件的相關配置信息。
cat centos6.9-64bit.vmdk
回顯信息如下所示:
[root@CentOS7 tmp]# cat centos6.9-64bit.vmdk
# Disk DescriptorFile
version=1
CID=c4d09ad3
parentCID=ffffffff
createType="monolithicFlat"
# Extent description
RW 20971520 FLAT "centos6.9-64bit-flat.vmdk" 0
# The Disk Data Base
#DDB
ddb.virtualHWVersion = "4"
ddb.geometry.cylinders = "20805"
ddb.geometry.heads = "16"
ddb.geometry.sectors = "63"
ddb.adapterType = "ide"
3、將centos6.9-64bit-flat.vmdk和centos6.9-64bit.vmdk放在同一個目錄下,執行如下命令,通過qemu-img工具轉換鏡像格式為qcow2。
[root@CentOS7 tmp]# qemu-img convert -p -f vmdk -O qcow2 centos6.9-64bit.vmdk centos6.9-64bit.qcow2
(100.00/100%)
4、執行如下命令,查詢轉換后的qcow2格式鏡像文件的詳細信息。
qemu-img info centos6.9-64bit.qcow2
回顯信息如下所示:
[root@CentOS7 tmp]# qemu-img info centos6.9-64bit.qcow2
image: centos6.9-64bit.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 200K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
后續處理
鏡像文件格式完成轉換后,您可以通過相關工具將其上傳至OBS桶,制作私有鏡像時使用。