借國慶長假的機會寫了這篇長文,全面地整理了個人從虛擬化到云計算各個層面的看法。主要的內(nèi)容涉及虛擬化、虛擬化管理、數(shù)據(jù)中心虛擬化、云計算、公有云與私有云、以及開放源代碼。本文的全部內(nèi)容均屬于作者的個人觀點,而不代表任何公司的觀點。歡迎討論。
A、虛擬化
虛擬化是指在同一臺物理機器上模擬多臺虛擬機的能力。每臺虛擬機在邏輯上擁有獨立的處理器、內(nèi)存、硬盤和網(wǎng)絡(luò)接口。使用虛擬化技術(shù)能夠提高硬件資源的利用率,使得多個應(yīng)用能夠運行在同一臺物理機上各自擁有彼此隔離的運行環(huán)境。
虛擬化的也有不同的層次,例如硬件層面的虛擬化和軟件層面的虛擬化。硬件虛擬化指的是通過模擬硬件的方式獲得一個類似于真實計算機的環(huán)境,可以運行一個完整的操作系統(tǒng)。在硬件虛擬化這個層面,又有Full Virtualization(全虛擬化,幾乎是完整地模擬一套真實的硬件設(shè)備。大部分操作系統(tǒng)無須進行任何修改即可直接運行在全虛擬化環(huán)境中。)、Partial Virtualization(部分虛擬化,僅僅提供了對關(guān)鍵性計算組件或者指令集的模擬。操作系統(tǒng)可能需要做某些修改才能夠運行在部分虛擬化環(huán)境中。)和Paravirtualization(半虛擬化,不對硬件設(shè)備進行模擬,虛擬機擁有獨立的運行環(huán)境,通過虛擬機管理程序共享底層的硬件資源。大部分操作系統(tǒng)需要進行修改才能夠運行在辦虛擬化環(huán)境中。)等不同的實現(xiàn)方式。軟件層面的虛擬化,往往是指在同一個操作系統(tǒng)實例的基礎(chǔ)上提供多個隔離的虛擬運行環(huán)境,也常常被稱為容器技術(shù)。
在硬件虛擬化的層面,現(xiàn)代的虛擬化技術(shù)通常是全虛擬化和半虛擬化的混合體。常見的虛擬化技術(shù)例如VMWare、Xen和KVM都同時提供了對全虛擬化和半虛擬化的支持。以硬件虛擬化的方式所提供的虛擬機,通常都在運行一個完整的操作系統(tǒng),在同一臺宿主機上存在大量相同或者相似的進程和內(nèi)存頁,從而導(dǎo)致明顯的性能損耗。目前,通過KSM等技術(shù)可以識別與合并含有相同內(nèi)容的內(nèi)存頁,但是還沒有對大量相同或者相似的進程進行優(yōu)化處理的有效手段。因此,硬件虛擬化也往往被稱為重量級虛擬化,在同一宿主機上能夠同時運行的虛擬機數(shù)量是相當有限的。在軟件虛擬化的層面,同一宿主機上的所有虛擬機共享同一個操作系統(tǒng)實例,不存在由于運行多個操作系統(tǒng)實例所造成的性能損耗。因此,軟件虛擬化也往往被稱為輕量級虛擬化,在同一宿主機上能夠同時運行的虛擬運行環(huán)境數(shù)量是比較寬松的。以Solaris操作系統(tǒng)上的Container為例,一個Solaris操作系統(tǒng)的實例理論上可以支持多達8000個Container(實際能夠運行的Container數(shù)量取決于系統(tǒng)資源和負載)。與此類似,Linux操作系統(tǒng)上的LXC可以輕松地在同一宿主機上同時支持數(shù)量可觀的虛擬運行環(huán)境。
在虛擬化這個領(lǐng)域,國內(nèi)的公司對硬件虛擬化的興趣較大,在研發(fā)和生產(chǎn)環(huán)境中也大都采用硬件虛擬化技術(shù)。淘寶是國內(nèi)較早地研究并應(yīng)用軟件虛擬化技術(shù)的,他們在淘寶主站的實踐經(jīng)驗表明使用cgroup替代Xen能夠提升資源利用率。至于在一個實際的應(yīng)用場景中到底應(yīng)該選擇硬件虛擬化還是軟件虛擬化,則應(yīng)該重點考慮最終用戶是否需要對操作系統(tǒng)的完全控制權(quán)(例如升級內(nèi)核版本)。如果最終用戶僅僅需要對運行環(huán)境的控制權(quán)(例如PaaS層面的各種App Engine服務(wù)),軟件虛擬化可能性價比更高。對于為同一應(yīng)用提供橫向擴展能力的應(yīng)用場景,軟件虛擬化也是比較好的選擇。
對于需要深入了解虛擬化技術(shù)的技術(shù)人員來說,VMWare發(fā)表的白皮書《 Understanding Full Virtualization, Paravirtualization, and Hardware Assist》是一份很好的參考資料。
通常來講,能夠直接使用虛擬化技術(shù)的用戶數(shù)量是比較少的。以Linux操作系統(tǒng)為例,能夠進行虛擬機生命周期管理的用戶,一般就是具有訪問libvirt權(quán)限的用戶。在一個公司或者其他實體中,這些用戶通常是系統(tǒng)管理員。