愛伊米

雲集技術學社 | 一文帶您瞭解深信服aSV伺服器虛擬化功能及原理

10月14日,深信服雲計算專家Leijian在信服雲《雲集技術學社》系列直播課上進行了《深信服aSV伺服器虛擬化功能及原理》的分享,介紹了伺服器虛擬化的基本原理和深信服aSV伺服器虛擬化特色技術。以下是他的分享內容摘要,想要了解更多可以關注“深信服科技”公眾號。

看點一:伺服器虛擬化的發展

從上世紀60年代開始,伺服器虛擬化經歷了60多年的發展,也有著十分明顯的代際變化。

第一代是基於二進位制翻譯的全虛擬化,它的典型應用是早期的VMware Workstation。核心是透過二進位制發育的方式實現虛擬機器的複用。

第二代是半虛擬化,它的典型應用是Xen,透過修改作業系統核心,替換掉不能虛擬化的指令,透過超級呼叫(Hypercall)直接和底層的虛擬化層Hypervisor來通訊,Hypervisor 同時也提供了超級呼叫介面來滿足其他關鍵核心操作,比如記憶體管理、中斷和時間保持。這種做法省去了全虛擬化中的捕獲和模擬,大大提高了效率。

第三代是硬體輔助虛擬化,核心是在裸金屬上安裝VMware,在上面跑GuestOS指令。有別於上兩代的是,它不用修改任何的GuestOS指令,可以直接執行。

看點二:伺服器虛擬化基本原理

01

Qemu-KVM基本原理介紹

深信服目前應用的硬體輔助虛擬化是基於Qemu-KVM實現的。

KVM是核心的一個驅動(kvm。ko),工作在核心態(CPU Ring0),實際上是Linux核心一個標準組件。KVM 核心模組收到該請求後,它先做一些準備工作,比如將vCPU上下文載入到 VMCS (Virtual Machine Control Structure)等,然後驅動 CPU 進入 VMX Non-Root 模式,開始執行客戶機程式碼。

Qemu是一個應用程式,工作在使用者態(User mode 、CPU Ring3),提供外設的模擬、vCPU模擬、主控邏輯、IO收發等,當GuestOS 需要傳送IO請求、需要傳送網路包的時候,都需要呼叫VM_Exit讓Qemu協助實現。它能夠支援CPU 和 memory 超分、半虛擬化 I/O、熱插拔、對稱多處理、實時遷移、PCI 裝置直接分配和單根 I/O 虛擬化、核心同頁合併、NUMA等多項功能。使用Qemu的雲廠商在這些功能配置上都是類似的。

使用Qemu-KVM有三種執行模式:

第一種是客戶模式(Guest Ring0~3),可以簡單理解成客戶機作業系統執行在的模式,它本身又分為自己的核心模式和使用者模式(CPU工作在 VMX Non-Root Operation)。

第二種是使用者模式(User Ring3),為使用者提供虛擬機器管理的使用者空間工具以及代表使用者執行I/O,Qemu執行在這個模式之下(CPU工作在VMX Root Operation)。

第三種核心模式(System Ring0),模擬CPU以及記憶體,實現客戶模式的切換,處理從客戶模式的退出,KVM核心模組執行在這個模式下(CPU工作在 VMX  Root Operation)。

02

Virtio(aTool) 和全虛介紹

Virtio半虛:實際上是在Qemu和虛擬機器之間設定一個共享記憶體Vring,當有資料需要傳送的時候,把資料複製到共享記憶體Vring中,然後呼叫一次VM_Exit退出到Qemu中,Qemu再把這個Vring的數一次性全部發出(注意:如果虛擬機器此時在快速發包,有可能Vring中已經快取了多個包,從而更進一步減少了VM_Exit)。這樣可以減少VM_Exit的次數,從而大大提高效能(可以理解成在GuestOS和Qemu之間開了個後門)。

Virtio半虛擬可以獲得很好的I/O效能,比純軟體模擬高於4倍多,其效能幾乎可以達到和Native(即非虛擬化環境中的原生系統)差不多的I/O效能。所以,在使用KVM之時,如果宿主機核心和客戶機都支援Virtio的情況下,一般推薦使用Virtio達到更好的效能。

