再說x86虛擬化

相關資料已經足夠多了,網上其他的文章多數年代久遠,本文試圖換個角度看虛擬化。


在虛擬化架構層面,分爲兩種,裸金屬和寄居式。

在虛擬化技術層面,分爲三代,指令翻譯(模擬)、OS輔助和硬件輔助


第一代  vmware


vmware不多說,是最早的x86虛擬化廠商,是傳統企業虛擬化領域的霸主。憑藉第一代虛擬化的核心技術:指令翻譯,這樣的黑科技風靡一時,技術成熟穩定,非開源,性能較好,vmware vsphere是典型的裸金屬架構虛擬化技術。


vmware成功之處在於起步早,產品體驗好,深入人心,生態完善。爆款vmware workstation 是IT技術人桌面虛擬化首選,不會vmware都不好意思說自己是搞IT的。


vmware的缺點是免費產品閹割嚴重,商業授權昂貴,也不符合軟件行業的開源趨勢,並且隨着雲計算市場的膨脹,企業虛擬化市場逐漸萎縮虛擬化技術經過指令翻譯、OS輔助,硬件輔助三代發展,硬件輔助虛擬化技術已經完全成熟佔據主流vmware的技術優勢不再


跟微軟類似,vmware很可能會逐漸沒落。不同之處在於,微軟是個胖子,大力改革,可能在別處獲得新生從而成功轉型。而vmware專耕一處,轉型可能性比較小。


第二代  Xen


xen是一個開源虛擬化軟件,以第二代虛擬化核心技術:半虛擬化起家,目前同時支持兩種虛擬化技術,包括半虛擬化和全虛擬化。


所謂半虛擬化,也叫超虛擬化,或OS輔助虛擬化,通過定製的Linux內核可以更好的利用CPU資源,避免完全虛擬化帶來的損耗,所以性能比全虛擬化要好。因此xen的半虛擬化必須對客戶機操作系統進行修改,出於競爭關係,這通常被宣傳kvm優越性的輿論認爲是一個缺點。其實xen的半虛擬化可以近似看作是一種原始的容器技術,docker也需要對操作系統進行顯性的修改,並沒有人認爲這是缺點,因爲docker發明了配套的鏡像和倉庫。所以從現在看,需要對客戶機操作系統進行修改,並不能算是xen半虛擬化的缺點。xen的半虛擬化真正的缺點是隔離不夠徹底,不夠安全。每次xen發生的重大漏洞,幾乎都與半虛擬化有關。docker將容器發揚光大,也同樣面臨不夠安全的問題。


xen的全虛擬化,與vmware的重要區別是,客戶操作系統的CPU指令是硬件輔助模擬出來的,而非指令翻譯的來。


xen在架構上屬於裸金屬虛擬化,hypervisor直接運行在硬件之上,管理硬件資源。xen 的hypervisor管理程序被稱爲dom0,實際上一個特權虛擬機,負責調度底層的hypervisor和轉發特權指令。其他普通虛擬機稱爲domU。微軟的hyper-V技術跟xen架構高度相似,至今被認爲是微軟借與思傑技術合作而抄襲得來。另外,在CPU性能普遍過剩的年代,xen全虛擬化與號稱高性能的kvm的單實例性能不相上下,差距在10%以內甚至更少,xen甚至因爲架構原因在多實例情況下的穩定性上更有優勢。對完全虛擬化的支持,表明xen試圖向第三代虛擬化技術(硬件輔助)進化。


與裸金屬架構不同的另一種架構是寄居,即操作系統嵌套,目前所有的桌面級虛擬化軟件都是寄居架構。通常認爲,裸金屬虛擬化性能和穩定要勝過寄居式虛擬化技術。因爲裸金屬虛擬化下的hypervisor更精簡,專爲虛擬化而生。


一個需要勘誤的是,xen比kvm稍晚進入linux內核。並不是網上所說kvm是內核模塊,而xen不是。但xen的架構決定xen只能部分進入linux內核,也就是dom0的部分。


