虛擬化-總覽
虛擬化技術是雲端計算的基礎,我們在各種雲平臺可以購買 IaaS(基礎設施即服務) 的雲伺服器,包括但不侷限於 ECS,VPS
等,這些雲伺服器可以自選配置,動態調整 cpu 核數、記憶體大小、甚至是硬碟大小、網路卡數量等。他們底層的實現原理是虛擬化技術。
虛擬化技術的分類
根據虛擬的資源進行劃分可以分為作業系統虛擬化和平臺虛擬化:
- 作業系統虛擬化: 如果把作業系統及其提供的系統呼叫作為資源,那麼虛擬化表現為作業系統虛擬化,比如docker。
- 平臺虛擬化: 如果把整個 X86 平臺包括處理器、記憶體、外設等硬體作為資源,在虛擬的 x86 平臺之上可以安裝完整的作業系統,比如 virtualbox。
虛擬化技術的實現也有很多種方式,比如軟體虛擬化和硬體虛擬化。實現虛擬化的關鍵在於虛擬化層能夠截獲計算元件對物理資源的直接訪問,並將它重新定位到虛擬資源池中。
- 軟體虛擬化: 軟體虛擬化是通過純軟體的方式在現有的物理平臺實現對物理平臺訪問的截獲和模擬,比如 QEMU 便支援軟體虛擬化,它可以通過純軟體模擬 X86 平臺處理器的取值、解碼和執行,客戶機所有的操作都由軟體翻譯後再執行到真實的物理平臺。
- 硬體虛擬化: 物理平臺本身提供了對特殊指令的截獲和重定向的硬體支援,比如 intel 的 VT-x。
根據客戶機是否需要進行特殊的改動可以分為部分虛擬化和完全虛擬化。
- 部分虛擬化(para-virtualization): 部分虛擬化實現上可能存在較大的效能損失,但如果改動客戶機作業系統,讓他知道自己執行在虛擬環境下,從而可以對部分操作(比如IO)優化與宿主機的通訊,從而提升效能。這個技術爭議的地方在於需要對客戶機的作業系統進行改動。
- 全虛擬化(full virtualization): 全虛擬化技術為客戶機提供了完整的虛擬 x86 平臺,包括處理器、記憶體和外設,支援執行任何理論上可以在真是物理機上執行的作業系統,不需要針對客戶機作業系統進行修改即可使用。
KVM 介紹
當前主流雲端計算平臺使用多是 KVM 技術,它是 Linux 原生支援的全虛擬化解決方案,程式碼已經內建 linux 核心原始碼中。在 KVM 架構中,虛擬機器實現為常規的 linux 程式,每個虛擬 CPU 為一個常規的 linux 程式。通常 KVM 需要和 硬體虛擬化軟體一同工作,比如同 libvirt、QEMU 一同工作。
當我們在阿里雲的 ECS 中檢視機器的 PCI 裝置時,可以發現部分裝置的描述為Red Hat, Inc. Virtio network device
,這便是使用功能 libvirt 虛擬化了網路卡、塊儲存等硬體裝置。
Last login: Sun Sep 13 16:12:24 2020 from xxx.xxx.xxx.xxx
aliyun@localhost:~$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device
00:04.0 Communication controller: Red Hat, Inc. Virtio console
00:05.0 SCSI storage controller: Red Hat, Inc. Virtio block device
00:06.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon
在 QEMU/KVM 中,客戶機可以使用的裝置大致分為三種型別:
- 模擬裝置(Emulated device):QEMU 通過純軟體方法模擬的裝置,如 QEMU 的經典模擬網路卡 e1000、rtl8139;
- 半虛擬化裝置(virtio device): 實現 VIRTIO API 的半虛擬化驅動裝置;
- 裝置直接分配(VT-d):即硬體穿透。
Reference
相關文章
- 虛擬化四、KVM虛擬化技術
- 啥是伺服器虛擬化,虛擬化的優勢伺服器
- 伺服器虛擬化基礎知識:如何虛擬化?伺服器
- 淺談GPU虛擬化技術(四)- GPU分片虛擬化GPU
- 淺談GPU虛擬化技術(四)-GPU分片虛擬化GPU
- 玩玩虛擬化-KVM
- 什麼是伺服器虛擬化,虛擬化的優勢!伺服器
- 淺談GPU虛擬化技術:GPU圖形渲染虛擬化GPU
- 網路虛擬化之linux虛擬網路基礎Linux
- 【原創】Linux虛擬化KVM-Qemu分析(六)之中斷虛擬化Linux
- 【原創】Linux虛擬化KVM-Qemu分析(七)之timer虛擬化Linux
- 虛擬機器去虛擬化過魯大師教程虛擬機
- 說透 Docker:虛擬化Docker
- 什麼是虛擬化?
- 虛擬化的操作技巧
- 虛擬化——VMware ESXi(二)
- VMWARE ESX SERVER虛擬化資料恢復過程總結Server資料恢復
- 【原創】Linux虛擬化KVM-Qemu分析(四)之CPU虛擬化(2)Linux
- 【原創】Linux虛擬化KVM-Qemu分析(二)之ARMv8虛擬化Linux
- 【原創】Linux虛擬化KVM-Qemu分析(五)之記憶體虛擬化Linux記憶體
- 虛擬化環境配置指南
- 虛擬化存在的問題
- 部署KVM虛擬化平臺
- 伺服器虛擬化 - PVE伺服器
- KVM虛擬化平臺管理
- 虛擬化技術概述(一)
- KVM虛擬化環境搭建
- 反虛擬機器技術總結虛擬機
- 虛擬化技術之kvm虛擬機器建立工具virt-install虛擬機
- 虛擬化技術之kvm虛擬機器建立工具qemu-kvm虛擬機
- 在Linux中,什麼是虛擬化?並且列出常見的虛擬化技術。Linux
- WPF效能最佳化之UI虛擬化UI
- VMware Workstation 開啟虛擬化引擎
- 吃透什麼是KVM虛擬化
- Linux虛擬化平臺檢測Linux
- 網路虛擬化技術棧
- VMware虛擬機器優化,提高虛擬機器執行速度的方法?虛擬機優化
- 伺服器物理機使用ESXI虛擬化並劃分虛擬機器伺服器虛擬機