服務器虛拟化(huà)能夠幫助對(duì)抗服務器消耗過多(duō)資源、更好地利用(yòng)計算(suàn)機能力、控制能源費用(yòng)、以及提供數據中心敏捷性和(hé)靈活性。
有這(zhè)樣一些技術,一方面它們在概念上是十分(fēn)簡單的(de),但另一方面卻對(duì)企業數據中心的(de)影(yǐng)響十分(fēn)深遠(yuǎn)。服務器虛拟化(huà)就是這(zhè)樣一種技術。
想象一下(xià),如果可(kě)以添加一層軟件(超管理(lǐ)程序)來(lái)在一個(gè)物(wù)理(lǐ)服務器上運行多(duō)個(gè)操作系統實例和(hé)相關工作負載,而不是在一個(gè)服務器上運行一個(gè)操作系統實例和(hé)一個(gè)應用(yòng)程序,情況會是什(shén)麽樣?
這(zhè)就是服務器虛拟化(huà)的(de)理(lǐ)念所在。該理(lǐ)念可(kě)追溯到二十世紀60年代IBM的(de)大(dà)型主機,後來(lái)又由VMware發揚光(guāng)大(dà),後者在21世紀初爲x86系列服務器引入了(le)虛拟化(huà)軟件這(zhè)個(gè)概念。自那以後,其他(tā)供應商便開發了(le)屬于其自己的(de)服務器虛拟化(huà)平台,同時(shí)整個(gè)行業也(yě)創建了(le)高(gāo)級管理(lǐ)、自動化(huà)和(hé)編排工具來(lái)使部署、移動和(hé)管理(lǐ)虛拟機(VM)工作負載變得(de)更輕松。
在服務器虛拟化(huà)出現之前,企業需要處理(lǐ)其數據中心環境中服務器消耗過多(duō)資源的(de)問題,處理(lǐ)計算(suàn)能力未得(de)到充分(fēn)使用(yòng)的(de)問題,處理(lǐ)能源費用(yòng)不斷飙升的(de)問題,處理(lǐ)手動流程的(de)問題,以及處理(lǐ)總體效率低下(xià)和(hé)系統不靈活的(de)問題。
服務器虛拟化(huà)改變了(le)所有這(zhè)一切,并已經得(de)到了(le)廣泛采用(yòng)。事實上,要找到一家企業沒有在VM環境中運行大(dà)多(duō)數工作負載,這(zhè)是很困難的(de)。
但是,正如我們所知,任何技術都會被下(xià)一個(gè)大(dà)事件所取代。而在服務器虛拟化(huà)的(de)例子中,下(xià)一個(gè)大(dà)事件就是變小。
服務器虛拟化(huà)将物(wù)理(lǐ)設備進行了(le)分(fēn)割,從而讓多(duō)個(gè)操作系統和(hé)成熟的(de)應用(yòng)程序都能利用(yòng)底層計算(suàn)能力。
在下(xià)一波雲計算(suàn)浪潮中,開發人(rén)員(yuán)将會把應用(yòng)程序切分(fēn)成較小的(de)、在輕量容器中運行的(de)微服務,同時(shí)也(yě)會使用(yòng)無服務器計算(suàn)(也(yě)被稱爲功能即服務(FaaS))。
兩種情形都會繞過VM,同時(shí)代碼會運行在裸機金屬上。
服務器虛拟化(huà)的(de)好處
從基本的(de)服務器整合開始,服務器虛拟化(huà)有諸多(duō)好處。你可(kě)以在單個(gè)硬件上将多(duō)個(gè)應用(yòng)程序聯合起來(lái),從而減少數據中心所需的(de)服務器的(de)總的(de)數量。服務器越少,框架和(hé)網絡設備就會更少;從物(wù)理(lǐ)空間到空調的(de)維修費用(yòng),所有這(zhè)些都會幫助節省事物(wù)的(de)開支。
服務器虛拟化(huà)降低了(le)新硬件對(duì)資本支出的(de)需求,從而讓你不用(yòng)再對(duì)這(zhè)些硬件進行更新。你可(kě)以重新部署那些突然釋放出來(lái)的(de)服務器。
還(hái)記得(de)數據中心管理(lǐ)員(yuán)必須手動提供服務器的(de)那些日子嗎?自從服務器虛拟化(huà)出現之後,自動化(huà)就有了(le)較大(dà)進步,從而用(yòng)戶就可(kě)以在幾秒時(shí)間内把VM運行起來(lái),并且還(hái)能通(tōng)過僅點擊幾下(xià)鼠标來(lái)遷移多(duō)個(gè)工作負載,以便應對(duì)業務變化(huà)需求。
服務器虛拟化(huà)也(yě)能夠提供當下(xià)基于web的(de)、高(gāo)連接性業務所需的(de)高(gāo)可(kě)用(yòng)性、失效備援、可(kě)擴展性、敏捷性、高(gāo)性能和(hé)靈活性。服務器虛拟化(huà)是支持雲計算(suàn)供應商提供其服務的(de)底層技術。當客戶從雲服務提供商那裏購(gòu)買了(le)基礎設施即服務(IaaS)時(shí),他(tā)們就會購(gòu)買VM,然後再添加完成任務所需的(de)相關存儲、管理(lǐ)和(hé)安全功能。
服務器虛拟化(huà)的(de)不同類型
在服務器虛拟化(huà)的(de)世界中,物(wù)理(lǐ)服務器被稱爲主機,它運行著(zhe)一個(gè)主機操作系統。每個(gè)VM都是一個(gè)客戶,會運行一個(gè)客戶操作系統。客戶會彼此隔離開。
有了(le)基于超管理(lǐ)程序的(de)虛拟化(huà),超級監督程序或虛拟機監控器(VMM)就能處于主機OS和(hé)底層硬件層之間,向客戶操作系統提供必需的(de)資源。
半虛拟化(huà)和(hé)全虛拟化(huà)能夠在客戶操作系統安裝進虛拟機之前對(duì)它進行修改。這(zhè)可(kě)以提高(gāo)性能,因爲被修改的(de)客戶操作系統可(kě)以直接與超管理(lǐ)程序進行通(tōng)訊,從而減少模拟開銷。
借助硬件的(de)虛拟化(huà)還(hái)試圖減少管理(lǐ)程序的(de)開銷,但是是通(tōng)過硬件擴展而不是軟件修改來(lái)實現的(de)。
通(tōng)過使用(yòng)内核級虛拟化(huà),而不是超管理(lǐ)程序,你就可(kě)以運行一個(gè)單獨的(de)Linux内核版本。這(zhè)能夠使在單個(gè)主機上運行多(duō)個(gè)虛拟機變得(de)十分(fēn)容易,因爲其中的(de)設備驅動程序可(kě)以用(yòng)于主Linux内核和(hé)虛拟機之間的(de)通(tōng)信。
最後,通(tōng)過系統級或OS虛拟化(huà),你就可(kě)以在操作系統内核的(de)單個(gè)實例上運行多(duō)個(gè)但邏輯上截然不同的(de)環境。在系統級虛拟化(huà)中,所有VM都必須共享相同的(de)操作系統副本,而服務器虛拟化(huà)能夠允許不同的(de)VM擁有不同的(de)操作系統。
虛拟機vs.容器
容器化(huà)運動的(de)兩個(gè)主要的(de)促成者是Docker,這(zhè)是一個(gè)廣受歡迎的(de)用(yòng)于啓動容器的(de)工具,還(hái)有谷歌(gē)的(de)Kubernetes,它可(kě)以幫助管理(lǐ)多(duō)個(gè)容器。容器是獨立的(de)代碼執行環境,它們共享著(zhe)主機操作系統的(de)内核。
容器比VM更高(gāo)效、更輕量,因爲它們繞過了(le)冗餘的(de)客戶操作系統,削減了(le)相關的(de)啓動開銷。相比VM,開發人(rén)員(yuán)可(kě)以在相同的(de)硬件上運行多(duō)達6到8倍的(de)容器。
容器确實有它們自己的(de)缺點。作爲一種相對(duì)較新的(de)方法,他(tā)們沒有成熟技術所擁有的(de)大(dà)量管理(lǐ)工具,因此需要做(zuò)大(dà)量的(de)設置和(hé)維護工作。此外,人(rén)們還(hái)擔心安全問題。
有了(le)VM,你就可(kě)以使用(yòng)來(lái)賓圖像輕松地在主機之間移動工作負載,但裸機更難以升級或移動。使用(yòng)裸金屬服務器,回滾機器狀态就會成爲一項具有挑戰性的(de)任務。
虛拟機vs.無服務器計算(suàn)
在傳統的(de)IaaS雲環境中,客戶會首先提供VM、存儲、數據庫和(hé)相關的(de)安全和(hé)管理(lǐ)工具,然後再将應用(yòng)程序上傳到VM中。
而有了(le)無服務器計算(suàn),開發人(rén)員(yuán)就可(kě)以先編寫代碼,然後讓雲服務提供商處理(lǐ)所有其他(tā)事情。開發人(rén)員(yuán)永遠(yuǎn)不需要考慮服務器、操作系統、供應或管理(lǐ)。當然,需要有一個(gè)物(wù)理(lǐ)服務器來(lái)運行代碼,但這(zhè)是雲服務提供商的(de)責任。
系統會将代碼分(fēn)解成特定的(de)功能,而不是單一的(de)應用(yòng)程序。當發生觸發該功能的(de)事件時(shí),無服務器服務——例如Amazon的(de)Lambda——就會運行該功能。無服務器供應商按功能向客戶收費。
與微服務/容器場(chǎng)景一樣,無服務器計算(suàn)繞過了(le)虛拟機層和(hé)運行在裸金屬上的(de)功能。在這(zhè)一點上,無服務器計算(suàn)相對(duì)不成熟,使用(yòng)案例有限。
服務器虛拟化(huà)的(de)未來(lái)
雖然當下(xià)容器炙手可(kě)熱(rè),人(rén)們對(duì)無服務器計算(suàn)的(de)興趣也(yě)在不斷增長(cháng),但現實情況是,服務器虛拟化(huà)才是一種堅若磐石的(de)技術,因爲它爲絕大(dà)多(duō)數企業應用(yòng)提供了(le)動力——據一些人(rén)估計,虛拟機的(de)飽和(hé)率高(gāo)達90%。
将平穩地運行在VM上的(de)關鍵的(de)應用(yòng)程序移動到容器或無服務器平台上,這(zhè)是很難進行想象的(de)。異構環境的(de)用(yòng)戶可(kě)能仍然會使用(yòng)VM,因爲容器需要在相同的(de)操作系統上運行,并且不能在Linux和(hé)Windows之間進行混合。
但是,對(duì)于正在使用(yòng)最新的(de)DevOps和(hé)敏捷方法構建的(de)新應用(yòng)程序,開發人(rén)員(yuán)現在有了(le)不同的(de)選擇。展望未來(lái),開發人(rén)員(yuán)将根據是否在傳統的(de)VM、容器或無服務器環境中運行新的(de)工作負載來(lái)進行具體的(de)決策。