雲集技術學社 | 一文帶您瞭解深信服aSV伺服器虛擬化功能及原理

IO全虛擬:以磁碟或者網路為例,當虛擬機器有資料需要傳送的時候,需要透過Qemu模擬所有的硬體暫存器,虛擬機器OS把這些資料填充到模擬的硬體中,然後訪問設定這些暫存器,觸發VM_Exit退出,Qemu接收到這些資料,再把這些資料真實的寫入到磁碟、傳送到網絡卡。這個過程傳送一個數據包,可能要多次設定暫存器,導致多次退出,從而效能較差。

03

超配原理以及限制介紹

虛擬機器在Hypervisor看來,就是一個配置檔案+vDisk檔案(配置檔案會註明磁碟大小、CPU、記憶體數量、型號等等基礎資訊,這些資訊會在虛擬機器啟動的時候,傳遞到虛擬機器啟動引數),而每個vDISK實際上在Hypervisor看來就是一個檔案。

KVM的vDISK有兩種格式:RAW 和 QCOW2格式。RAW格式效能更高些,但相比QCOW2,RAW不支援快照、精簡分配等特性,故而深信服採用的是QCOW2格式。

對於QCOW2檔案,有三種模式:精簡分配、動態分配(需要底層儲存支援空洞檔案)、預分配模式。其中“預分配”效能最好,接近於RAW格式的效能,“精簡分配”效能最差,“動態分配”居中(注意:目前超融合中動態分配已接近於預分配效能、aSAN有最佳化)。

對於精簡分配和動態分配,假設實際上是配置檔案寫分配2TB,但實際QCOW2檔案佔用可能很小(實際大小取決於真實資料),因而可以超配,即配置的虛擬機器總磁碟大小,大於實際物理主機的磁碟大小。

雲集技術學社 | 一文帶您瞭解深信服aSV伺服器虛擬化功能及原理

物理主機虛擬記憶體包含物理記憶體(記憶體條,高速)+ SWAP(硬碟分割槽、龜速);物理記憶體不夠時,系統會根據配置使用SWAP分割槽(深信服超融合在平臺上預設設定“儘量不用SWAP”的策略)。vMEM超配本質是假設給虛擬機器分配32G記憶體,虛擬機器實際佔用只了24G,理論上8G(32G-24G=8G)是可以回收的,這回收的部分理論上可以給其他虛擬機器用。此時,就需要用到KSM(沒有安裝aTool的生效)或者氣泡記憶體技術(安裝了aTool的生效)。但記憶體超配可能會造成系統物理記憶體耗盡,導致系統卡頓的情況。因此,在核心繫統上,要控制超分記憶體的比率,或者不要超配。

每個執行中的虛擬機器在Hypervisor看來,就是一個系統程序,而vCPU是該程序的一個執行緒。同一時刻,每個vCPU執行緒最多佔用一個物理CPU的邏輯核,且多個vCPU之間的同步、排程會消耗額外的資源(因此,當單個虛擬機器的vcpu數量超過物理主機的邏輯核時,實際上會讓虛擬機器的效能反而變低)。

無論vCPU數量配置多大,總的物理主機CPU資源是恆定的,因而:

(1)單個虛擬機器最大的配置不要超過物理CPU的核心數量;

(2)主機上執行所有虛擬機器的總vCPU數量不能太多,否則排程消耗會增大。生產環境最佳實踐為不超過CPU的邏輯核心的2倍,主要參考真實生產中物理CPU佔用一般不超過20%;超配2倍以後,物理CPU佔用40%左右,超配要考慮峰值預留,且物理CPU佔用超過50%以上,已經比較繁忙了。

04

熱遷移基本原理介紹

