今天的許多前沿技術(shù),如云計(jì)算、邊緣計(jì)算和微服務(wù),都源于虛擬機(jī)的概念——將操作系統(tǒng)和軟件實(shí)例從底層物理計(jì)算機(jī)中分離出來。
什么是虛擬機(jī)?
虛擬機(jī)指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。在虛擬機(jī)中,一臺或多臺客戶機(jī)可以運(yùn)行在一臺主機(jī)上。
虛擬機(jī)的起源可以追溯到20世紀(jì)60年代早期。每個虛擬機(jī)都有自己的操作系統(tǒng),獨(dú)立于其他虛擬機(jī),即使它們位于同一物理主機(jī)上。虛擬機(jī)通常運(yùn)行在服務(wù)器上,但也可以運(yùn)行在桌面系統(tǒng)上,甚至是嵌入式平臺上。多個虛擬機(jī)可以共享一個物理主機(jī)的資源,包括 CPU 周期、網(wǎng)絡(luò)帶寬和內(nèi)存。
虛擬機(jī)在過去的20年里獲得了很大的發(fā)展,企業(yè)通過服務(wù)器虛擬化可以更有效地利用其物理服務(wù)器的計(jì)算能力,減少物理服務(wù)器的數(shù)量并節(jié)省數(shù)據(jù)中心的空間。
虛擬機(jī)如何工作?
一般來說,有兩種類型的虛擬機(jī):程序虛擬機(jī)(將單個程序分開)和系統(tǒng)虛擬機(jī)(將操作系統(tǒng)和應(yīng)用程序與物理計(jì)算機(jī)完全分離)。程序虛擬機(jī)的例子包括 Java 虛擬機(jī)、.NET Framework 和 Parrot 虛擬機(jī)。
系統(tǒng)虛擬機(jī)依賴管理程序(hypervisor)作為中間人,提供軟件對硬件資源的訪問。hypervisor模擬計(jì)算機(jī)的 CPU、內(nèi)存、硬盤、網(wǎng)絡(luò)和其他硬件資源,創(chuàng)建一個資源池,可以根據(jù)各個虛擬機(jī)的特定需求將資源分配給它們。Hypervisor 可以支持多個相互隔離的虛擬硬件平臺,使虛擬機(jī)能夠在同一物理主機(jī)上運(yùn)行 Linux 和 Windows Server 操作系統(tǒng)。
該領(lǐng)域的知名企業(yè)包括 VMware (ESX/ESXi)、Intel/Linux Foundation (Xen)、Oracle(適用于 SPARC 的 MV 服務(wù)器和適用于 x86 的 Oracle VM 服務(wù)器)和微軟(Hyper-V)。
臺式計(jì)算機(jī)系統(tǒng)也可以使用虛擬機(jī)。例如Mac 用戶在自己的Mac上運(yùn)行虛擬Windows系統(tǒng)。
管理程序有哪兩種類型?
管理程序負(fù)責(zé)管理資源,并將資源分配給虛擬機(jī)使用。它還可以根據(jù)管理程序和虛擬機(jī)的配置方式來調(diào)度和調(diào)整資源的分配方式,并且可以根據(jù)需求波動重新分配資源。大多數(shù)虛擬機(jī)管理程序可分為以下兩類:
Type1:裸機(jī)管理程序直接在物理主機(jī)上運(yùn)行,并且可以直接訪問硬件。這類管理程序通常在服務(wù)器上運(yùn)行,通常比 2 類管理程序更高效、性能更好,非常適合服務(wù)器、桌面和應(yīng)用程序虛擬化。這類管理程序包括 Microsoft Hyper-V 和 VMware ESXi。
Type2:有時(shí)稱為托管管理程序,這類管理程序安裝在主機(jī)操作系統(tǒng)上,負(fù)責(zé)管理對硬件資源的調(diào)用,通常部署在最終用戶系統(tǒng)上。這類管理程序包括 VMware Workstation 和 Oracle VirtualBox。
虛擬機(jī)有什么優(yōu)勢?
由于軟件與物理主機(jī)分離,用戶可以在單個硬件上運(yùn)行多個操作系統(tǒng),從而節(jié)省企業(yè)的時(shí)間、管理成本和物理空間。虛擬機(jī)還可以支持舊版應(yīng)用程序,從而減少或消除將舊應(yīng)用遷移到更新或不同操作系統(tǒng)的需求和成本。
此外,開發(fā)人員可以使用虛擬機(jī)在安全的沙盒環(huán)境中測試應(yīng)用程序。
開發(fā)人員想知道他們的應(yīng)用程序是否能在新的操作系統(tǒng)上運(yùn)行,可以利用虛擬機(jī)來測試他們的軟件,而不必提前購買新的硬件和操作系統(tǒng)。
這也有助于隔離惡意軟件,由于虛擬機(jī)內(nèi)的軟件無法篡改主機(jī),惡意軟件無法傳播。
虛擬機(jī)的缺點(diǎn)是什么?
虛擬機(jī)同樣也存在一些缺點(diǎn)。在一臺物理主機(jī)上運(yùn)行多個虛擬機(jī)可能會導(dǎo)致性能不穩(wěn)定,尤其是在不滿足特定應(yīng)用程序的基礎(chǔ)架構(gòu)要求的情況下。這也使它們在很多情況下比物理計(jì)算機(jī)效率低。
此外,如果物理服務(wù)器崩潰,在其上運(yùn)行的所有應(yīng)用程序都會崩潰。
還有哪些其他形式的虛擬化?
虛擬機(jī)在服務(wù)器虛擬化方面的成功促使虛擬化應(yīng)用到了很多其他領(lǐng)域,包括存儲、網(wǎng)絡(luò)和桌面。
在網(wǎng)絡(luò)虛擬化方面的探索包括NaaS(網(wǎng)絡(luò)即服務(wù))和NFV(網(wǎng)絡(luò)功能虛擬化),通過商用服務(wù)器代替專用網(wǎng)絡(luò)設(shè)備,以實(shí)現(xiàn)更靈活和可擴(kuò)展的服務(wù)。
這與SDN(軟件定義網(wǎng)絡(luò))略有不同,SDN是將網(wǎng)絡(luò)控制平面與轉(zhuǎn)發(fā)平面分開,以實(shí)現(xiàn)更自動化的網(wǎng)絡(luò)資源分配和基于策略的網(wǎng)絡(luò)資源管理。
VNF(虛擬網(wǎng)絡(luò)功能)是可以在 NFV 環(huán)境中運(yùn)行的基于軟件的服務(wù),包括路由、防火墻、負(fù)載平衡、廣域網(wǎng)加速和加密等。
虛擬機(jī)和容器
虛擬機(jī)的增長促進(jìn)了容器等技術(shù)的進(jìn)一步發(fā)展,使這一概念又向前邁進(jìn)了一步。容器可以對單個應(yīng)用程序及其依賴項(xiàng)進(jìn)行虛擬化。與虛擬機(jī)相比,容器的開銷要少得多,只包含二進(jìn)制文件、庫和應(yīng)用程序。
雖然有些人認(rèn)為容器的開發(fā)可能會扼殺虛擬機(jī),但虛擬機(jī)有足夠的能力和優(yōu)勢來推動技術(shù)向前發(fā)展。例如,在同時(shí)運(yùn)行多個應(yīng)用程序或在舊操作系統(tǒng)上運(yùn)行傳統(tǒng)應(yīng)用程序時(shí),虛擬機(jī)仍然發(fā)揮很大作用。
此外,還有人認(rèn)為容器不如虛擬機(jī)管理程序安全,因?yàn)槿萜髦挥幸粋€應(yīng)用程序共享的操作系統(tǒng),而虛擬機(jī)可以隔離應(yīng)用程序和操作系統(tǒng)。
IDC 軟件定義計(jì)算部門的研究經(jīng)理 Gary Chen 在IDC的《2019-2022年全球虛擬機(jī)軟件預(yù)測》中寫道:“虛擬機(jī)軟件市場非常有彈性,并將在未來五年繼續(xù)積極增長,盡管該市場已經(jīng)非常成熟并接近飽和。”
虛擬機(jī)、5G 和邊緣計(jì)算
虛擬機(jī)被視為 5G 和邊緣計(jì)算等新技術(shù)的一部分。例如,微軟、VMware 和 Citrix 等虛擬桌面基礎(chǔ)架構(gòu) (VDI) 供應(yīng)商正在尋找將其 VDI 系統(tǒng)擴(kuò)展到居家辦公的方式,作為疫情后混合辦公方式的補(bǔ)充。
卡內(nèi)基梅隆大學(xué)的計(jì)算機(jī)科學(xué)教授Mahadev Satyanarayanan說:“使用VDI,你需要極低的延遲,因?yàn)槟慊旧鲜前涯愕逆I盤敲擊和鼠標(biāo)移動發(fā)送到遠(yuǎn)程桌面。”2009年,Satyanarayanan寫了一篇文章,介紹了如何利用基于虛擬機(jī)的云為互聯(lián)網(wǎng)邊緣的移動設(shè)備提供更好的處理能力,這促進(jìn)了邊緣計(jì)算的發(fā)展。
在 5G 無線領(lǐng)域,網(wǎng)絡(luò)切片過程使用SDN和 NFV 技術(shù)來幫助將網(wǎng)絡(luò)功能安裝到虛擬服務(wù)器上的虛擬機(jī)上,以提供曾經(jīng)只能在專有硬件上運(yùn)行的服務(wù)。
就像今天使用的許多其他技術(shù)一樣,如果沒有幾十年前引入的原始虛擬機(jī)的概念,這些新興的創(chuàng)新就不會得到發(fā)展。