ESXi image(raw) 映像檔轉換成VMDK

ESXi image(raw) 映像檔轉換成VMDK

虛擬化的過程中可能會遇到手上取得執行像檔並非ESXi使用的檔案格式VMDK(Virtual Machine Disk),像丹尼要在ESXi上安裝DD-WRT時,遇到官網提供的只有image映像檔,此篇要使用qemu提供的工具qemu-img進行轉換。

安裝qemu

qemu能執行於許多平台,像Windows、MacOSX、Linux,官網都有提供下載方式及安裝,以Linux的Arch分支及Windows安裝為例子。

Windows

Windows的安裝程式官網建議從Stefan Weil提供的安裝包進行下載及安裝,它分為32bit64bit, 查看你的Windows執行版本選擇下載,丹尼使用64bit為例子下載並安裝。

依照你目前的時間選擇最新的年份,進入此年份目錄後並找尋離你時間最近版本進行下載

下載完成後再執行安裝程式安裝qemu。

Next進行下一步

I Agree我同意版權宣告

Next使用已勾選的預設值,

安裝路徑選擇,不選擇按下Install進行安裝,如果有要安裝至其他路徑選擇Browser開啟目錄的選擇,

安裝完成,按下Finish離開安裝畫面。

Bash on Windows

Windows 10之後還有選一種選擇,開啟Bash應用,依照Ubuntu安裝套件的方式安裝qemu

apt install qemu

安裝過程參考

~# apt install qemu
正在讀取套件清單... 完成
正在重建相依關係
正在讀取狀態資料... 完成
下列的額外套件將被安裝:
  binfmt-support cpu-checker ipxe-qemu libaio1 libasound2 libasound2-data libasyncns0 libbluetooth3
  libboost-iostreams1.58.0 libboost-random1.58.0 libboost-system1.58.0 libboost-thread1.58.0 libbrlapi0.6 libcaca0
  libcacard0 libfdt1 libflac8 libiscsi2 libjpeg-turbo8 libjpeg8 libnspr4 libnss3 libnss3-nssdb libogg0 libopus0
  libpixman-1-0 libpulse0 librados2 librbd1 libsdl1.2debian libsndfile1 libspice-server1 libusbredirparser1
  libvorbis0a libvorbisenc2 libxen-4.6 libxenstore3.0 libyajl2 msr-tools qemu-block-extra qemu-slof qemu-system
  qemu-system-arm qemu-system-common qemu-system-mips qemu-system-misc qemu-system-ppc qemu-system-sparc
  qemu-system-x86 qemu-user qemu-user-binfmt qemu-utils seabios sharutils
建議套件:
  libasound2-plugins alsa-utils opus-tools pulseaudio qemu-user-static samba vde2 openbios-ppc openhackware sgabios
  ovmf debootstrap bsd-mailx | mailx
下列【新】套件將會被安裝:
  binfmt-support cpu-checker ipxe-qemu libaio1 libasound2 libasound2-data libasyncns0 libbluetooth3
  libboost-iostreams1.58.0 libboost-random1.58.0 libboost-system1.58.0 libboost-thread1.58.0 libbrlapi0.6 libcaca0
  libcacard0 libfdt1 libflac8 libiscsi2 libjpeg-turbo8 libjpeg8 libnspr4 libnss3 libnss3-nssdb libogg0 libopus0
  libpixman-1-0 libpulse0 librados2 librbd1 libsdl1.2debian libsndfile1 libspice-server1 libusbredirparser1
  libvorbis0a libvorbisenc2 libxen-4.6 libxenstore3.0 libyajl2 msr-tools qemu qemu-block-extra qemu-slof qemu-system
  qemu-system-arm qemu-system-common qemu-system-mips qemu-system-misc qemu-system-ppc qemu-system-sparc
  qemu-system-x86 qemu-user qemu-user-binfmt qemu-utils seabios sharutils
