虛擬機(jī)(Virtual Machine,縮寫(xiě)VM)
定義
虛擬機(jī)(Virtual Machine,縮寫(xiě)VM)是基于計(jì)算機(jī)架構(gòu),通過(guò)軟件對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行虛擬化,從而提供跟實(shí)體計(jì)算機(jī)相同功能的計(jì)算機(jī)系統(tǒng)。它能在完全隔離的環(huán)境下,利用軟件模擬硬件系統(tǒng)功能,還可實(shí)現(xiàn)與物理主機(jī)的資源同步 。
分類
- 系統(tǒng)虛擬機(jī):被視為實(shí)體計(jì)算機(jī)高效且獨(dú)立的副本,是嚴(yán)密隔離、內(nèi)含操作系統(tǒng)和應(yīng)用的軟件容器。多個(gè)虛擬機(jī)可置于一臺(tái)計(jì)算機(jī),實(shí)現(xiàn)在單個(gè)物理服務(wù)器(主機(jī))上運(yùn)行多個(gè)操作系統(tǒng)和應(yīng)用 。比如在一臺(tái)物理服務(wù)器上同時(shí)運(yùn)行Windows和Linux系統(tǒng)的虛擬機(jī),分別提供不同服務(wù)。
- 進(jìn)程虛擬機(jī):支持單一進(jìn)程,虛擬化軟件位于ABI接口、操作系統(tǒng)和硬件組合之上,仿真用戶級(jí)指令和操作系統(tǒng)調(diào)用 。像Java虛擬機(jī)(JVM ),支持Java程序運(yùn)行,消除了Java程序與機(jī)器平臺(tái)的依賴關(guān)系。
關(guān)鍵組件
- 虛擬機(jī)監(jiān)視器(Hypervisor):也叫Virtual Machine Monitor ,是運(yùn)行在物理服務(wù)器和操作系統(tǒng)間的中間軟件層,允許多個(gè)操作系統(tǒng)和應(yīng)用共享一套基礎(chǔ)物理硬件,可協(xié)調(diào)訪問(wèn)服務(wù)器上的物理設(shè)備和虛擬機(jī),是虛擬化技術(shù)核心 。比如在數(shù)據(jù)中心,Hypervisor可讓多個(gè)虛擬機(jī)共享服務(wù)器的CPU、內(nèi)存、存儲(chǔ)等資源。
- 虛擬機(jī)管理器(VMM):用于管理相互獨(dú)立運(yùn)行的虛擬機(jī),在邏輯上分離虛擬機(jī),為其分配底層計(jì)算能力、內(nèi)存和存儲(chǔ)分片,防止虛擬機(jī)相互干擾 。
實(shí)現(xiàn)原理
通過(guò)軟件模擬硬件功能,包括CPU、內(nèi)存、硬盤(pán)、網(wǎng)卡等設(shè)備 。以VMware虛擬機(jī)為例,安裝后創(chuàng)建虛擬機(jī)時(shí)需指定操作系統(tǒng)類型、分配CPU核心數(shù)、內(nèi)存大小、硬盤(pán)容量等資源。創(chuàng)建完成啟動(dòng)虛擬機(jī),其內(nèi)部操作系統(tǒng)會(huì)認(rèn)為自己在真實(shí)硬件上運(yùn)行。 運(yùn)行時(shí),Hypervisor負(fù)責(zé)將虛擬機(jī)的硬件訪問(wèn)請(qǐng)求轉(zhuǎn)換為對(duì)物理硬件的實(shí)際操作,同時(shí)管理虛擬機(jī)的資源分配和調(diào)度 。
優(yōu)點(diǎn)
- 分區(qū):在一臺(tái)物理機(jī)上運(yùn)行多個(gè)虛擬機(jī),每個(gè)虛擬機(jī)相互隔離,可同時(shí)運(yùn)行不同操作系統(tǒng)及應(yīng)用程序,提高硬件利用率,降低成本 。如企業(yè)用一臺(tái)服務(wù)器部署多個(gè)虛擬機(jī),分別運(yùn)行數(shù)據(jù)庫(kù)、Web服務(wù)等。
- 封裝:虛擬機(jī)及其應(yīng)用、配置等可封裝成文件,便于復(fù)制、遷移和備份 。例如可快速?gòu)?fù)制虛擬機(jī)部署新環(huán)境,或遷移到其他物理服務(wù)器。
- 隔離:虛擬機(jī)間相互隔離,一個(gè)虛擬機(jī)故障或受攻擊,不影響其他虛擬機(jī),保障系統(tǒng)穩(wěn)定性和安全性 。
- 兼容性:能在不兼容的硬件上運(yùn)行特定操作系統(tǒng)或軟件 。比如在新電腦運(yùn)行老舊軟件,可通過(guò)虛擬機(jī)模擬其兼容的運(yùn)行環(huán)境。
缺點(diǎn)
- 性能損失:運(yùn)行在宿主操作系統(tǒng)之上,虛擬機(jī)性能受物理機(jī)性能和虛擬化開(kāi)銷影響,比直接在物理機(jī)運(yùn)行程序性能低 。
- 資源競(jìng)爭(zhēng):多個(gè)虛擬機(jī)共享物理機(jī)資源,資源分配不合理會(huì)導(dǎo)致資源競(jìng)爭(zhēng),影響性能 。如多個(gè)虛擬機(jī)同時(shí)大量占用CPU或內(nèi)存。
- 軟件兼容性問(wèn)題:部分軟件在虛擬機(jī)中運(yùn)行可能出現(xiàn)兼容性問(wèn)題 。如一些對(duì)硬件直接訪問(wèn)要求高的軟件。
應(yīng)用場(chǎng)景
- 開(kāi)發(fā)測(cè)試:開(kāi)發(fā)人員可創(chuàng)建多個(gè)不同操作系統(tǒng)和環(huán)境的虛擬機(jī),測(cè)試軟件兼容性、穩(wěn)定性 。如開(kāi)發(fā)跨平臺(tái)軟件,在Windows、Linux、macOS虛擬機(jī)分別測(cè)試。
- 服務(wù)器整合:企業(yè)數(shù)據(jù)中心用虛擬機(jī)整合服務(wù)器,將多個(gè)應(yīng)用部署在一臺(tái)物理服務(wù)器的不同虛擬機(jī),提高資源利用率,降低能耗和管理成本 。
- 多操作系統(tǒng)體驗(yàn):用戶可在一臺(tái)計(jì)算機(jī)體驗(yàn)多個(gè)操作系統(tǒng),無(wú)需更換硬件 。如在Windows主機(jī)安裝Linux虛擬機(jī)。
- 軟件演示和培訓(xùn):制作包含特定軟件和數(shù)據(jù)的虛擬機(jī)文件,方便軟件演示和培訓(xùn),保證環(huán)境一致性 。
- 安全隔離:用于隔離危險(xiǎn)或不可信程序,防止對(duì)主機(jī)系統(tǒng)造成損害 。如運(yùn)行來(lái)源不明軟件或進(jìn)行安全測(cè)試。
兩類實(shí)現(xiàn)
對(duì)物理資源的控制權(quán) | 直接運(yùn)行在硬件之上,能直接控制和分配物理資源 | 運(yùn)行在Host OS之上,依賴于Host OS為其分配物理資源 |
資源分配方式 | 在安裝Guest OS時(shí),VMM在原本的硬盤(pán)上自行分配存儲(chǔ)空間,類似“外核”分配方式,分配未經(jīng)抽象的物理硬件 | Guest OS擁有自己的虛擬磁盤(pán)(本質(zhì)是Host OS文件系統(tǒng)中的大文件),分配到的內(nèi)存是虛擬內(nèi)存 |
性能 | 性能更好 | 性能更差,需Host OS作為“中介” |
可支持的虛擬機(jī)數(shù)量 | 更多,無(wú)需與Host OS競(jìng)爭(zhēng)資源,相同硬件資源可支持更多虛擬機(jī) | 更少,Host OS及之上運(yùn)行的其他進(jìn)程需占用物理資源,限制虛擬機(jī)數(shù)量 |
虛擬機(jī)的可遷移性 | 更差 | 更好,只需導(dǎo)出虛擬機(jī)鏡像文件即可遷移到另一臺(tái)Host OS上,商業(yè)化應(yīng)用更廣泛 |
運(yùn)行模式 | 運(yùn)行在最高特權(quán)級(jí)(Ring 0),可執(zhí)行最高特權(quán)指令 | 部分運(yùn)行在用戶態(tài)、部分運(yùn)行在內(nèi)核態(tài)。Guest OS系統(tǒng)調(diào)用被VMM截獲,轉(zhuǎn)化為VMM對(duì)Host OS的系統(tǒng)調(diào)用 |
操作系統(tǒng)(Operating System,簡(jiǎn)稱 OS)是管理計(jì)算機(jī)硬件與軟件資源的核心程序,是用戶與硬件之間的橋梁,也是計(jì)算機(jī)系統(tǒng)的核心組成部分。