天天看點

論資料中心虛拟化兩大技術代表:容器和虛拟機

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

論資料中心虛拟化兩大技術代表:容器和虛拟機

虛拟機技術,很多人可能都不陌生。不少人自己也在pc上安裝過虛拟機,這也是實作虛拟化的一個實踐。虛拟機技術可以分為兩大類:硬體虛拟化技術和指令集虛拟化技術,硬體虛拟化技術的典型代表是vmware、xen等,指令集虛拟化技術的典型代表時qemu、boch等。虛拟機技術在資料中心早已深入人心,在資料中心也已普及應用多年,正是應用普遍,可以衍生出了不少細分技術,俨然已經成為資料中心虛拟化技術的重要代表之一。通過虛拟機技術,可以在一台實體伺服器上模拟出一台或多台虛拟的計算機,這些虛拟機完全就像真正的計算機那樣進行工作,例如可以安裝作業系統、安裝應用程式、通路網絡資源等等。對于使用者而言,它隻是運作在你實體計算機上的一個應用程式,但是對于在虛拟機中運作的應用程式而言,它就像是在真正的計算機中進行工作。是以,當在虛拟機中進行軟體評測時,可能系統一樣會崩潰,但是,崩潰的隻是虛拟機上的作業系統,而不是實體計算機上的作業系統,并且使用虛拟機的恢複功能,可以馬上恢複虛拟機到安裝軟體之前的狀态。

容器技術是通過虛拟化作業系統的方式來管理代碼和應用程式,是在2013年才開始出現并迅速興起的一種虛拟化技術,容器技術主要是由一些技術型創新企業設計開發的,比如: bluedata、coreos、docker、kismatic、portworx等等,其中最為出名的要屬docker技術,docker幾乎成為了容器技術的代表。容器技術是讓你可以将更多的計算工作負載塞入到單單一台伺服器上,并且讓你可以在一瞬間為新的計算任務提高增加容量。從理論上來說,這意味着你可以購買較少的硬體,自建或租賃較少的資料中心場地,并且雇用較少的人手來管理這些裝置。每個容器内都包含一個獨享的完整使用者環境空間,并且一個容器内的變動不會影響其他容器的運作環境。為了能達到這種效果,容器技術使用了一系列的系統級别的機制諸如利用linux namespaces來進行空間隔離,通過檔案系統的挂載點來決定容器可以通路哪些檔案,通過cgroups來确定每個容器可以利用多少資源。此外容器之間共享同一個系統核心,這樣當同一個庫被多個容器使用時,記憶體的使用效率會得到提升。

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

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

作者:何妍 

來源:51cto

繼續閱讀