'論數據中心虛擬化兩大技術代表:容器和虛擬機'

"

如今,虛擬化技術在數據中心內已經生根發芽,應用非常普及,無論是在服務器、還是網絡、存儲等設備中都是如此。虛擬化技術起源於服務器,後來在網絡設備中也出現,雖然都叫虛擬化技術,但是實現的原理是完全不同的,網絡設備中的虛擬化也不能像服務器中的虛擬化可以虛擬化出數百或上千的虛擬設備,實現的技術也完全不同。本文著重講述的是服務器中的虛擬化技術。服務器是數據中心最為重要的組成部分,所有的應用服務都要安裝在服務器上,並運行,所以服務器上的虛擬化技術與應用最為密切相關。從早年的虛擬機技術到如今的容器技術,都是虛擬化技術的典型代表。

虛擬機技術,很多人可能都不陌生。不少人自己也在PC上安裝過虛擬機,這也是實現虛擬化的一個實踐。虛擬機技術可以分為兩大類:硬件虛擬化技術和指令集虛擬化技術,硬件虛擬化技術的典型代表是VMware、Xen等,指令集虛擬化技術的典型代表時Qemu、Boch等。虛擬機技術在數據中心早已深入人心,在數據中心也已普及應用多年,正是應用普遍,可以衍生出了不少細分技術,儼然已經成為數據中心虛擬化技術的重要代表之一。通過虛擬機技術,可以在一臺物理服務器上模擬出一臺或多臺虛擬的計算機,這些虛擬機完全就像真正的計算機那樣進行工作,例如可以安裝操作系統、安裝應用程序、訪問網絡資源等等。對於使用者而言,它只是運行在你物理計算機上的一個應用程序,但是對於在虛擬機中運行的應用程序而言,它就像是在真正的計算機中進行工作。因此,當在虛擬機中進行軟件評測時,可能系統一樣會崩潰,但是,崩潰的只是虛擬機上的操作系統,而不是物理計算機上的操作系統,並且使用虛擬機的恢復功能,可以馬上恢復虛擬機到安裝軟件之前的狀態。

容器技術是通過虛擬化操作系統的方式來管理代碼和應用程序,是在2013年才開始出現並迅速興起的一種虛擬化技術,容器技術主要是由一些技術型創新企業設計開發的,比如:BlueData、CoreOS、Docker、Kismatic、PortWorx等等,其中最為出名的要屬Docker技術,Docker幾乎成為了容器技術的代表。容器技術是讓你可以將更多的計算工作負載塞入到單單一臺服務器上,並且讓你可以在一瞬間為新的計算任務提高增加容量。從理論上來說,這意味著你可以購買較少的硬件,自建或租賃較少的數據中心場地,並且僱用較少的人手來管理這些設備。每個容器內都包含一個獨享的完整用戶環境空間,並且一個容器內的變動不會影響其他容器的運行環境。為了能達到這種效果,容器技術使用了一系列的系統級別的機制諸如利用Linux namespaces來進行空間隔離,通過文件系統的掛載點來決定容器可以訪問哪些文件,通過cgroups來確定每個容器可以利用多少資源。此外容器之間共享同一個系統內核,這樣當同一個庫被多個容器使用時,內存的使用效率會得到提升。

虛擬機和容器兩大技術,從描述上看目的都是虛擬化,但是技術熱點和實現方式則完全不同。虛擬機提供了專用操作系統的安全性和更牢固的邏輯邊界。如果是虛擬機,虛擬機管理程序與硬件對話,就如同虛擬機的操作系統和應用程序構成了一個單獨的物理機。虛擬機中的操作系統可以完全不同於主機的操作系統。而容器具有輕量級特性,所需的內存空間較少,提供非常快的啟動速度,創建容器的速度比虛擬機要快得多,那是由於虛擬機必須從存儲系統檢索10GB至20GB的操作系統。容器中的工作負載使用主機服務器的操作系統內核,避免了這一步,容器可以在二十分之一秒內啟動完畢。擁有這麼快的速度讓開發團隊可以激活項目代碼,以不同的方式測試代碼,或者在其網站上推出額外的電子商務容量――這一切都非常快。虛擬機和容器都具有高度可移植性,但方式不一樣。就虛擬機而言,可以在運行同一虛擬機管理程序(通常是VMware的ESX、微軟的Hyper-V或者開源Zen或KVM)的多個系統之間進行移植。而容器不需要虛擬機管理程序,因為它與某個版本的操作系統綁定在一起。但是容器中的應用程序可以移到任何地方,只要那裡有一份該操作系統的副本。容器技術使得應用程序以標準方式進行了格式化,之後才放到容器中。開發人員可以使用同樣的工具和工作流程,不管目標操作系統是什麼。一旦在容器中,每種類型的應用程序都以同樣的方式在網絡上移動。這樣一來,容器酷似虛擬機,它們又是程序包文件,可以通過互聯網或內部網絡來移動。當然,容器技術沒有虛擬機技術那麼成熟。虛擬機是一項高度發展、非常成熟的技術,事實證明可以運行在最關鍵的業務工作負載。容器技術也開始在谷歌、阿里等互聯網公司中得到應用推廣,隨著技術的成熟與穩定,大有取代虛擬機技術之勢。當然不能忽略的是,容器技術也面臨著一些未解決的問題。比如:安全問題,相鄰的容器共享處理器、內存和磁盤等資源,這種行為讓安全專業人員深為擔憂。容器技術在一個計算機上只能運行一個應用程序,限制了應用程序的處理規模。所以容器是值得使用的技術,不過要謹慎使用,需深思熟慮,而不是貿然行動。

在數據中心的虛擬化進程中,到底採用虛擬機還是容器?這最終還是取決於你的需求。如果你只是希望將應用運行的實例進行隔離,那麼對於管理應用運行環境、啟動應用實例以及控制資源 開銷方面容器將是一個極為高效的工具。如果你從服務器虛擬化的角度來尋找最好的環境隔離方案,那麼系統級的虛擬化是更好的方案:和容器相比,鄰居租戶對系統的影響在虛擬化的方案下將不是一個問題。儘管現在很多容器都在專注於提高其隔離能力,但是虛擬機的隔離還是要優於容器。從物理服務器過渡到虛擬服務器是一個很自然的過程,並且現在針對虛擬服務器的管理的生態系統也很完善。當然兩者並不是對立的,我們可以在一個容器中運行一個虛擬機,也可以在一個虛擬機中運行一個容器,還可以在一個虛擬機中運行多個容器,兩種技術走向融合,這樣才能讓兩種虛擬化技術在數據中心裡發揮更大的作用。

(來源:企業網D1Net)

"

相關推薦

推薦中...