虛擬化是在一臺物理計算機上同時運行多個虛擬操作系統實例的技術。虛擬操作系統上運行的這些實例被稱為虛擬機(Virtual Machine)或者客戶機(Guest Machine)。每個虛擬機都具備完整的硬件抽象,包括CPU、內存、網絡適配器和磁盤等,它們可以獨立運行在自己的操作系統和應用程序,互不干擾。
為什么需要虛擬化?
虛擬化技術提供了更靈活、高效和可管理的計算環境,適應了現代計算需求的變化和復雜性。其必要性體現在以下幾個方面。
- 提升資源利用率:虛擬化通過在一臺物理計算機上同時運行多個虛擬機,每個虛擬機運行獨立的應用負載,可以有效地提升硬件資源的利用率,進而降低成本。
- 屏蔽硬件差異: 憑借虛擬化對底層硬件的抽象,使得虛擬機可以在不同的硬件平臺上運行而無需修改,從而使得在不同環境中輕松部署和管理應用負載成為可能。
- 提供資源隔離能力: 虛擬化技術確保每個虛擬機都被隔離開來,互不干擾。這種資源隔離性使得在同一臺物理機上運行的不同應用或服務可以相互獨立地操作,提高了系統的穩定性和安全性,在多個租戶共享同一臺物理機的情況下這個能力尤為重要。
- 部署的靈活性:虛擬化允許快速創建、復制和部署虛擬機,大大減少了新系統或應用程序的部署時間。這對于應對業務需求的變化或快速擴展計算能力至關重要。
虛擬化和容器化的區別是什么?
從整體來看:
- 虛擬化提供給客戶的是一個完整的虛擬計算環境,客戶指定虛擬機的規格和操作系統鏡像,在此基礎上部署自己的業務應用程序和模塊。
- 容器化是應用程序級別的虛擬化,通過將應用程序及其部署、運行所依賴的庫、配置整體打包成容器鏡像,可以實現應用程序的跨平臺部署和運行。
從資源隔離的視角來看:
- 虛擬化提供操作系統級別的硬件隔離,從CPU到內存再到操作系統,不同虛擬機之間完全隔離。
- 容器化提供了進程級別的軟件隔離,容器之間共享操作系統的內核和系統資源,通過命名空間和控制組實現了邏輯上的互相獨立。
但在實際應用中,虛擬化和容器化可以互相為正交關系。即客戶可以購買虛擬機并在虛擬機上部署自己的容器化業務,也可以直接購買彈性容器實例 ECI(Elastic Container Instance)等虛擬機容器實例(一臺虛擬機上只運行一個容器),兼容容器化運維體驗的同時擁有硬件級別隔離的安全能力。
虛擬化有哪些實際應用?
一個簡單的場景,客戶A需要一個g7i.2xlarge的suse系統來運行它的Java類在線應用,客戶B需要一個g7i.4xlarge的Windows Server來運行Sqlserver,我們可以將這兩個實例裝箱到一臺宿主機上運行,A和B客戶因為運行了兩套完全獨立的操作系統和應用,他們之間的底層資源在硬件層面也是通過虛擬化達到完全隔離,所以兩個業務不會互相干擾。另一方面,他們按需做了業務的部署和算力容量的分配,從而使得各自以及整體的資源利用率能夠盡可能的最大化。
虛擬化的技術原理是什么?
本質上,虛擬化技術通過了硬件或者軟件提供了資源模擬和資源隔離兩個最基礎的能力,在此基礎上可以構建豐富的功能,并不斷優化性能與穩定性體驗。
-
資源模擬
宿主機的某些硬件資源具有全局性和唯一性,因此虛擬機不能直接訪問,否則會影響宿主機的穩定性。當虛擬機執行訪問該資源的指令時,Hypervisor會通過截獲和模擬的方式完成虛擬機的指令執行。設備模擬的實現機制可以從兩個維度分類。
- 從實現主體來看,分為軟件虛擬化和硬件輔助虛擬化。前者完全由軟件模擬設備行為,存在一定的性能損耗,后者將功能部分卸載或者完全卸載到硬件,因此有更好的性能。
- 從Guest是否感知的視角來看,分為全虛擬化和半虛擬化。前者無需客戶感知底層是物理機和虛擬機,后者可以讓Guest明確感知底層的虛擬化架構和能力,因此可以對設備模擬的實現進行優化或者模擬現實不存在的設備,帶來更好的虛擬化性能。
-
資源隔離
資源隔離是云計算提供多租能力的基礎,利用虛擬化技術可以提供CPU隔離、內存隔離、存儲隔離和網絡隔離的能力,確保客戶的業務數據安全。
- CPU和內存隔離一般基于CPU廠商提供的硬件輔助虛擬化能力來實現。以Intel平臺為例,通過VT-x技術為每個vCPU構建獨立的運行狀態集,不同虛擬機之間無法獲取對方的vCPU狀態,也無法影響宿主機的運行。通過EPT(Extended Page Tables)技術為每個虛擬機構建兩級頁表翻譯機制,第二級頁表只能由Hypervisor來創建,確保不同虛擬機可以訪問的物理內存被嚴格隔離。
- 存儲隔離和網絡隔離有多種實現方式。阿里云基于CIPU芯片實現了云盤和彈性網卡的硬件卸載,通過IOMMU保證了云盤、網卡的IO請求只能訪問所屬虛擬機的內存。存儲虛擬化系統提供虛擬機粒度的IO通道、存儲協議棧、存儲介質全鏈路的數據和QoS隔離能力。網絡虛擬化系統支持虛擬機粒度的網絡帶寬、PPS(Packets Per Second)的QoS(Quality of Service)隔離。不同虛擬網絡(VPC)內的虛擬機實例處于不同的路由平面無法直接進行通信,從而保證了VPC的隔離性。