国产线精品视频在线观看-国产系列在线亚洲视频-国产系列视频二区-国产午夜在线视频-亚欧日韩毛片在线看免费网站-亚欧免费观看在线观看更新

新聞動態(tài) News
搜索 Search

深入理解虛擬化

2023/1/1 23:04:44      點擊:

什么是虛擬化

虛擬化技術(shù)是云計算的根基,在計算機技術(shù)中,虛擬化(技術(shù))虛擬技術(shù)(英語:Virtualization)是一種資源管理技術(shù),是將計算機的各種實體資源(CPU、內(nèi)存、磁盤空間、網(wǎng)絡(luò)適配器等),予以抽象、轉(zhuǎn)換后呈現(xiàn)出來并可供分割、組合為一個或多個電腦配置環(huán)境。由此,打破實體結(jié)構(gòu)間的不可切割的障礙,使用戶可以比原本的配置更好的方式來應(yīng)用這些電腦硬件資源。這些資源的新虛擬部分是不受現(xiàn)有資源的架設(shè)方式,地域或物理配置所限制。一般所指的虛擬化資源包括計算(CPU+內(nèi)存),網(wǎng)絡(luò),存儲。


虛擬化的本質(zhì)

虛擬化本質(zhì)是指資源的抽象化,要想資源充分利用,必須把資源最小單位化(池化),這樣上層才能按需使用資源,虛擬化不但解放了操作系統(tǒng),也解放了物理硬件,大大提高了資源的利用率。



  • 虛擬化管理程序Hypervisor(VMM),位于虛擬機與底層硬件設(shè)備之間的虛擬層,直接運行于硬件設(shè)備之上,負責對硬件資源進行抽象,為上層虛擬機提供運行環(huán)境所需資源,并使每個虛擬機都能夠互不干擾、相互獨立地運行于同一個系統(tǒng)中。

虛擬化主要分為幾大類:

  • 計算虛擬化,針對CPU和內(nèi)存資源虛擬化技術(shù)。
  • 網(wǎng)絡(luò)虛擬化,針對網(wǎng)絡(luò)鏈路資源虛擬化技術(shù)。
  • IO虛擬化,針對IO資源虛擬化技術(shù)。
  • 存儲虛擬化,針對磁盤存儲資源虛擬化技術(shù)。


計算虛擬化


計算虛擬化通過虛擬化管理程序(Hypervisor或VMM)將物理服務(wù)器的硬件資源與上層應(yīng)用進行解耦,形成統(tǒng)一的計算資源池,然后可彈性分配給邏輯上隔離的虛擬機共享使用。如圖2、基于VMM所在位置與虛擬化范圍可以分三種類型。



容器(應(yīng)用級):容器是一種更加輕量的應(yīng)用級虛擬化技術(shù),將應(yīng)用的可執(zhí)行文件及其所需的運行時環(huán)境與依賴庫打包,實現(xiàn)一次構(gòu)建,到處運行的目標。相比虛擬化,容器技術(shù)多了容器引擎層(如Docker),但上層應(yīng)用無需與Guest OS綁定,可以實現(xiàn)秒級部署、跨平臺遷移,靈活的資源分配,彈性調(diào)度管理等優(yōu)勢。容器、微服務(wù)與DevOps為云原生的三大要素,是推動企業(yè)技術(shù)中臺建設(shè)與微服務(wù)化轉(zhuǎn)型不可或缺的組件。


實現(xiàn)-KVM


KVM是基于虛擬化擴展(Intel VT 或者 AMD-V)的 X86 硬件的開源的 Linux 原生的全虛擬化解決方案。KVM 中,虛擬機被實現(xiàn)為常規(guī)的 Linux 進程,由標準 Linux 調(diào)度程序進行調(diào)度;虛機的每個虛擬 CPU 被實現(xiàn)為一個常規(guī)的 Linux 進程。這使得 KMV 能夠使用 Linux 內(nèi)核的已有功能。

但是,KVM 本身不執(zhí)行任何硬件模擬,需要客戶空間程序通過 /dev/kvm 接口設(shè)置一個客戶機虛擬服務(wù)器的地址空間,向它提供模擬的 I/O,并將它的視頻顯示映射回宿主的顯示屏。目前這個應(yīng)用程序是 QEMU。



  • Guest:客戶機系統(tǒng),包括CPU(vCPU)、內(nèi)存、驅(qū)動(Console、網(wǎng)卡、I/O 設(shè)備驅(qū)動等),被 KVM 置于一種受限制的 CPU 模式下運行。
  • KVM:運行在內(nèi)核空間,提供CPU 和內(nèi)存的虛級化,以及客戶機的 I/O 攔截。Guest 的 I/O 被 KVM 攔截后,交給 QEMU 處理。
  • QEMU:修改過的為 KVM 虛機使用的 QEMU 代碼,運行在用戶空間,提供硬件 I/O 虛擬化,通過 IOCTL /dev/kvm 設(shè)備和 KVM 交互。


