服務器虛擬化技術演進

歡迎關注我的公衆號睿Talk,獲取我最新的文章:
clipboard.png

一、前言

服務器虛擬化技術是雲計算的基石,在最大化利用硬件資源的同時,又降低了使用成本,讓系統具備彈性伸縮能力,促使現代系統的架構出現了革命性的變化。無論是微服務架構還是服務網格架構,都是在服務器虛擬化技術日漸成熟後才得以大規模使用。本文主要介紹 CPU 虛擬化技術的演進過程,以英特爾的 x86 平臺爲主,爲掌握雲計算相關知識打好基礎。

二、CPU 保護環

爲了提升系統的安全性,避免惡意操作,CPU 廠商設計了一種分級保護的機制。以 x86 芯片爲例,就分爲 Ring 0 到 Ring 3 幾個級別。

clipboard.png

Ring 0 擁有最高特權,可以和硬件直接交互,操作系統就是跑在 Ring 0。而應用軟件一般跑在 Ring 3 上,當需要調用特權指令(如寫內存)的時候,就會觸發一個軟中斷,操作系統捕獲到後再去做相應的操作,操作完再將控制權交還給應用。

保護環暫且聊到這裏,下面還會講這種設計存在的一些問題,請繼續往下看。

三、CPU 虛擬化技術的演進

服務器虛擬化最早在 19 世紀 60 年代就提出了,當時的機器都是單線程的,一臺機只能跑一個程序,很浪費硬件資源。於是就有人研究在一臺物理機上跑多個操作系統,這樣就能跑多個程序了。但後來由於操作系統的改進,出現了多進程和多線程技術,於是虛擬化技術就被暫時擱置了。

到了 1998 年,隨着二進制翻譯技術的成熟,就能在一臺機器上跑不同的操作系統了。二進制翻譯技術簡稱BT,是一種直接翻譯可執行二進制程序的技術,能夠把一種處理器上的二進制程序翻譯到另外一種處理器上執行。二進制翻譯技術將機器代碼從源機器平臺映射(翻譯)至目標機器平臺,包括指令語義與硬件資源的映射,使源機器平臺上的代碼“適應”目標平臺。最早作出嘗試的是 VMware,實現原理見下圖:

clipboard.png

操作系統和 VMM (Virtual Machine Monitor)跑在 Ring 0 上,虛擬化的 OS 跑在 Ring 1 上。當虛擬化 OS 需要跑內核指令的時候,就會觸發軟中斷,VMM 捕獲後就會進行必要的翻譯和執行操作。但x86架構有一類特殊的指令,稱爲敏感指令,它既能執行特權操作,又無法被 Ring 0 捕獲,導致虛擬機無法正確的執行這些指令。
clipboard.png
爲了解決這個問題,前後發展出3種方法:

  • 二進制翻譯(Binary Translation)
  • 超虛擬化(Para Virtualization)
  • 硬件輔助虛擬化(Hardware Assistance)

二進制翻譯原理就是 VMM 動態的掃描虛擬操作系統的內核,一旦發現不能被捕獲的敏感指令,就將其替換爲一條或多條的特權指令,這樣就能保證指令的正確執行。典型的代表就是 VMware 的第一代虛擬桌面。這種技術有一個致命的弱點,就是明顯的感覺到虛擬機會卡頓,因爲動態的掃描和替換指令是一種很耗資源的操作。

超虛擬化技術就能很好的解決二進制翻譯的問題。它的原理是提前修改安裝在虛擬機上的操作系統,將敏感指令替換掉,這樣所有的特權指令都能被 VMM 捕捉到了,典型的代表就是第一代的 Xen。但這又帶來另一個問題,就是安裝的操作系統必須是內核被修改過的系統,不能隨意安裝任意的系統。

英特爾慢慢也意識到自己芯片存在的問題,於是改良了芯片設計,在 CPU 保護環中新增了 Ring -1層。VMM 跑在 Ring -1 層後,所有的指令都能被捕捉了,而且還新增了一些爲虛擬化服務的指令,這就是 VT-X 技術。最早使用這一技術的 KVM 公司,在成功商業化後就被英特爾收購,並將技術開源。

CPU 的虛擬化是服務器虛擬化的關鍵技術,但其它硬件,如內存和網卡的虛擬化技術也不容忽視,在這方面 QEME 公司就做得很好。於是 KVM 和 QEMU 的組合奠定了服務器虛擬化的基石。

四、Hypervisor 類型

虛擬化層,也就是上文提到的 VMM,現在一般會命名爲 Hypervisor。Hypervisor 有 2 種類型:

  • Type 1,裸金屬(Bare Mental)
  • Type 2,基於操作系統

clipboard.png

Type 1 的 Hypervisor 不依賴操作系統,直接安裝在硬件之上,典型的代表是 Xen 和 KVM。
Type 2 的 Hypervisor 安裝在特定的操作系統之上,像跑應用一樣的啓動和操作虛擬機,典型的代表是 Oracle VirtualBox 和 VMware Workstation。

總結

本文介紹了 CPU 虛擬化技術的演進過程,從二進制翻譯、超虛擬化再到終極的解決方案硬件輔助虛擬化。虛擬化技術的不斷演進,爲雲計算的工業化鋪平了道路。在後面的文章中,爲還會介紹雲計算的相關知識,敬請期待。

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