10月14日,深信服云計(jì)算專家Leijian在信服云《云集技術(shù)學(xué)社》系列直播課上進(jìn)行了《深信服aSV服務(wù)器虛擬化功能及原理》的分享,介紹了服務(wù)器虛擬化的基本原理和深信服aSV服務(wù)器虛擬化特色技術(shù)。以下是他的分享內(nèi)容摘要,想要了解更多可以關(guān)注“深信服科技”公眾號。
看點(diǎn)一:服務(wù)器虛擬化的發(fā)展
從上世紀(jì)60年代開始,服務(wù)器虛擬化經(jīng)歷了60多年的發(fā)展,也有著十分明顯的代際變化。
第一代是基于二進(jìn)制翻譯的全虛擬化,它的典型應(yīng)用是早期的VMware Workstation。核心是通過二進(jìn)制發(fā)育的方式實(shí)現(xiàn)虛擬機(jī)的復(fù)用。
第二代是半虛擬化,它的典型應(yīng)用是Xen,通過修改操作系統(tǒng)內(nèi)核,替換掉不能虛擬化的指令,通過超級調(diào)用(Hypercall)直接和底層的虛擬化層Hypervisor來通訊,Hypervisor 同時也提供了超級調(diào)用接口來滿足其他關(guān)鍵內(nèi)核操作,比如內(nèi)存管理、中斷和時間保持。這種做法省去了全虛擬化中的捕獲和模擬,大大提高了效率。
第三代是硬件輔助虛擬化,核心是在裸金屬上安裝VMware,在上面跑GuestOS指令。有別于上兩代的是,它不用修改任何的GuestOS指令,可以直接運(yùn)行。
看點(diǎn)二:服務(wù)器虛擬化基本原理
01
Qemu-KVM基本原理介紹
深信服目前應(yīng)用的硬件輔助虛擬化是基于Qemu-KVM實(shí)現(xiàn)的。
KVM是內(nèi)核的一個驅(qū)動(kvm.ko),工作在內(nèi)核態(tài)(CPU Ring0),實(shí)際上是Linux內(nèi)核一個標(biāo)準(zhǔn)組件。KVM 內(nèi)核模塊收到該請求后,它先做一些準(zhǔn)備工作,比如將vCPU上下文加載到 VMCS (Virtual Machine Control Structure)等,然后驅(qū)動 CPU 進(jìn)入 VMX Non-Root 模式,開始執(zhí)行客戶機(jī)代碼。
Qemu是一個應(yīng)用程序,工作在用戶態(tài)(User mode 、CPU Ring3),提供外設(shè)的模擬、vCPU模擬、主控邏輯、IO收發(fā)等,當(dāng)GuestOS 需要發(fā)送IO請求、需要發(fā)送網(wǎng)絡(luò)包的時候,都需要調(diào)用VM_Exit讓Qemu協(xié)助實(shí)現(xiàn)。它能夠支持CPU 和 memory 超分、半虛擬化 I/O、熱插拔、對稱多處理、實(shí)時遷移、PCI 設(shè)備直接分配和單根 I/O 虛擬化、內(nèi)核同頁合并、NUMA等多項(xiàng)功能。使用Qemu的云廠商在這些功能配置上都是類似的。
使用Qemu-KVM有三種運(yùn)行模式:
第一種是客戶模式(Guest Ring0~3),可以簡單理解成客戶機(jī)操作系統(tǒng)運(yùn)行在的模式,它本身又分為自己的內(nèi)核模式和用戶模式(CPU工作在 VMX Non-Root Operation)。
第二種是用戶模式(User Ring3),為用戶提供虛擬機(jī)管理的用戶空間工具以及代表用戶執(zhí)行I/O,Qemu運(yùn)行在這個模式之下(CPU工作在VMX Root Operation)。
第三種內(nèi)核模式(System Ring0),模擬CPU以及內(nèi)存,實(shí)現(xiàn)客戶模式的切換,處理從客戶模式的退出,KVM內(nèi)核模塊運(yùn)行在這個模式下(CPU工作在 VMX Root Operation)。
02
Virtio(aTool) 和全虛介紹
Virtio半虛:實(shí)際上是在Qemu和虛擬機(jī)之間設(shè)置一個共享內(nèi)存Vring,當(dāng)有數(shù)據(jù)需要發(fā)送的時候,把數(shù)據(jù)拷貝到共享內(nèi)存Vring中,然后調(diào)用一次VM_Exit退出到Qemu中,Qemu再把這個Vring的數(shù)一次性全部發(fā)出(注意:如果虛擬機(jī)此時在快速發(fā)包,有可能Vring中已經(jīng)緩存了多個包,從而更進(jìn)一步減少了VM_Exit)。這樣可以減少VM_Exit的次數(shù),從而大大提高性能(可以理解成在GuestOS和Qemu之間開了個后門)。
Virtio半虛擬可以獲得很好的I/O性能,比純軟件模擬高于4倍多,其性能幾乎可以達(dá)到和Native(即非虛擬化環(huán)境中的原生系統(tǒng))差不多的I/O性能。所以,在使用KVM之時,如果宿主機(jī)內(nèi)核和客戶機(jī)都支持Virtio的情況下,一般推薦使用Virtio達(dá)到更好的性能。
IO全虛擬:以磁盤或者網(wǎng)絡(luò)為例,當(dāng)虛擬機(jī)有數(shù)據(jù)需要發(fā)送的時候,需要通過Qemu模擬所有的硬件寄存器,虛擬機(jī)OS把這些數(shù)據(jù)填充到模擬的硬件中,然后訪問設(shè)置這些寄存器,觸發(fā)VM_Exit退出,Qemu接收到這些數(shù)據(jù),再把這些數(shù)據(jù)真實(shí)的寫入到磁盤、發(fā)送到網(wǎng)卡。這個過程發(fā)送一個數(shù)據(jù)包,可能要多次設(shè)置寄存器,導(dǎo)致多次退出,從而性能較差。
03
超配原理以及限制介紹
虛擬機(jī)在Hypervisor看來,就是一個配置文件+vDisk文件(配置文件會注明磁盤大小、CPU、內(nèi)存數(shù)量、型號等等基礎(chǔ)信息,這些信息會在虛擬機(jī)啟動的時候,傳遞到虛擬機(jī)啟動參數(shù)),而每個vDISK實(shí)際上在Hypervisor看來就是一個文件。
KVM的vDISK有兩種格式:RAW 和 QCOW2格式。RAW格式性能更高些,但相比QCOW2,RAW不支持快照、精簡分配等特性,故而深信服采用的是QCOW2格式。
對于QCOW2文件,有三種模式:精簡分配、動態(tài)分配(需要底層存儲支持空洞文件)、預(yù)分配模式。其中“預(yù)分配”性能最好,接近于RAW格式的性能,“精簡分配”性能最差,“動態(tài)分配”居中(注意:目前超融合中動態(tài)分配已接近于預(yù)分配性能、aSAN有優(yōu)化)。
對于精簡分配和動態(tài)分配,假設(shè)實(shí)際上是配置文件寫分配2TB,但實(shí)際QCOW2文件占用可能很小(實(shí)際大小取決于真實(shí)數(shù)據(jù)),因而可以超配,即配置的虛擬機(jī)總磁盤大小,大于實(shí)際物理主機(jī)的磁盤大小。
物理主機(jī)虛擬內(nèi)存包含物理內(nèi)存(內(nèi)存條,高速)+ SWAP(硬盤分區(qū)、龜速);物理內(nèi)存不夠時,系統(tǒng)會根據(jù)配置使用SWAP分區(qū)(深信服超融合在平臺上默認(rèn)設(shè)置“盡量不用SWAP”的策略)。vMEM超配本質(zhì)是假設(shè)給虛擬機(jī)分配32G內(nèi)存,虛擬機(jī)實(shí)際占用只了24G,理論上8G(32G-24G=8G)是可以回收的,這回收的部分理論上可以給其他虛擬機(jī)用。此時,就需要用到KSM(沒有安裝aTool的生效)或者氣泡內(nèi)存技術(shù)(安裝了aTool的生效)。但內(nèi)存超配可能會造成系統(tǒng)物理內(nèi)存耗盡,導(dǎo)致系統(tǒng)卡頓的情況。因此,在核心系統(tǒng)上,要控制超分內(nèi)存的比率,或者不要超配。
每個運(yùn)行中的虛擬機(jī)在Hypervisor看來,就是一個系統(tǒng)進(jìn)程,而vCPU是該進(jìn)程的一個線程。同一時刻,每個vCPU線程最多占用一個物理CPU的邏輯核,且多個vCPU之間的同步、調(diào)度會消耗額外的資源(因此,當(dāng)單個虛擬機(jī)的vcpu數(shù)量超過物理主機(jī)的邏輯核時,實(shí)際上會讓虛擬機(jī)的性能反而變低)。
無論vCPU數(shù)量配置多大,總的物理主機(jī)CPU資源是恒定的,因而:
(1)單個虛擬機(jī)最大的配置不要超過物理CPU的核心數(shù)量;
(2)主機(jī)上運(yùn)行所有虛擬機(jī)的總vCPU數(shù)量不能太多,否則調(diào)度消耗會增大。生產(chǎn)環(huán)境最佳實(shí)踐為不超過CPU的邏輯核心的2倍,主要參考真實(shí)生產(chǎn)中物理CPU占用一般不超過20%;超配2倍以后,物理CPU占用40%左右,超配要考慮峰值預(yù)留,且物理CPU占用超過50%以上,已經(jīng)比較繁忙了。
04
熱遷移基本原理介紹
熱遷移分為兩種形式,一種是共享存儲熱遷移,此種熱遷移形式,需要虛擬機(jī)鏡像在共享存儲上,此種遷移類型,只需要通過網(wǎng)絡(luò)發(fā)送客戶機(jī)的vCPU執(zhí)行狀態(tài)、內(nèi)存中的內(nèi)容、虛機(jī)設(shè)備的狀態(tài)到目的主機(jī)上。另一種是跨主機(jī)跨存儲熱遷移,與跨主機(jī)不跨存儲熱遷移類似。不同的是其需要在目的存儲創(chuàng)建相同配置的虛擬機(jī)鏡像(空白的,沒有數(shù)據(jù)),之后仍然是在目的宿主機(jī)上啟動目的端Qemu進(jìn)程, 目的端Qemu鏡像打開新創(chuàng)建的鏡像文件。另外還需要傳送源端虛擬機(jī)的磁盤數(shù)據(jù)到目的端。
看點(diǎn)三:深信服aSV服務(wù)器虛擬化特色技術(shù)
虛擬機(jī)快速備份
通過快速的無代理磁盤備份保護(hù)您的數(shù)據(jù),使用增量備份減少備份所需空間,降低備份成本。它能夠?qū)崿F(xiàn)無需備份軟件和備份服務(wù)器,實(shí)現(xiàn)增量的備份,快速備份比普通基于快照備份 性能提升60%,且備份完成后,性能無損失。另外還能提供手工備份和定時備份功能,保證虛擬機(jī)文件的數(shù)據(jù)安全。與快照備份性能相比,深信服虛擬機(jī)快速備份在備份過程中性能影響小,備份后不影響性能。
CDP技術(shù)
CDP技術(shù)實(shí)現(xiàn)依賴于HCI自帶的“備份技術(shù)” + “IO 分流技術(shù)”。虛擬機(jī)同時開啟業(yè)務(wù)(Qemu)和CDP功能(cdp_worker),并為該虛擬機(jī)開辟一塊共享內(nèi)存作為主業(yè)務(wù)和CDP模塊的共享緩存區(qū)。CDP模塊(cdp_worker)可直接向Qemu下發(fā)備份指令,指示QCOW2鏡像進(jìn)行備份動作,形成全備和增備BP。首次開啟CDP功能,需要進(jìn)行一次全備生成BP基準(zhǔn)點(diǎn),后續(xù)根據(jù)設(shè)置的定期備份頻率(小時級)定期生成BP點(diǎn)。BP點(diǎn)以備份文件的形式存在CDP數(shù)據(jù)存儲區(qū)。CDP采用旁路架構(gòu)+IO分流技術(shù),經(jīng)過共享緩存區(qū),實(shí)現(xiàn)從主業(yè)務(wù)異步復(fù)制IO到CDP 日志存儲區(qū)(io倉庫), 以IO日志的形式存在;根據(jù)設(shè)置的IO日志間隔時間(RPO=1s/5s),定期生成RP點(diǎn),單獨(dú)利用RP并不能夠恢復(fù)數(shù)據(jù),所有的RP均依賴于對應(yīng)的BP。相較于傳統(tǒng)CDP,搭載HCI的CDP技術(shù)有著更高的容錯能力和虛擬機(jī)兼容性。
容災(zāi)技術(shù)
深信服采用“本地備份-異地容災(zāi)”的方案,本地提供秒級的持續(xù)數(shù)據(jù)保護(hù)方案,當(dāng)虛擬機(jī)出現(xiàn)故障時,可以快速從本地的保護(hù)數(shù)據(jù)中恢復(fù)整臺虛擬機(jī);異地提供不同RPO(1秒、10秒、10分鐘、30分鐘、1小時、2小時、4小時、8小時、12小時、1天、2天、一周)的虛擬機(jī)級容災(zāi)功能,主、備站點(diǎn)皆為深信服的企業(yè)云平臺。
基于AI的調(diào)度優(yōu)化技術(shù)
當(dāng)一臺物理主機(jī)上運(yùn)行多臺虛擬機(jī)的時候,虛擬機(jī)之間必然會有資源的競爭,包括CPU、內(nèi)存、Cache、TLB、QPI等資源競爭。傳統(tǒng)的虛擬化優(yōu)化技術(shù)無法知道資源的供需關(guān)系。傳統(tǒng)虛擬化優(yōu)化技術(shù)無資源感知能力,如CPU級資源競爭,內(nèi)存帶寬競爭;無協(xié)同優(yōu)化能力,如計(jì)算,存儲與網(wǎng)絡(luò)的協(xié)同優(yōu)化;無業(yè)務(wù)感知能力,重要核心虛擬機(jī)依然會受到其他虛擬機(jī)的資源競爭。而深信服基于AI的性能優(yōu)化引擎,擁有業(yè)務(wù)感知能力通過AI引擎識別當(dāng)前業(yè)務(wù)場景的核心資源需求和業(yè)務(wù)場景的資源瓶頸。AI引擎基于業(yè)務(wù)的歷史資源標(biāo)簽建立性能優(yōu)化模型。自適應(yīng)的性能優(yōu)化架構(gòu)能夠根據(jù)業(yè)務(wù)的資源標(biāo)簽推薦最優(yōu)的資源配置并根據(jù)業(yè)務(wù)的資源標(biāo)簽推薦最優(yōu)的調(diào)度策略。
還想了解更多云計(jì)算知識?請鎖定云集技術(shù)學(xué)社,大咖云集為你分享更多云計(jì)算領(lǐng)域干貨與實(shí)踐經(jīng)驗(yàn)。