KVM依賴的Intel/AMD 處理器的各種虛擬化擴展

處理器 CPU 虛擬化 內(nèi)存虛擬化 PCI Pass-through
Intel VT-x VPID,EPT VT-d
AMD AMD-V ASID,NPT IOMMU


內(nèi)存虛擬化



除了CPU虛擬化,另一個關(guān)鍵是內(nèi)存虛擬化,通過內(nèi)存虛擬化共享物理系統(tǒng)內(nèi)存,動態(tài)分配給虛擬機。虛擬機的內(nèi)存虛擬化很象現(xiàn)在的操作系統(tǒng)支持的虛擬內(nèi)存方式,應(yīng)用程序看到鄰近的內(nèi)存地址空間,這個地址空間無需和下面的物理機器內(nèi)存直接對應(yīng),操作系統(tǒng)保持著虛擬頁到物理頁的映射。

實現(xiàn)

現(xiàn)在所有的 x86 CPU 都包括了一個稱為內(nèi)存管理的模塊MMU(Memory Management Unit)和 TLB(Translation Lookaside Buffer),通過MMU和TLB來優(yōu)化虛擬內(nèi)存的性能。

KVM中,虛機的物理內(nèi)存即為 qemu-kvm 進程所占用的內(nèi)存空間。KVM 使用 CPU 輔助的內(nèi)存虛擬化方式。在 Intel 和 AMD 平臺,其內(nèi)存虛擬化的實現(xiàn)方式分別為:

  • AMD 平臺上的 NPT (Nested Page Tables) 技術(shù)
  • Intel 平臺上的 EPT (Extended Page Tables)技術(shù)

EPT 和 NPT采用類似的原理,都是作為 CPU 中新的一層,用來將客戶機的物理地址翻譯為主機的物理地址。關(guān)于 EPT, Intel 官方文檔中的技術(shù)如下:



EPT的好處是,它的兩階段記憶體轉(zhuǎn)換,特點就是將 Guest Physical Address → System Physical Address,VMM不用再保留一份 SPT (Shadow Page Table),以及以往還得經(jīng)過 SPT 這個轉(zhuǎn)換過程。除了降低各部虛擬機器在切換時所造成的效能損耗外,硬體指令集也比虛擬化軟體處理來得可靠與穩(wěn)定。


I/O虛擬化

I/O虛擬化(Input/output virtualization,簡稱IOV)是虛擬化的一種新形式,是來自物理連接或物理運輸上層協(xié)議的抽象,讓物理服務(wù)器和虛擬機可以共享I/O資源。

I/O虛擬化實現(xiàn)



I/O 虛擬化方案的選擇:

  • I/O設(shè)備盡量使用準虛擬化(virtio 和 vhost_net)
  • 如果需要實時遷移,不能使用 SR-IOV
  • 對更高I/O要求又不需要實時遷移的,可以使用 SR-IOV
  • 每種方案都有優(yōu)勢和不足,在特定環(huán)境下其性能有可能反而下降,因此在生產(chǎn)環(huán)境中使用各種虛擬化方式前需要經(jīng)過完整測試


網(wǎng)絡(luò)虛擬化



網(wǎng)絡(luò)虛擬化 (NV) 是指將傳統(tǒng)上在硬件中交付的網(wǎng)絡(luò)資源抽象化到軟件中。NV 可以將多個物理網(wǎng)絡(luò)整合為一個基于軟件的虛擬網(wǎng)絡(luò),或者可以將一個物理網(wǎng)絡(luò)劃分為多個隔離和獨立的虛擬網(wǎng)絡(luò)。


