淺談虛擬化超融合架構在G行的實踐
本文轉載自微信公眾號「匠心獨運維妙維效」,作者張智峰。轉載本文請聯系匠心獨運維妙維效公眾號。
一、概述
為進一步整合基礎設施資源以達到統一規范管理,G行于2016年選用了適用于分行的超融合基礎架構方案,并以分布式部署的方式建立了私有云分行資源池。其上運行的系統多達數千套,支撐了分行本地業務系統在內的大量生產系統的快速落地和穩定運行,已經成為各分行主要的IT基礎設施環境,實現了資源集中管理、靈活調配和高效部署的建設目標。
二、G行超融合基礎架構
1.為什么采用超融合基礎架構
超融合基礎架構(HCI)是軟件定義的統一系統,兼具傳統數據中心的所有要素:存儲、計算、網絡連接和管理。在虛擬化資源池的表現形式為每一個資源節點不僅僅具備計算、網絡、存儲和虛擬化等資源,還可以將多個節點通過網絡聚合起來,有統一的資源調度平臺來進行管理,并且可以實現模塊化的無縫橫向擴展。
相比較傳統的X86服務器與集中式存儲構成的虛擬化平臺,以超融合架構部署的資源池具有部署速度快,成本小,計算資源浪費少,節省機房空間等優勢。
虛擬化超融合架構恰好可以解決當時G行分行數據中心計算資源調配不靈活、系統高可用度低的痛點。而其良好的橫向擴展能力也能夠很好地應對日新月異的銀行業務高速增長,并且在建設初期無需投入大量的資金。
2、組網
基于可靠性考慮管理、業務、存儲平面由2個網口綁定,雙上行到2個接入交換機,不同網絡平面采用獨立的虛擬交換機在虛擬化平臺內部完成配置,并采用vlan隔離。
3.分布式存儲場景下的數據保護
在超融合架構中,每一個超融合節點既是一個計算節點也是存儲節點,這種分布式的特性再結合數據保護機制,使得分布式存儲可以很好地基于超融合架構構建一個易擴展、高可靠的存儲資源池。
而對于存儲用戶而言,存儲系統的可靠性是一個老生常談的話題了。在傳統的存儲中,大多是采用RAID的方式,來保證數據的高可靠性;而在分布式存儲系統中,多副本和EC(ErasureCode)是比較常見的數據保護方法。
那么什么是多副本?又如何理解EC?他們之間的區別和優勢又是什么呢?
簡單說,多副本就是一份數據以副本的方式寫到多個分布式系統中的存儲節點中。這種多副本的數據保護方式,一來實現簡單,二來可靠性高。除非所有副本所在的存儲節點都故障,才會影響業務。但缺點是多副本的空間利用率偏低。
我們以三副本舉例(參見下圖)
對于服務器A的物理磁盤A上的數據塊P1,系統將它的數據備份為服務器B的物理磁盤B上的P1''和服務器C的物理磁盤C上的P1',P1、P1'和P1''共同構成了同一個數據塊的三個副本。若P1所在的物理磁盤發生故障,則P1'和P1''可以繼續提供存儲服務,確保業務不受影響。
另外其數據重建機制也保證了,在存儲容量情況良好的條件下,當發生單個或多個存儲節點發生故障時,可以快速進行重建以保證同一元數據存在三個副本。示意圖如下:
然而三副本機制雖然在數據高可靠強一致方面表現出色,其存儲空間利用率僅為33%,這也增加了企業級用戶的存儲成本。
4.EC
EC是一種數據保護技術,是指將n份原始數據,增加m份數據,并能通過n+m份中的任意n份數據,還原為原始數據。如果把n+m份數據分布在存儲系統的不同節點上,那么任意小于等于m個節點故障(m份數據失效),都可以通過其他剩余的數據還原出原始數據,從而達到不影響業務的目的。EC算法可以靈活配置,比如系統要滿足支持2個節點同時故障,則m=2即可。從空間利用率上,EC是優于多副本的,以4+2為例,空間利用率為4/(4+2)=67%。這個利用率相當于三副本的2倍。而可靠性上,與三副本一樣可以滿足支持2個節點同時故障。不過以EC4+2為例,此種數據保護機制限制了超融合節點的擴容方式,每次最少擴容數量4+2=6臺。喪失了一部分超融合架構引以為傲的靈活擴展能力。
最終G行從金融行業數據可靠性要求出發,選擇了數據可靠性和強一致性更高的三副本機制,并保留了超融合架構的靈活橫向擴容能力。
5.Xen Or KVM
G行超融合架構資源池在建立初期選擇了技術上較為成熟的Xen架構虛擬化技術,而隨著kvm技術的日趨成熟,最終在2020年選擇了從Xen架構升級到了KVM架構,兩者又有什么優劣勢呢?
首先我們需要了解什么是虛擬化技術。Hypervisor是一種運行在基礎物理服務器和操作系統之間的中間軟件層,可允許多個操作系統和應用共享硬件。也可叫做VMM(virtualmachine monitor ),即虛擬機監視器。
Hypervisors是一種在虛擬環境中的操作系統。他們可以訪問服務器上包括磁盤和內存在內的所有物理設備。Hypervisors不但協調著這些硬件資源的訪問,也同時在各個虛擬機之間施加防護。當服務器啟動并執行Hypervisor時,它會加載所有虛擬機客戶端的操作系統同時會分配給每一臺虛擬機適量的內存,CPU,網絡和磁盤。而根據Hypervisors扮演的角色和功能不同,衍生出了多種虛擬化技術。可以說Xen和KVM分別代表了半虛擬化和全虛擬化兩種虛擬化技術中。
全虛擬化(左)與半虛擬化(右)
全虛擬化:虛擬機完整的模擬了底層硬件,Linux系統直接從內核級別為虛擬化提供支持,進行Hypervisor適配時不需要對操作系統進行修改。在全虛擬化的虛擬平臺中,GuestOS(客戶機操作系統即虛擬機操作系統)并不知道自己是一臺虛擬機,它會認為自己就是運行在計算機物理硬件設備上的HostOS(宿主機操作系統)。因為全虛擬化的Hypervisor會將一個OS所能夠操作的CPU、內存、外設等物理設備邏輯抽象成為虛擬CPU、虛擬內存、虛擬外設等虛擬設備后,再交由GuestOS來操作使用。這樣的GuestOS會將底層硬件平臺視為自己所有的,但是實際上,這些都是Hypervisor為GuestOS制造了這種假象。
KVM作為硬件輔助全虛擬化技術,主要由兩個部分組成:KVM驅動和Qemu。KVM驅動直接被集成到linux系統(Intel-VT或AMD-V)中了,主要負責虛擬機創建、CPU和內存的分配等等。
作為硬件輔助全虛擬化技術,處理器直接提供了虛擬化支持(可以為多個操作系統虛擬化處理器)。內存可以通過kvm進行虛擬化(借助linux的能力)。最后,I/O通過一個稍加修改的QEMU進程(執行每個客戶操作系統進程的一個拷貝)進行虛擬化。
KVM向Linux中引入了一種除現有的內核模式之外的新進程模式---客戶模式,它用來執行部分客戶操作系統代碼。內核模式表示代碼執行的特權模式,而用戶模式則表示非特權模式(用于運行在內核之外的程序)。根據運行內容和目的,執行模式可以針對不同的目的進行定義。客戶模式的存在就是為了執行客戶操作系統代碼即虛擬機操作系統的代碼,但是只針對那些非I/O的代碼。 在客戶模式中有兩種標準模式,因此客戶操作系統在客戶模式中運行可以支持標準的內核,而在用戶模式下運行則支持自己的內核和用戶空間應用程序。客戶操作系統的用戶模式可以用來執行I/O操作,這是單獨進行管理的。
在客戶操作系統上執行I/O的功能是由QEMU提供的。QEMU是一個平臺虛擬化解決方案,允許對一個完整的PC環境進行虛擬化(包括磁盤、圖形適配器和網絡設備)。客戶操作系統所生成的任何I/O請求都會被中途截獲,并重新發送到QEMU進程模擬的用戶模式中。
在內存虛擬化方面上,由于KVM僅是一個簡單的虛擬化模塊,所以它的內存管理沒有自我實現,需借助于Linux內核實現內存管理。KVM能夠使用Linux所支持的任何存儲,在驅動程序的實現上,直接借助于Linux內核來驅動硬件。
半虛擬化:需要對GuestOS的內核代碼做一定的修改,才能夠將GuestOS運行在半虛擬化的VMM中。修改內核后的GuestOS也知道自己就是一臺虛擬機。所以能夠很好的對核心態指令和敏感指令進行識別和處理,但缺點在于GuestOS的鏡像文件并不通用。
XEN包含三個基本組件:Hypervisor、Domain0、DomainU。其中Hypervisor運行在硬件之上,承載所有的操作系統,提供CPU和內存調度的作用。Domain0是管理員,,主要負責IO設備虛擬化。DomainU則是真正的XEN中的虛擬客戶機,而DomainU又分為兩類:一類全虛擬客戶機,一類半虛擬客戶機,后者是運行在經過修改的操作系統之上。
總體來看,Xen是一個直接運行在計算機硬件之上的用以替代操作系統的軟件層,以此來實現在HostOS上并發運行多個GuestOS。而KVM是已經被內嵌到HostOS(Linux)內核中。鑒于現在主流CPU都對虛擬化進行了適配,具備硬件虛擬化的條件,因此KVM可以適配市場上絕大部分的CPU。而從輕量化角度看,KVM更加精簡,不需要對客戶機操作系統進行修改,更加靈活易于部署,當遇到版本升級的需求時,Xen架構往往要對宿主機底層OS打補丁,重新編譯整個內核,風險可想而知。另外KVM作為虛擬化開源架構,其生態更加完善。因此最終G行選擇從Xen架構升級為KVM虛擬化架構。
三、超融合架構未來發展
G行分行超融合基礎架構資源池致力于為分行生產系統提供快速部署、靈活調配、高可用的基礎設施服務能力,為全行業務尤其是分行業務的快速發展提供有力支撐。繼續深耕基礎設施服務能力,配置調優,超融合組件升級迭代,總行管控平臺全面替換升級,監控細粒度化建設,都將是未來G行超融合架構資源池發展的方向。在專注于加強基礎設施服務能力的基礎上,緊跟時代,以超融合為底座培育容器虛擬化部署適配能力也將是未來努力的方向。