熱遷移分為兩種形式,一種是共享儲存熱遷移,此種熱遷移形式,需要虛擬機器映象在共享儲存上,此種遷移型別,只需要透過網路傳送客戶機的vCPU執行狀態、記憶體中的內容、虛機裝置的狀態到目的主機上。另一種是跨主機跨儲存熱遷移,與跨主機不跨儲存熱遷移類似。不同的是其需要在目的儲存建立相同配置的虛擬機器映象(空白的,沒有資料),之後仍然是在目的宿主機上啟動目的端Qemu程序, 目的端Qemu映象開啟新建立的映象檔案。另外還需要傳送源端虛擬機器的磁碟資料到目的端。

雲集技術學社 | 一文帶您瞭解深信服aSV伺服器虛擬化功能及原理

看點三:深信服aSV伺服器虛擬化特色技術

虛擬機器快速備份

透過快速的無代理磁碟備份保護您的資料,使用增量備份減少備份所需空間,降低備份成本。它能夠實現無需備份軟體和備份伺服器,實現增量的備份,快速備份比普通基於快照備份 效能提升60%,且備份完成後,效能無損失。另外還能提供手工備份和定時備份功能,保證虛擬機器檔案的資料安全。與快照備份效能相比,深信服虛擬機器快速備份在備份過程中效能影響小,備份後不影響效能。

雲集技術學社 | 一文帶您瞭解深信服aSV伺服器虛擬化功能及原理

CDP技術

CDP技術實現依賴於HCI自帶的“備份技術” + “IO 分流技術”。虛擬機器同時開啟業務(Qemu)和CDP功能(cdp_worker),併為該虛擬機器開闢一塊共享記憶體作為主業務和CDP模組的共享快取區。CDP模組(cdp_worker)可直接向Qemu下發備份指令,指示QCOW2映象進行備份動作,形成全備和增備BP。首次開啟CDP功能,需要進行一次全備生成BP基準點,後續根據設定的定期備份頻率(小時級)定期生成BP點。BP點以備份檔案的形式存在CDP資料儲存區。CDP採用旁路架構+IO分流技術,經過共享快取區,實現從主業務非同步複製IO到CDP 日誌儲存區(io倉庫), 以IO日誌的形式存在;根據設定的IO日誌間隔時間(RPO=1s/5s),定期生成RP點,單獨利用RP並不能夠恢復資料,所有的RP均依賴於對應的BP。相較於傳統CDP,搭載HCI的CDP技術有著更高的容錯能力和虛擬機器相容性。

容災技術

深信服採用“本地備份-異地容災”的方案,本地提供秒級的持續資料保護方案,當虛擬機器出現故障時,可以快速從本地的保護資料中恢復整臺虛擬機器;異地提供不同RPO(1秒、10秒、10分鐘、30分鐘、1小時、2小時、4小時、8小時、12小時、1天、2天、一週)的虛擬機器級容災功能,主、備站點皆為深信服的企業雲平臺。

雲集技術學社 | 一文帶您瞭解深信服aSV伺服器虛擬化功能及原理

基於AI的排程最佳化技術

當一臺物理主機上執行多臺虛擬機器的時候,虛擬機器之間必然會有資源的競爭,包括CPU、記憶體、Cache、TLB、QPI等資源競爭。傳統的虛擬化最佳化技術無法知道資源的供需關係。傳統虛擬化最佳化技術無資源感知能力,如CPU級資源競爭,記憶體頻寬競爭;無協同最佳化能力,如計算,儲存與網路的協同最佳化;無業務感知能力,重要核心虛擬機器依然會受到其他虛擬機器的資源競爭。而深信服基於AI的效能最佳化引擎,擁有業務感知能力透過AI引擎識別當前業務場景的核心資源需求和業務場景的資源瓶頸。AI引擎基於業務的歷史資源標籤建立效能最佳化模型。自適應的效能最佳化架構能夠根據業務的資源標籤推薦最優的資源配置並根據業務的資源標籤推薦最優的排程策略。

雲集技術學社 | 一文帶您瞭解深信服aSV伺服器虛擬化功能及原理

還想了解更多雲計算知識?請鎖定雲集技術學社,大咖雲集為你分享更多雲計算領域乾貨與實踐經驗。