升級 0 個,新安裝 55 個,移除 0 個,有 108 個未被升級。
需要下載 43.3 MB 的套件檔。
此操作完成之後,會多佔用 261 MB 的磁碟空間。
是否繼續進行 [Y/n]? [Y/n] y
下載:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 libasyncns0 amd64 0.8-5build1 [12.3 kB]
下載:2 http://archive.ubuntu.com/ubuntu xenial/main amd64 libiscsi2 amd64 1.12.0-2 [51.5 kB]
下載:3 http://archive.ubuntu.com/ubuntu xenial/main amd64 libjpeg-turbo8 amd64 1.4.2-0ubuntu3 [111 kB]
下載:4 http://archive.ubuntu.com/ubuntu xenial/main amd64 libogg0 amd64 1.3.2-1 [17.2 kB]
下載:5 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libboost-iostreams1.58.0 amd64 1.58.0+dfsg-5ubuntu3.1 [29.0 kB]
下載:6 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libboost-system1.58.0 amd64 1.58.0+dfsg-5ubuntu3.1 [9,146 B]
下載:7 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libboost-random1.58.0 amd64 1.58.0+dfsg-5ubuntu3.1 [11.7 kB]
下載:8 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libboost-thread1.58.0 amd64 1.58.0+dfsg-5ubuntu3.1 [47.0 kB]
下載:9 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libnspr4 amd64 2:4.13.1-0ubuntu0.16.04.1 [112 kB]
下載:10 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libnss3-nssdb all 2:3.28.4-0ubuntu0.16.04.2 [10.6 kB]
下載:11 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libnss3 amd64 2:3.28.4-0ubuntu0.16.04.2 [1,147 kB]
下載:12 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 librados2 amd64 10.2.7-0ubuntu0.16.04.1 [1,642 kB]
下載:13 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 librbd1 amd64 10.2.7-0ubuntu0.16.04.1 [2,180 kB]
下載:14 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 qemu-block-extra amd64 1:2.5+dfsg-5ubuntu10.14 [33.6 kB]
下載:15 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 qemu-system-common amd64 1:2.5+dfsg-5ubuntu10.14 [281 kB]
下載:16 http://archive.ubuntu.com/ubuntu xenial/main amd64 libyajl2 amd64 2.1.0-2 [19.6 kB]
下載:17 http://archive.ubuntu.com/ubuntu xenial/main amd64 binfmt-support amd64 2.1.6-1 [50.7 kB]
下載:18 http://archive.ubuntu.com/ubuntu xenial/main amd64 msr-tools amd64 1.3-2 [10.6 kB]
下載:19 http://archive.ubuntu.com/ubuntu xenial/main amd64 cpu-checker amd64 0.7-0ubuntu7 [6,862 B]
下載:20 http://archive.ubuntu.com/ubuntu xenial/main amd64 ipxe-qemu all 1.0.0+git-20150424.a25a16d-1ubuntu1 [718 kB]
下載:21 http://archive.ubuntu.com/ubuntu xenial/main amd64 libaio1 amd64 0.3.110-2 [6,356 B]
下載:22 http://archive.ubuntu.com/ubuntu xenial/main amd64 libasound2-data all 1.1.0-0ubuntu1 [29.4 kB]
下載:23 http://archive.ubuntu.com/ubuntu xenial/main amd64 libasound2 amd64 1.1.0-0ubuntu1 [350 kB]
下載:24 http://archive.ubuntu.com/ubuntu xenial/main amd64 libbluetooth3 amd64 5.37-0ubuntu5 [61.3 kB]
下載:25 http://archive.ubuntu.com/ubuntu xenial/main amd64 libcaca0 amd64 0.99.beta19-2build2~gcc5.2 [202 kB]
下載:26 http://archive.ubuntu.com/ubuntu xenial/main amd64 libcacard0 amd64 1:2.5.0-2 [19.7 kB]
下載:27 http://archive.ubuntu.com/ubuntu xenial/main amd64 libflac8 amd64 1.3.1-4 [210 kB]
下載:28 http://archive.ubuntu.com/ubuntu xenial/main amd64 libjpeg8 amd64 8c-2ubuntu8 [2,194 B]
下載:29 http://archive.ubuntu.com/ubuntu xenial/main amd64 libopus0 amd64 1.1.2-1ubuntu1 [159 kB]
下載:30 http://archive.ubuntu.com/ubuntu xenial/main amd64 libpixman-1-0 amd64 0.33.6-1 [231 kB]
下載:31 http://archive.ubuntu.com/ubuntu xenial/main amd64 libvorbis0a amd64 1.3.5-3 [86.8 kB]
下載:32 http://archive.ubuntu.com/ubuntu xenial/main amd64 libvorbisenc2 amd64 1.3.5-3 [70.7 kB]
下載:33 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libsndfile1 amd64 1.0.25-10ubuntu0.16.04.1 [138 kB]
下載:34 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libpulse0 amd64 1:8.0-0ubuntu3.3 [249 kB]
下載:35 http://archive.ubuntu.com/ubuntu xenial/main amd64 libsdl1.2debian amd64 1.2.15+dfsg1-3 [168 kB]
下載:36 http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 libspice-server1 amd64 0.12.6-4ubuntu0.3 [338 kB]
下載:37 http://archive.ubuntu.com/ubuntu xenial/main amd64 libusbredirparser1 amd64 0.7.1-1 [13.6 kB]
~# 

這方式除了免自行下載且方便快速的可以安裝完qemu,此篇使用qemu-img工具,並未驗證實際qemu在Bash on Winodws上的可用性。

Arch

Arch已經提供好安裝套件,執行安裝指令進行安裝

pacman -S extra/qemu

安裝完成後執行qemu-img應該能看到執行結果

$ qemu-img
qemu-img: Not enough arguments
Try 'qemu-img --help' for more information

轉換映像檔

qemu-img提供虛擬機器映像檔互轉的功能,功能相當完整,轉換的命令如下

qemu-img -f 來源映像檔案格式 -O 輸出映像檔案格式 來源映像檔名稱 輸出映像檔名稱

檔案格式支援

映像檔格式 qemu-img 格式名稱
VMDK (VMware) vmdk
VHD (Hyper-V) vhd
VHDX (Hyper-V) vhdx
VDI (VirtualBox) vdi
raw raw
image raw
QED (KVM) qed
QCOW (KVM, Xen) qcow
QCOW2 (KVM, Xen) qcow2

範例

丹尼下載一份DD-WRT for X86的映像檔檔名為dd-wrt_x64_full_vga.image要轉換成ESXi能讀取的vmdk,轉換後檔名為dd-wrt_x64_full_vga.vmdk

$ qemu-img -f raw -O vmdk dd-wrt_x64_full_vga.image dd-wrt_x64_full_vga.vmdk

轉換過程中不會有進度條或是任何的訊息,轉換完成會跳回命令提示字元,如果你的檔案非常的大,請耐心等候它完成。如果想要有進度條必需要再加上-p變成有進度條顯示

$ qemu-img -f raw -O vmdk -p dd-wrt_x64_full_vga.image dd-wrt_x64_full_vga.vmdk

轉換過程的進度指示會顯示在下方

$ qemu-img -f raw -O vmdk -p dd-wrt_x64_full_vga.image dd-wrt_x64_full_vga.vmdk
    (100.00/100%)
$

參考資料

更新日誌

日期 內容
2017/08/08 初版

關鍵字

qemu 轉換 convert

qemu-image convert 轉換

image to vmdk

qcow to vmdk

vmdk to qcow

ESXi 映像檔轉換 vmdk