tml lang="zh" data-theme="light">

知乎 - 知乎

淺聊著名的雲計算虛擬化

來自專欄啟迪雲談13 人贊了文章

啟迪雲-研發部盧柳

雲計算(cloud computing),根據維基百科的解釋為:是一種基於互聯網的計算方式,通過這種方式,共享的軟硬體資源和信息可以按需求提供給計算機各種終端和其他設備。其中重點在於共享和按需。

在大多數情況下,我們不能完全利用到我們花費重金購買的物理設備的所有資源。

  • 如何將有限的計算資源做到共享和按需,發揮其最大的作用並攫取回我們在物理設備所投入的資金?
  • 如何將多個廉價的或老舊設備歸集到一起,以發揮他們的剩餘價值?
  • 如何將本地的設備共享給千里之外的同事?

雲計算概念提出目的亦是包含了要解決這些問題的答案。

目前我們主要依靠虛擬化技術來解決將不可切割的硬體資源抽象和轉換成可二次配置的單元,以實現更好的配置現有的計算、存儲和網路等資源。可見現今的雲計算落地方案基本上依靠於虛擬化技術。

虛擬化技術最早是IBM公司在上世紀60年代末所提出的,當時 IBM 公司為實現多用戶對大型計算機同時交互訪問而開發的一套被稱之為虛擬機監視器(Virtual Machine Monitor 簡稱為 VMM)的軟體。在現在的虛擬化技術中,VMM 是運行在硬體伺服器和操作系統中間層的軟體,它方便同時有多個相同或不同的操作系統和應用共享底層硬體基礎設施。在雲計算中常提及的Hypervisor與 VMM 具有相同含義,其實質是一種資源配置的管理技術。

虛擬化根據針對的對象不同還可分為平台虛擬化,應用程序虛擬化,資源虛擬化等。平台虛擬化是針對物理硬體及操作系統層面而言的,根據其實現方式又可分為完全虛擬化、半虛擬化、操作系統級虛擬化以及硬體輔助虛擬化等。

完全虛擬化(Full virtualization簡稱 FV )

是指虛擬機模擬了完整的底層硬體,使得為原始硬體設計的操作系統或其它系統軟體完全不做任何修改就可以在虛擬機中運行。在 CPU 的完全虛擬化實現機制中主要依靠了特權級壓縮和二進位翻譯(BT)技術等來實現的。

這些技術出現的原因和 CPU 實現機制有很大關聯。CPU 對於指令進行了分級處理,對於高敏感指令有單獨的執行區域稱之為內核態,用戶的代碼不能直接訪問內核態,而這些高敏感代碼則需要執行在內核態中,客戶操作系統是無法直接訪問內核態的,所以需要依靠這些技術來解決客戶機的高敏感指令的執行障礙。敏感指令在操作系統和硬體之間被捕捉處理,客戶操作系統無需修改,所有軟體都能在虛擬機中運行。使用完全虛擬化技術的公司及產品有:IBM CP/CMS,VirtualBox,VMware Workstation,Parallels, QEMU,Hyper-V 等。

Paravirtualization 簡稱 PV

類似於全虛擬化。它也是使用VMM分享存取底層的硬體,區別在於它的客戶操作系統集成了虛擬化方面的代碼。也就是說半虛擬化技術需要安裝的客戶機的操作系統要進行定製。這無疑是讓用戶使用受到很大的限制。使用該種虛擬化的架構曾有 Xen 等,但現在還使用這種虛擬化技術的已經不多。

操作系統級虛擬化(OS-level virtualization)