傳統(tǒng)網(wǎng)絡(luò)

  • 在傳統(tǒng)網(wǎng)絡(luò)環(huán)境中,一臺物理主機包含一個或多個網(wǎng)卡(NIC),要實現(xiàn)與其他物理主機之間的通信,需要通過自身的 NIC 連接到外部的網(wǎng)絡(luò)設(shè)施,如交換機上。
  • 這種架構(gòu)下,為了對應(yīng)用進行隔離,往往是將一個應(yīng)用部署在一臺物理設(shè)備上,這樣會存在兩個問題,
    1)是某些應(yīng)用大部分情況可能處于空閑狀態(tài),
    2)是當應(yīng)用增多的時候,只能通過增加物理設(shè)備來解決擴展性問題。不管怎么樣,這種架構(gòu)都會對物理資源造成極大的浪費。


虛擬化網(wǎng)絡(luò)

其中虛擬機與虛擬機之間的通信,由虛擬交換機完成,虛擬網(wǎng)卡和虛擬交換機之間的鏈路也是虛擬的鏈路,整個主機內(nèi)部構(gòu)成了一個虛擬的網(wǎng)絡(luò),如果虛擬機之間涉及到三層的網(wǎng)絡(luò)包轉(zhuǎn)發(fā),則又由另外一個角色——虛擬路由器來完成。

虛擬化網(wǎng)絡(luò)實現(xiàn)

虛擬交換機-OVS

Open vSwitch 是在開源 Apache 2 許可下獲得許可的多層軟件交換機。我們的目標是實現(xiàn)一個生產(chǎn)質(zhì)量交換平臺,該平臺支持標準管理接口,并將轉(zhuǎn)發(fā)功能開放給程序化擴展和控制。非常適合用作 VM 環(huán)境中的虛擬交換機。除了向虛擬網(wǎng)絡(luò)層公開標準控制和可見性接口外,它還旨在支持跨多個物理服務(wù)器的分布。支持多種基于 Linux 的虛擬化技術(shù),包括 Xen/XenServer、KVM 和 VirtualBox.




  • datapath是負責數(shù)據(jù)交換的內(nèi)核模塊,其從網(wǎng)口讀取數(shù)據(jù),并快速匹配Flowtable中的流表項,成功的直接轉(zhuǎn)發(fā),失敗的上交vswitchd處理。它在初始化和port binding的時候注冊鉤子函數(shù),把端口的報文處理接管到內(nèi)核模塊。
  • vswitchd是一個守護進程,是ovs的管理和控制服務(wù),通過unix socket將配置信息保存到ovsdb,并通過netlink和內(nèi)核模塊交互。
  • ovsdb則是ovs的數(shù)據(jù)庫,保存了ovs配置信息。


虛擬網(wǎng)絡(luò)實現(xiàn)技術(shù)-Overlay

當前主流overlay技術(shù)是 GRE 和 VXLAN技術(shù). 通過增加擴展報文頭來實現(xiàn)虛擬網(wǎng)絡(luò)在物理網(wǎng)絡(luò)之上傳輸報文。

GRE

網(wǎng)絡(luò)虛擬化使用通用路由封裝 (NVGRE) 作為虛擬化 IP 地址的機制。在 NVGRE 中,虛擬機的數(shù)據(jù)包封裝在另一個數(shù)據(jù)包中。此新 NVGRE 格式數(shù)據(jù)包的標頭具有相應(yīng)的源和目標提供程序區(qū)域 (PA) IP 地址。此外,它還具有 VSID (24 位虛擬子網(wǎng) ID) ,該 ID 存儲在新數(shù)據(jù)包的 GRE 標頭中。

VXLAN


Virtual eXtensible Local Area Network (VXLAN) 是一種將2層報文封裝到UDP包(Mac in UDP)中進行傳輸?shù)囊环N封裝協(xié)議。VXLAN主要是由Cisco推出的,VXLAN的包頭有一個24bit的ID段,即意味著1600萬個獨一無二的虛擬網(wǎng)段,這個ID通常是對UDP端口采取偽隨機算法而生成的(UDP端口是由該幀中的原始MAC Hash生成的)。這樣做的好處是可以保證基于5元組的負載均衡,保存VM之間數(shù)據(jù)包的順序。

容器網(wǎng)絡(luò)實現(xiàn)

CNI(Container Network Interface) 是 google 和 CoreOS 主導制定的容器網(wǎng)絡(luò)標準,它 是在 RKT 網(wǎng)絡(luò)提議 的基礎(chǔ)上發(fā)展起來的,綜合考慮了靈活性、擴展性、IP分配、多網(wǎng)卡等因素。CNI旨在為容器平臺提供網(wǎng)絡(luò)的標準化。不同的容器平臺(比如目前的 Kubernetes、Mesos 和 RKT)能夠通過相同的接口調(diào)用不同的網(wǎng)絡(luò)組件。這個協(xié)議連接了兩個組件:容器管理系統(tǒng)和網(wǎng)絡(luò)插件,具體的事情都是插件來實現(xiàn)的,包括:創(chuàng)建容器網(wǎng)絡(luò)空間(network namespace)、把網(wǎng)絡(luò)接口(interface)放到對應(yīng)的網(wǎng)絡(luò)空間、給網(wǎng)絡(luò)接口分配 IP 等。

