為擁有多個(gè)虛擬機(jī)管理程序的虛擬機(jī)選擇合適的虛擬磁盤文件時(shí),兼容性不可不談。
虛擬機(jī)往往只能運(yùn)行一種類型的虛擬機(jī)管理程序,但有些時(shí)候,你需要?jiǎng)?chuàng)建一個(gè)可以運(yùn)行多個(gè)虛擬機(jī)管理程序的虛擬機(jī)。創(chuàng)建這樣的虛擬機(jī)關(guān)鍵是要找到完美的虛擬機(jī)文件格式,但這并不容易。本文提供了一些技巧,使你的虛擬機(jī)文件盡可能地兼容,在VMware工作站、Oracle VirtualBox和Linux KVM是可互換的。
我最近創(chuàng)建一個(gè)在不同的虛擬化平臺(tái)工作并支持VMware工作站、Oracle VirtualBox和KVM的Linux VM。創(chuàng)建這樣一個(gè)虛擬機(jī),包括虛擬磁盤文件兼容性和虛擬磁盤在虛擬機(jī)內(nèi)使用的虛擬磁盤的類型,你需要考慮的一些事情。
選擇SCSI
如果你要為KVM虛擬機(jī)管理程序創(chuàng)建一個(gè)Linux虛擬機(jī),默認(rèn)的磁盤類型設(shè)置為VirtIO設(shè)備。VirtIO可以使KVM快速直接訪問虛擬磁盤,塊被寫入磁盤之前,無需I/O仿真。VirtIO設(shè)備創(chuàng)建一個(gè)特定的設(shè)備類型,無法在其他Linux虛擬化平臺(tái)工作,使其無法閱讀軟件上的VirtIO磁盤如工作站或VirtualBox。小型計(jì)算機(jī)系統(tǒng)接口(SCSI)驅(qū)動(dòng)程序?yàn)橛脩籼峁┝艘粋€(gè)/dev/sda設(shè)備,可以兼容所有虛擬化平臺(tái)。
使用正確的磁盤格式
接下來需要選擇最佳的虛擬磁盤格式。有一系列的磁盤格式可供選擇,每一種都有獨(dú)特的功能,使得在虛擬化平臺(tái)內(nèi)更加便捷地使用特定虛擬機(jī)類型的盡可能容易。不幸的是,由于它們的特殊性,這些不同的磁盤類型兼容性并不是很好。
例如,VMware工作站創(chuàng)建一個(gè)默認(rèn)的VMDK文件。這個(gè)VMDK文件可以轉(zhuǎn)換為所需的KVM磁盤文件類型,但卻很難在VirtualBox中閱讀。最好的選擇是使用開放虛擬化格式(OVF)文件。OVF是一種開源的虛擬化標(biāo)準(zhǔn),使虛擬磁盤文件在不同的虛擬機(jī)管理程序中互換。創(chuàng)建OVF文件很容易,可以在VMware Workstation選擇輸出端作為OVF選項(xiàng)。請(qǐng)注意,此選項(xiàng)在其他VMware產(chǎn)品不可用,如VMware Fusion。使用OVF文件能夠使事情變得更簡(jiǎn)單,一些其他的工作需要它完全兼容所有的虛擬化平臺(tái)。
制作一個(gè)完全兼容的OVF文件
要在Oracle VirtualBox使用OVF文件,需要先用編輯器打開文件并加上說明。接下來,你需要為虛擬機(jī)文件生產(chǎn)一個(gè)Secure Hash Algorithm散列函數(shù),這一步可以通過運(yùn)行每個(gè)虛擬機(jī)文件的sha1sum .ovf命令完成。OVF文件沒有做出這些調(diào)整,當(dāng)你嘗試將文件導(dǎo)入VirtualBox時(shí)會(huì)收到一個(gè)錯(cuò)誤消息。
在KVM使用OVF文件則有所不同。在導(dǎo)入OVF之前,必須確保每個(gè)虛擬機(jī)文件已經(jīng)轉(zhuǎn)換為正確的格式。你可以通過使用qemu-img轉(zhuǎn)換命令讀取輸入文件,。QCOW2文件格式是KVM等開源虛擬化平臺(tái)選擇的文件格式,并可以很容易地集成在一個(gè)OpenStack云。使用下面的命令來轉(zhuǎn)換你的文件所需的QCOW2文件格式:
qemu-img convert -O qcow2 .vmdk .qcow2
即使將KVM文件類型轉(zhuǎn)換成qcow2,也不能保證它會(huì)工作。你會(huì)需要使用管理工具將qcow2輸入到KVM環(huán)境中添加管理工具,如Linux虛擬機(jī)管理器,使用New >Import Existing Disk Image選項(xiàng)。完成后要將虛擬機(jī)分配給需要使用的操作系統(tǒng)。這時(shí)候要小心,因?yàn)槿绻氵x擇Linux操作系統(tǒng)以外的其他類型的系統(tǒng),你可能結(jié)束了一個(gè)虛擬機(jī)的配置文件,如果你用通用的SCSI驅(qū)動(dòng)程序來訪問虛擬磁盤也是行不通的。
創(chuàng)建一個(gè)不同的虛擬化平臺(tái)都能兼容虛擬機(jī)文件并非易事,但如果你確信虛擬機(jī)沒有使用VirtIO磁盤類型并且你已經(jīng)將磁盤文件寫到OVF文件,倒是有可能。