也有人稱之為容器化,是操作系統自身的一個特性,它允許多個相互隔離的用戶空間實例的存在。例如Parallels Virtuozzo Containers、OpenVZ、LXC以及類Unix系統上的chroot,Solaris上的Zone都是使用了該技術。這種虛擬化技術在當前應用還是比較多的,例如當前售賣 VPS 的商家中有部分就是使用的 OpenVZ 的架構;主流的 Docker 是基於 LXC 開發的一種容器工具;Android 手機的雙域功能基本上多是基於 LXC 技術實現的。但是這種技術有很大的限制那就是客戶機內核版本不能升級,操作系統類型也得和宿主機相同,這讓用戶對客戶機系統和內核的選擇受到了很大的限制,如前文所講它的本質依舊是用戶空間實體和組管理。但隨著技術的發展,它在輕量化的應用場景上應該也有著不錯的前景。

硬體輔助虛擬化(Hardware virtualization)

利用硬體(主要是CPU)輔助處理敏感指令以實現完全虛擬化的功能,客戶操作系統無需修改。例如VMware Workstation,Xen,KVM產品或架構都是應用了該技術。當前市場中的幾乎所有的主流硬體都是支持硬體輔助虛擬化技術的。VMM 技術的出現,可能要歸功於 X86 架構從誕生時帶來的問題——不支持虛擬化。

CPU 的演進一直兼容著之前的指令集,在 X86 架構的祖先 Intel 8086 誕生時沒有設計虛擬化相關的指令,所以X86 架構在一段時間裡都是不支持硬體虛擬化的。直至 Intel 在 2005 年發布了 IVT技術,如果你不細究也可以認為就是 VT-x 。Intel 的 VT-x 技術為 CPU 添加上了虛擬化技術的一個指令集,VT-x有助於提高基於軟體的虛擬化解決方案的靈活性與穩定性。

通過按照純軟體虛擬化的要求消除 VMM 代表客戶操作系統來聽取、中斷與執行特定指令的需要,不僅能夠有效減少 VMM 干預,還為 VMM 與客戶操作系統之間的傳輸平台控制提供了有力的硬體支持,這樣在需要 VMM干預時,將實現更加快速、可靠和安全的切換。對應的 AMD 發布了相應的自家硬體輔助虛擬化技術稱之為 AMD-V。

X86架構的硬體輔助虛擬化結合Linux全虛擬化解決方案已是當前主流成熟的虛擬化解決方案,這也是為什麼我們在好多的雲產品部署要求中可以看到 CPU 需要支持基於Intel VT /AMD-V以上X86指令集架構的原因。

我們對於雲產品的選擇上會去看它的出生,當前現狀以及未來情況。就以上幾點而言 KVM 無疑是比較好的選擇。它雖生在了以色列,但是過繼給了Red Hat這個開源社區的領軍人物。之後Red Hat便捨棄 Xen開始全面扶持 KVM,從 RHEL6 開始 KVM便被默認內置於內核中。而且 KVM 也針對 Linux 平台做了優化。在性能上繼承了Linux很好的性能和伸縮性;在性能方面,在15年的一篇關於KVM的性能測試的文章上描述KVM 的性能相比宿主機而言僅下降了1.5%以內。KVM拓展性也非常好,客戶機和宿主機都可以支持非常多的 CPU數量和非常大的內存,可以過載使用 CPU和內存,還可藉助 KSM 技術實現對內存的過量使用,且保證性能依舊非常不錯。KVM 社區活躍,可見未來前景依舊不錯。

由於KVM僅是一個簡單的虛擬化模塊,它的易用性並不高。這裡我們可以使用OpenStack來作為它的一個上層建築,用以更便捷的實施、部署以及使用。OpenStack適用於各種規模的集群環境,它豐富的功能幾乎支持所有的虛擬化管理程序,不論是開源的(Xen與KVM)還是廠商的(Hyper-V與VMware),這個特色讓它可以滿足公共雲和私有雲用戶及運營商的需求。

目前而言,有95%的OpenStack平台由 KVM驅動,這讓它開箱使用時就能擁有不俗的表現。 OpenStack社區活躍,讓其技術更易跟上科技發展的潮流技術,從而能夠繼續引領時代發展的步伐。所以說選擇OpenStack作為雲計算解決方案不失為一個明智的選擇。


推薦閱讀:
查看原文 >>
相关文章