Kubernetes本身并不負責網(wǎng)絡(luò)通信,Kubernetes提供了容器網(wǎng)絡(luò)接口CNI(Container Network Interface),具體的網(wǎng)絡(luò)通信交給CNI插件來負責,開源的CNI插件非常多,像Flannel、Calico等

容器網(wǎng)絡(luò)實現(xiàn)


存儲虛擬化

存儲虛擬化(Storage Virtualization)最通俗的理解就是對存儲硬件資源進行抽象化表現(xiàn)。構(gòu)建具有統(tǒng)一邏輯視圖的存儲資源池供用戶按需使用。存儲虛擬化將各個分散的存儲系統(tǒng) 進行整合和統(tǒng)一管理,并提供了方便用戶調(diào)用資源的接口。另外,存儲虛擬化能夠為后續(xù)的系統(tǒng)擴容提供便 利,使資源規(guī)模動態(tài)擴大時無需考慮新增的物理存儲資源(如不同型號的存儲設(shè)備)之間可能存在的差異。

實現(xiàn)

存儲虛擬化的實現(xiàn)方式:
(1) 裸金屬+邏輯卷
(2) 存儲設(shè)備虛擬化
(3) 主機存儲虛擬化+文件系統(tǒng)

存儲虛擬化分類


文件、塊和對象是三種以不同的方式來保存、整理和呈現(xiàn)數(shù)據(jù)的存儲格式。這些格式各有各的功能和限制。

  • 文件存儲會以文件和文件夾的層次結(jié)構(gòu)來整理和呈現(xiàn)數(shù)據(jù);
  • 塊存儲會將數(shù)據(jù)拆分到任意劃分且大小相同的卷中;
  • 對象存儲會管理數(shù)據(jù)并將其鏈接至關(guān)聯(lián)的元數(shù)據(jù)。
  • 塊存儲:即提供裸的塊設(shè)備服務(wù),裸設(shè)備什么都沒有,需要用戶自己創(chuàng)建分區(qū)、創(chuàng)建文件系統(tǒng)、掛載到操作系統(tǒng)才能用,掛一個塊存儲設(shè)備到操作系統(tǒng),相當于插一個新U盤。只實現(xiàn)了read、write、ioctl等接口。SAN、LVM、Ceph RBD、OpenStack Cinder等都屬于塊存儲服務(wù)。
  • 文件存儲:可以簡單理解為分布式文件系統(tǒng),通常實現(xiàn)了POSIX接口,不需要安裝文件系統(tǒng),直接像NFS一樣掛載到操作系統(tǒng)就能用。典型的文件存儲如NAS、HDFS、CephFS、GlusterFS、OpenStack Manila等。
  • 對象存儲:提供Web存儲服務(wù),通過HTTP協(xié)議訪問,只需要Web瀏覽器即可使用,不需要掛載到本地操作系統(tǒng),實現(xiàn)的接口如GET、POST、DELETE等,典型的對象存儲如百度網(wǎng)盤、S3、OpenStack Swift、Ceph RGW等。


虛擬化管理工具

虛擬化管理工具是指與虛擬化環(huán)境及背后的實體硬件對接的軟件,它的作用是簡化資源管理、分析數(shù)據(jù)并簡化運維。每個虛擬化管理系統(tǒng)都各不相同,但大多數(shù)系統(tǒng)都會提供簡單的用戶界面,還能簡化虛擬機(VM)創(chuàng)建流程、監(jiān)控虛擬環(huán)境、分配資源、編譯報告,以及自動執(zhí)行規(guī)則。



libvirt是一套用于管理硬件虛擬化的開源API、守護進程與管理工具。此套組可用于管理KVM、Xen、VMware ESXi、QEMU及其他虛擬化技術(shù)。libvirt內(nèi)置的API廣泛用于云解決方案開發(fā)中的虛擬機監(jiān)視器編排層(Orchestration Layer)。

文章來源:@請叫我大師兄,如涉及到版權(quán)問題,請聯(lián)系網(wǎng)站管理員刪除!