網(wǎng)絡(luò)與存儲(chǔ)虛擬化的意義何在
VMware, Microsoft, Red Hat和Citrix都已經(jīng)在各自的虛擬化層中實(shí)現(xiàn)了對CPU和內(nèi)存的虛擬化。VMware則更進(jìn)一步,提出了軟件定義數(shù)據(jù)中心的理念,旨在將虛擬化技術(shù)延伸到網(wǎng)絡(luò)和存儲(chǔ)。虛擬化這些資源的意義何在呢?對用戶而言有什么益處?相對于虛擬化CPU和內(nèi)存而言,虛擬化網(wǎng)絡(luò)和存儲(chǔ)又有什么特殊的價(jià)值?這絕對值得我們認(rèn)真思考。
CPU虛擬化
我們回過頭看一下,如果把CPU虛擬化定義為抽象物理CPU以方便工作負(fù)載使用計(jì)算資源,則VMware并不是***個(gè)實(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ù)解決難題的是如何在一個(gè)操作系統(tǒng)實(shí)例中運(yùn)行多個(gè)應(yīng)用。實(shí)現(xiàn)這一任務(wù)的困難之處在于每一個(gè)應(yīng)用都與操作系統(tǒng)之間有著密切的依賴關(guān)系。一個(gè)應(yīng)用通常只能運(yùn)行于特定版本的操作系統(tǒng)和中間件之上。這就是Windows用戶常常提到的“DLL地獄”。因此,大多數(shù)用戶只能在一個(gè)Windows操作系統(tǒng)實(shí)例上運(yùn)行一種應(yīng)用,操作系統(tǒng)實(shí)例獨(dú)占一臺(tái)物理服務(wù)器。這種狀況會(huì)導(dǎo)致物理服務(wù)器的CPU資源被極大地浪費(fèi)。能夠使多個(gè)操作系統(tǒng)實(shí)例同時(shí)運(yùn)行在一臺(tái)物理服務(wù)器之上,是VMware所提供的CPU虛擬化技術(shù)的價(jià)值所在。通過整合服務(wù)器充分利用CPU資源,可以給用戶帶來極大的收益。
服務(wù)器整合的益處能夠得以實(shí)現(xiàn)的前提是工作負(fù)載并不需要知曉它們正在共享CPU,虛擬化層必須具備這種能力。這是CPU虛擬化與其它虛擬化形式所不同的地方。
內(nèi)存虛擬化
VMware的CPU虛擬化通過時(shí)間片的方式實(shí)現(xiàn)CPU的共享。而通過虛擬化技術(shù)來共享內(nèi)存就沒這么簡單了。假設(shè)一個(gè)應(yīng)用程序需要2GB物理內(nèi)存,即使分配2GB虛擬內(nèi)存給它,后面對應(yīng)的物理內(nèi)存也必須存在。否則應(yīng)用程序的性能將變得很差(使用磁盤交換內(nèi)存頁)。VMware通過透明頁共享技術(shù)可以實(shí)現(xiàn)一定程度上的內(nèi)存共享。虛擬化層能夠識(shí)別出各操作系統(tǒng)只讀內(nèi)存區(qū)域(代碼頁)中的相同部分,這些頁面在內(nèi)存中只保留一個(gè)副本。Windows操作系統(tǒng)自身所使用的內(nèi)存大多為代碼頁,因此在運(yùn)行有N個(gè)Windows實(shí)例的物理服務(wù)器上vSphere只保留一個(gè)Windows操作系統(tǒng)副本。這就是為什么在VDI的環(huán)境中你只需要為VDI映像分配比物理桌面少得多的內(nèi)存。
需要強(qiáng)調(diào)的是,CPU時(shí)間分片是虛擬化層能夠?qū)崿F(xiàn)的,內(nèi)存卻不能按時(shí)間分片。多個(gè)應(yīng)用可以共用一個(gè)CPU,但多個(gè)應(yīng)用卻不能同時(shí)使用一段內(nèi)存區(qū)域。CPU的速度在持續(xù)增長,虛擬機(jī)的密度主要受限于服務(wù)器上物理內(nèi)存的數(shù)量。