課本第十章、第十一章內容學習如下:
第十章 虛擬機器技術
(1)CPU的虛擬化
CPU虛擬化是一種關鍵技術,允許在單臺物理計算機上執行多個虛擬機器(Virtual Machine, VM),每個虛擬機器都可獨立執行作業系統和應用程式。CPU虛擬化的核心目標是提升計算資源利用率和靈活性,同時確保虛擬機器間的隔離性和效能一致性。
在傳統計算環境中,作業系統和應用程式直接執行於物理硬體之上。而在虛擬化環境中,透過虛擬機器監視器(Hypervisor),物理硬體與虛擬機器之間形成一個抽象層,該層負責管理和排程物理資源,並協調虛擬機器與硬體的互動。
CPU虛擬化依賴於現代CPU提供的虛擬化擴充套件(Virtualization Extensions),包括以下關鍵技術:
- 虛擬機器控制結構(VMCS)
VMCS是一種資料結構,用於儲存和管理虛擬機器的狀態資訊,包括暫存器值、記憶體對映、中斷處理等。VMCS使虛擬機器監視器和虛擬機器之間能夠快速進行狀態切換,降低虛擬化操作的開銷。 - 虛擬化指令集(VMX)
虛擬化指令集提供了專用的指令,用於啟用和管理CPU的虛擬化模式。這些指令可以高效地完成虛擬機器監視器與虛擬機器之間的模式切換,同時支援捕獲和處理虛擬機器執行的特定指令。 - 虛擬化I/O介面(VirtIO)
VirtIO是一種高效通訊介面,支援虛擬機器直接訪問物理裝置。它提供標準化的裝置驅動程式和協議,使虛擬機器能夠高效地與硬體互動,同時減少傳統I/O虛擬化的效能損耗。
CPU虛擬化的主要優勢包括:
- 資源利用率提升: 多個虛擬機器可共享同一臺物理計算機,大幅提高硬體資源的使用效率。
- 靈活性和可擴充套件性: 動態分配和調整計算資源,快速建立和刪除虛擬機器,適應多樣化的需求。
- 隔離性和安全性: 虛擬機器之間完全隔離,執行環境互不干擾,增強安全性。
- 便捷性: 支援虛擬機器的快速部署、遷移和備份,降低系統管理的複雜度和成本。
(2)Linux記憶體的虛擬化
Linux記憶體虛擬化透過抽象實體記憶體資源,為虛擬機器提供獨立的記憶體管理機制,保證虛擬機器的隔離性和執行效率。以下是幾種常見的記憶體虛擬化技術:
- 完全虛擬化(Full Virtualization)
在完全虛擬化環境中,虛擬機器監視器利用硬體虛擬化擴充套件,將實體記憶體分割為多個虛擬記憶體空間,每個虛擬機器擁有獨立的虛擬記憶體檢視。虛擬機器監視器負責記憶體分配、對映和管理,確保虛擬機器執行的透明性。 - 半虛擬化(Para-virtualization)
半虛擬化要求虛擬機器作業系統經過改造,與虛擬機器監視器直接協作。雖然需要對作業系統進行修改,但可以實現更高的效能,尤其是在處理頻繁的記憶體訪問操作時。 - 記憶體超分(Memory Overcommitment)
記憶體超分技術允許虛擬機器分配的記憶體總量超過實體記憶體容量。這種技術依賴於記憶體頁面共享(Page Sharing)、記憶體壓縮(Memory Compression)和交換(Swapping)等機制,從而提高記憶體利用率。但需要謹慎管理,避免因資源爭用導致效能下降。 - 記憶體熱插拔(Memory Hotplug)
記憶體熱插拔支援在虛擬機器執行期間動態調整記憶體分配。透過增加或移除記憶體資源,提升了虛擬機器的靈活性和適應能力。
(3)I/O的虛擬化
I/O虛擬化是虛擬機器技術的另一個重要領域,透過對輸入/輸出操作的抽象和管理,使虛擬機器能夠高效地使用物理裝置,同時保證隔離性和安全性。
主要技術包括:
- 虛擬裝置驅動程式
透過虛擬化驅動程式模擬常見物理裝置(如硬碟、網路卡等),虛擬機器可以透明地使用這些虛擬裝置,避免對底層硬體的直接依賴。 - 直接裝置分配(Direct Device Assignment)
允許將特定的物理裝置直接分配給某個虛擬機器,實現接近原生的效能。這種方法通常應用於需要高效能裝置訪問的場景,如GPU虛擬化。 - VirtIO
提供了一套標準介面,用於簡化虛擬機器與物理裝置的互動過程,同時提升資料傳輸效率,減少虛擬化帶來的效能損耗。 - I/O排程與管理
虛擬機器監視器負責最佳化I/O請求的排程策略,確保多虛擬機器環境中的I/O效能平衡和公平性。
I/O虛擬化的優勢包括:
- 資源共享: 多個虛擬機器共享物理裝置,降低硬體投入成本。
- 靈活擴充套件: 根據負載需求動態調整I/O頻寬與裝置分配。
- 安全與隔離: 虛擬機器間的I/O請求獨立,避免因錯誤或惡意操作造成干擾。
第十一章 Linux容器技術
(1)chroot技術
chroot 是最早的作業系統級虛擬化技術之一,透過更改程序的根目錄,將其隔離在一個受限的檔案系統環境中,從而實現基本的隔離。
應用場景:
- 系統修復與恢復
- 開發與測試的獨立環境
- 提供基本的程序隔離
侷限性:
- 僅能隔離檔案系統,無法限制其他資源。
- 在高許可權程序下可能被突破,需要額外的安全措施。
(2)Namespace技術
Namespace提供了Linux核心級別的資源隔離能力,支援獨立管理程序ID、網路、檔案系統等資源。
- PID名稱空間:隔離程序ID
- 網路名稱空間:隔離網路資源
- 檔案系統名稱空間:獨立的檔案系統掛載點
- IPC名稱空間:隔離程序間通訊資源
(3)cgroups技術
cgroups(Control Groups)負責對資源進行分組管理,可限制資源使用、調整優先順序並進行監控,是容器化技術的核心之一。
主要功能:
- 限制資源使用:避免資源搶佔
- 優先順序排程:關鍵任務優先分配
- 資料監控:最佳化資源配置
總結:
虛擬化與容器技術在現代計算中已成為主流,二者的結合進一步推動了雲端計算和微服務架構的發展。