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