五種不適合虛擬化的負(fù)載類型
盡管虛擬化技術(shù)提供了諸多優(yōu)勢,但是其并非適合于所有負(fù)載。
在過去十年,很多文章都曾經(jīng)宣稱企業(yè)現(xiàn)在應(yīng)該實(shí)現(xiàn)完全虛擬化了。這些文章的理論基礎(chǔ)在于虛擬化已經(jīng)是一種十分成熟的技術(shù),并且現(xiàn)在能夠?qū)缀跛胸?fù)載完成虛擬化,甚至包括那些大型的資源密集型應(yīng)用。還有一些文章爭論稱虛擬化只不過是遷移到公有云環(huán)境之前的一種過渡方式。不論這些文章表達(dá)怎樣的觀點(diǎn),但是有些負(fù)載應(yīng)該繼續(xù)運(yùn)行在物理硬件當(dāng)中。在這篇文章當(dāng)中,我將會列舉一部分這樣的負(fù)載類型,并且討論對這些負(fù)載進(jìn)行虛擬化是否有意義。
1.負(fù)載太大導(dǎo)致虛擬化失敗
正如上面所提及的那樣,服務(wù)器虛擬化技術(shù)已經(jīng)足夠成熟,甚至能夠?qū)Ψ浅4笠?guī)模的資源密集型負(fù)載順利完成虛擬化。然而對這種類型負(fù)載進(jìn)行虛擬化的問題在于,如何實(shí)現(xiàn)容錯機(jī)制。
設(shè)想這樣一種情況,你所在的企業(yè)擁有一種非常關(guān)鍵、并且異常消耗資源的數(shù)據(jù)庫應(yīng)用,現(xiàn)在其運(yùn)行在物理集群當(dāng)中,能夠防止服務(wù)器級別的故障。
不論是否進(jìn)行虛擬化,我們都應(yīng)該使用故障轉(zhuǎn)移集群來保護(hù)負(fù)載。可以在虛擬服務(wù)器環(huán)境當(dāng)中創(chuàng)建一個虛擬機(jī)集群,或者使用主機(jī)級別的集群功能,如果發(fā)生主機(jī)故障可以將虛擬機(jī)(自動實(shí)時遷移到另外一臺虛擬化主機(jī)當(dāng)中。然而這種方式存在一種問題,就是資源消耗。
服務(wù)器虛擬化的前提就是所有虛擬機(jī)共享一個物理硬件資源池。異常消耗資源的負(fù)載可能會占用大量服務(wù)器資源,因此如果目標(biāo)主機(jī)上已經(jīng)運(yùn)行了任何其他負(fù)載,那么資源密集型應(yīng)用非常有可能無法完成故障轉(zhuǎn)移過程。因此對于現(xiàn)在的情況來說,將這種負(fù)載運(yùn)行在物理硬件當(dāng)中更加實(shí)際,除非有非常緊迫的業(yè)務(wù)需求要對這個負(fù)載進(jìn)行虛擬化(比如為最終遷移到云中做好準(zhǔn)備)。
2.資源密集型負(fù)載
在之前的部分我已經(jīng)從故障轉(zhuǎn)移集群的角度對資源密集型負(fù)載進(jìn)行了討論。然而,還有一些邏輯問題可能會妨礙你對一些大型負(fù)載進(jìn)行虛擬化。像VMware ESXi和微軟Hyper-V這樣的hypervisor會限制虛擬機(jī)的規(guī)模。比如,它們會限制分配給虛擬機(jī)的vCPU和內(nèi)存數(shù)量。當(dāng)然,只有極少數(shù)的、非常大型的虛擬機(jī)才會超過這種限制,但是這種限制是真實(shí)存在的,如果你正在考慮將要進(jìn)行虛擬化的負(fù)載足夠大,那么有可能正好遇到這種限制。
3.硬件依賴關(guān)系
在決定是否進(jìn)行虛擬化之前,你還應(yīng)該考慮負(fù)載對于物理硬件的依賴性。硬件依賴性存在多種形式。比如,我最近看到一個應(yīng)用程序在底層明確規(guī)定只能使用一種非常特定的主機(jī)總線接口卡。這種依賴關(guān)系將會妨礙特定應(yīng)用程序在虛擬服務(wù)上正常工作。
你可能會遇到的另外一種硬件依賴關(guān)系和版權(quán)保護(hù)相關(guān)。有些應(yīng)用程序會檢查機(jī)器是否插入了USB閃存盤或者校驗(yàn)處理器的序列號,以防止應(yīng)用程序被非法復(fù)制。對于使用物理硬件作為復(fù)制保護(hù)機(jī)制的應(yīng)用程序來說,通常不能對其進(jìn)行虛擬化。
4.罕見或者不支持的操作系統(tǒng)
你可能還會發(fā)現(xiàn)不可能虛擬化那些運(yùn)行有非常罕見的、超過運(yùn)行生命周期或者不被支持操作系統(tǒng)的服務(wù)器。不僅hypervisor廠商不能支持這些操作系統(tǒng),并且像MVware Tools和Hyper-V Integration Services這樣的組件也只能支持特定的操作系統(tǒng)類型。
對于虛擬化那些運(yùn)行過期操作系統(tǒng)的服務(wù)器來說,實(shí)際上只有兩種觀點(diǎn)。一種想法是建議永遠(yuǎn)不要在hypervisor上運(yùn)行不被支持的操作系統(tǒng);而另外一種觀點(diǎn)會讓你繼續(xù)進(jìn)行操作,將服務(wù)器進(jìn)行虛擬化能夠降低對于過期物理硬件的依賴性。
我曾經(jīng)虛擬化一臺運(yùn)行Windows NT的服務(wù)器,即便Windows NT沒有位于hypervisor廠商的官方支持列表當(dāng)中。盡管虛擬化過程比我想象的還要復(fù)雜,但是最終還是成功完成了,企業(yè)終于能夠?qū)⑦@臺配置古老硬件的服務(wù)器退役了。
5.物理存儲方面的依賴關(guān)系
你可能希望避免虛擬化某種負(fù)載的***一個原因是一些負(fù)載對于物理存儲具有依賴關(guān)系。公平來說,Hyper-V 和 VMware都擁有自己的方式能夠?qū)⑻摂M機(jī)連接到物理磁盤上。比如在Hyper-V當(dāng)中,物理存儲就被作為一種iSCSI直通磁盤。
盡管hypervisor廠商完全支持直通磁盤,但是使用這種方式有可能使得備份流程更加復(fù)雜。如果從主機(jī)層級創(chuàng)建備份,那么我所見到的大多數(shù)Hyper-V備份應(yīng)用程序都不支持對直通存儲進(jìn)行備份。
在我看來,現(xiàn)在不應(yīng)該對所有負(fù)載都進(jìn)行虛擬化。但是要記住,虛擬化技術(shù)也在不斷發(fā)展,現(xiàn)在不適合虛擬化的服務(wù)器并不意味著在一年或者兩年之后,依然不能對其進(jìn)行虛擬化。