xen當時在整個虛擬化領域的實力,雖然不及vmware,在企業虛擬化市場也不算太成功,高峯時期份額在15%-20%左右,但是憑藉開源的優勢,另闢蹊徑開闢了vps以及稍後的雲計算領域。早期的vps廠商、谷歌、亞馬遜、阿里雲等巨頭都曾是xen大客戶,都運行着數以百萬計的實例,xen高峯時期的市場佔有率在90%-95%。


xen 是開源虛擬化的先鋒,起源很早,當時世界上開源虛擬化技術幾乎沒有,白茫茫一片,intel VT技術也遠未普及。

於是xen自身實現了一整套虛擬化生態,包括指令模擬轉發,設備模擬,資源調度等等。隨着技術的發展,開源界先後出現了qemu、libvirt等優秀工具後,xen沒有及時調整,導致包袱越來越大,代碼難以維護。每次xen漏洞爆發後,損失的不光是聲譽,還有市場份額。


另外,思傑並不是一個很好的技術領導,總在商業化和開源之間搖擺,手中的王牌xen/xenserver以及cloudstack都被悉數敗光,在紅帽的強力宣傳下,於是kvm 逐漸崛起,xen敗局已定。


第三代  kvm


kvm是第三代虛擬化技術,核心是硬件輔助虛擬化,架構特點是分工明確,類似web架構中的LAMP。CPU虛擬化由intel硬件提供支持,設備模擬由qemu-kvm負責,libvirt負責網絡和存儲,linux kernel負責資源調度。kvm是近年來主流的虛擬化技術。


kvm是一種典型的寄居式的全虛擬化技術,得益於紅帽的深厚的內核功底和領導能力,經過多年優化,目前是市場上性能最好也最被看好的虛擬化技術。kvm也順勢成稱爲openstack的首選hypervisor和一等公民。


與xen不同,kvm是專屬Linux的虛擬化技術,kvm雖然有寄居架構的劣勢,但解耦的非常好,在非常簡單靈活的同時,又能有針對性的優化,linux kernel又非常成熟健壯,所以整體穩定性和性能都非常好。kvm的崛起離不開紅帽的持續投資和身體力行的強力推薦,也有政治的成分,據稱linus大神不喜歡xen運行在kernel 下面。


kvm也存在缺點,嚴重依賴Intel VT/AMD-V技術,寄居架構缺陷不再多說,架構分散,細節對技術人員的要求也更高。技術不錯但缺乏產品性,沒有對標vmware vcenter或xenserver這樣的產品,所以對企業虛擬化不友好。kvm很少單獨使用,通常是作爲組件被其他產品集成,管理工具也都比較重型,最典型的就是openstack。


目前kvm的市場份額日新月異,尤其是在日益膨脹的雲計算領域,谷歌、亞馬遜、阿里等巨頭紛紛轉向kvm,超越取代xen是遲早的事情。


(vmware/xen/kvm的完全虛擬化是針對CPU而言,出於性能考慮,在網卡和存儲上大量使用半虛擬化或硬件透傳技術)


第四代 docker


講完虛擬化技術上的三代,接着講虛擬化架構上的創新。我將它“看作”是虛擬化技術上的第四代。


前面講過,通常認爲,裸金屬架構會比寄居架構性能和穩定性要更好。難道寄居架構就真的不堪一擊了嗎?


容器技術,也被看作是一種輕量級虛擬化技術,或者說是另類的虛擬化技術,也符合廣義上的虛擬化含義,它是天然的寄居架構。容器技術經過發展多年也十分成熟穩定,採用軟件隔離代替硬件模擬,性能完爆傳統虛擬化,docker的持續火爆讓人們對容器刮目相看。docker無論在可移植性,性能,自動化等方面體現出的巨大優越性,顛覆了傳統的部署方式,可以極大提高生產力。與之配套的k8s編排引擎,更是將docker的自動化推向了新的高度。


docker的缺點在於隔離較差,安全性堪憂,但並不妨礙人們對效率的追求,目前kata-container項目正在試圖融合傳統虛擬機和容器的優勢,我們拭目以待。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章