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