VMware, Microsoft, Red Hat和Citrix都已經(jīng)在各自的虛擬化層中實(shí)現(xiàn)了對CPU和內(nèi)存的虛擬化。VMware則更進(jìn)一步,提出了軟件定義數(shù)據(jù)中心的理念,旨在將虛擬化技術(shù)延伸到網(wǎng)絡(luò)和存儲。虛擬化這些資源的意義何在呢?對用戶而言有什么益處?相對于虛擬化CPU和內(nèi)存而言,虛擬化網(wǎng)絡(luò)和存儲又有什么特殊的價值?這絕對值得我們認(rèn)真思考。
CPU虛擬化
我們回過頭看一下,如果把CPU虛擬化定義為抽象物理CPU以方便工作負(fù)載使用計算資源,則VMware并不是第一個實(shí)現(xiàn)CPU虛擬化的廠商,現(xiàn)代操作系統(tǒng)早就做到了。負(fù)載包括線程和進(jìn)程,操作系統(tǒng)負(fù)責(zé)將這些線程和進(jìn)程調(diào)度到CPU中運(yùn)行。
VMware通過CPU虛擬化技術(shù)解決難題的是如何在一個操作系統(tǒng)實(shí)例中運(yùn)行多個應(yīng)用。實(shí)現(xiàn)這一任務(wù)的困難之處在于每一個應(yīng)用都與操作系統(tǒng)之間有著密切的依賴關(guān)系。一個應(yīng)用通常只能運(yùn)行于特定版本的操作系統(tǒng)和中間件之上。這就是Windows用戶常常提到的“DLL地獄”。因此,大多數(shù)用戶只能在一個Windows操作系統(tǒng)實(shí)例上運(yùn)行一種應(yīng)用,操作系統(tǒng)實(shí)例獨(dú)占一臺物理服務(wù)器。這種狀況會導(dǎo)致物理服務(wù)器的CPU資源被極大地浪費(fèi)。能夠使多個操作系統(tǒng)實(shí)例同時運(yùn)行在一臺物理服務(wù)器之上,是VMware所提供的CPU虛擬化技術(shù)的價值所在。通過整合服務(wù)器充分利用CPU資源,可以給用戶帶來極大的收益。
服務(wù)器整合的益處能夠得以實(shí)現(xiàn)的前提是工作負(fù)載并不需要知曉它們正在共享CPU,虛擬化層必須具備這種能力。這是CPU虛擬化與其它虛擬化形式所不同的地方。
內(nèi)存虛擬化
VMware的CPU虛擬化通過時間片的方式實(shí)現(xiàn)CPU的共享。而通過虛擬化技術(shù)來共享內(nèi)存就沒這么簡單了。假設(shè)一個應(yīng)用程序需要2GB物理內(nèi)存,即使分配2GB虛擬內(nèi)存給它,后面對應(yīng)的物理內(nèi)存也必須存在。否則應(yīng)用程序的性能將變得很差(使用磁盤交換內(nèi)存頁)。VMware通過透明頁共享技術(shù)可以實(shí)現(xiàn)一定程度上的內(nèi)存共享。虛擬化層能夠識別出各操作系統(tǒng)只讀內(nèi)存區(qū)域(代碼頁)中的相同部分,這些頁面在內(nèi)存中只保留一個副本。Windows操作系統(tǒng)自身所使用的內(nèi)存大多為代碼頁,因此在運(yùn)行有N個Windows實(shí)例的物理服務(wù)器上vSphere只保留一個Windows操作系統(tǒng)副本。這就是為什么在VDI的環(huán)境中你只需要為VDI映像分配比物理桌面少得多的內(nèi)存。
需要強(qiáng)調(diào)的是,CPU時間分片是虛擬化層能夠?qū)崿F(xiàn)的,內(nèi)存卻不能按時間分片。多個應(yīng)用可以共用一個CPU,但多個應(yīng)用卻不能同時使用一段內(nèi)存區(qū)域。CPU的速度在持續(xù)增長,虛擬機(jī)的密度主要受限于服務(wù)器上物理內(nèi)存的數(shù)量。
網(wǎng)絡(luò)虛擬化
聊完了虛擬化技術(shù)的歷史,我們再看看未來。我們現(xiàn)在面對的主要問題之一是,網(wǎng)絡(luò)虛擬化如何工作,能給我們帶來什么樣的收益?這個問題的答案差不多是這樣:網(wǎng)絡(luò)虛擬化將虛擬網(wǎng)絡(luò)的配置從硬件交換機(jī)移到了虛擬化平臺。使虛擬化管理員可以更容易地創(chuàng)建和變更虛擬網(wǎng)絡(luò)。網(wǎng)絡(luò)配置也可以很容易地隨著虛擬機(jī)移動。云管理軟件可以基于服務(wù)目錄自動創(chuàng)建工作負(fù)載所需要的虛擬網(wǎng)絡(luò)。這與虛擬化層可以很容易地配置虛擬CPU和虛擬內(nèi)存所帶來的好處是相似的。但是在節(jié)省成本,提高投資回報方面,它并不像服務(wù)器整合所帶來的收益那么明顯。
但是網(wǎng)絡(luò)虛擬化也有CPU虛擬化和內(nèi)存虛擬化所不具備的獨(dú)到之處。它將一部分通過網(wǎng)絡(luò)硬件實(shí)現(xiàn)的工作轉(zhuǎn)移給了虛擬網(wǎng)絡(luò)軟件。VMware很早就已經(jīng)在軟件中實(shí)現(xiàn)了虛擬交換機(jī)。微軟的Hyper-V中也有類似的東西。運(yùn)行在同一主機(jī)上的兩臺虛擬機(jī)要相互通訊,網(wǎng)絡(luò)流量不需要通過物理網(wǎng)卡傳送到物理交換機(jī)。如果你把服務(wù)于某個應(yīng)用的WEB服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器放在同一臺主機(jī)上。只有數(shù)據(jù)庫服務(wù)器的流量會流經(jīng)網(wǎng)卡(使用NAS)或HBA卡(使用光纖存儲),因此網(wǎng)絡(luò)虛擬化可以減少物理服務(wù)器所需網(wǎng)口的數(shù)量。這是不是可以稱之為“網(wǎng)絡(luò)整合”呢?減少三分之一到一半的網(wǎng)線(以及TOR交換機(jī)的端口)也算是一大成就了。
把交換設(shè)備的控制權(quán)和交換設(shè)備本身移到軟件中還有更深遠(yuǎn)的意義和價值。用戶將不再需要那些昂貴且智能的交換機(jī)。所有的智能都移到了軟件之中,誰還需要智能交換機(jī)呢?你只需要一臺能夠轉(zhuǎn)發(fā)數(shù)據(jù)包的傻瓜交換機(jī)就可以了。網(wǎng)絡(luò)虛擬化技術(shù)將改變交換機(jī)產(chǎn)業(yè)。這兩點(diǎn)可以解釋VMware收購Nicira時Cisco所做出的反映。
存儲虛擬化
與CPU的虛擬化不同,存儲虛擬化并不是VMware或Microsoft的主要投資目標(biāo)。早就有多種抽象物理存儲的方法在應(yīng)用了,LUN就是一種邏輯抽象,存儲管理員負(fù)責(zé)將它映射到物理存儲。一些創(chuàng)新型的企業(yè)如Tintri和Virsto也是通過提供獨(dú)特的存儲抽象技術(shù)來創(chuàng)造價值的。
要理解VMware的軟件定義數(shù)據(jù)中心所提供的價值,我們得首先介紹一下將要提供的存儲虛擬化技術(shù)是什么樣子的。VMware現(xiàn)在有一款名為vSphere Storage Appliance的產(chǎn)品,可以將最多三臺物理服務(wù)器的本地硬盤存儲整合成池,這個虛擬存儲池可以通過一個訪問點(diǎn)進(jìn)行訪問,提供冗余能力和高可用服務(wù)。如果VMware將vSphere Storage Appliance擴(kuò)展為32節(jié)點(diǎn)的服務(wù)器集群會如何?為32節(jié)點(diǎn)集群提供存儲虛擬化服務(wù),如果服務(wù)器內(nèi)部有足夠多的磁盤來容納數(shù)據(jù),而且虛擬存儲陣列能夠滿足應(yīng)用對存儲性能的要求,你可能就不需要另外購買NAS或者光纖存儲了。如果VMware實(shí)現(xiàn)了上述構(gòu)想,存儲虛擬化在CPU、內(nèi)存和網(wǎng)絡(luò)虛擬化的基礎(chǔ)上又會增加什么好處呢?答案或許是這樣:
與內(nèi)存類似,這種方式的虛擬存儲并不能實(shí)現(xiàn)多個負(fù)載共享同一塊存儲區(qū)域。如果一個負(fù)載需要2TB網(wǎng)絡(luò)存儲,也就意味著需要占用2TB的本地存儲池。所以不會像CPU虛擬化和服務(wù)器虛擬化一樣有明顯的整合收益。
但管理收益是明顯的。管理這些本地存儲設(shè)備池要比管理EMC和NetApp的高端陣列要簡單多了。關(guān)鍵在于這個本地存儲池能否提供與高端陣列相仿的性能。
如果這些本地存儲池能夠取代網(wǎng)絡(luò)和光纖存儲陣列,則會帶來與網(wǎng)絡(luò)虛擬化類似的收益。服務(wù)器本地的直連存儲要比網(wǎng)絡(luò)上的共享存儲便宜得多。如果這一技術(shù)能在VMware客戶中得以大量應(yīng)用,在存儲方面的成本節(jié)省將是非常顯著的。