■ 國(guó)網(wǎng)青海省電力公司信息通信公司 徐鐵軍 李宏波
編者按:本文筆者通過深入分析Vmware 虛擬化平臺(tái)和開源KVM 虛擬化平臺(tái)的特點(diǎn)與差異,研究并解決遷移過程中數(shù)據(jù)傳輸、磁盤轉(zhuǎn)碼和驅(qū)動(dòng)適配等關(guān)鍵流程和問題,在大量實(shí)驗(yàn)論證基礎(chǔ)上探索出行之有效的V2V 遷移方案,實(shí)現(xiàn)了業(yè)務(wù)系統(tǒng)虛擬機(jī)在異構(gòu)平臺(tái)之間自動(dòng)化、流程化和標(biāo)準(zhǔn)化遷移。
隨著企業(yè)信息化建設(shè)的不斷發(fā)展和云計(jì)算技術(shù)水平的不斷提高,IaaS 層虛擬化平臺(tái)應(yīng)用在企業(yè)經(jīng)營(yíng)、生產(chǎn)管理業(yè)務(wù)中逐漸普及,國(guó)家電網(wǎng)有限公司(以下簡(jiǎn)稱“國(guó)網(wǎng)公司”)基于開源KVM 技術(shù)自研的SGVCS 虛擬化平臺(tái)在功能、性能及易用性等各方面已能夠滿足業(yè)務(wù)建設(shè)和技術(shù)發(fā)展的需求。
圖1 國(guó)網(wǎng)某電力公司虛擬化平臺(tái)典型架構(gòu)
國(guó)網(wǎng)某電力公司IaaS應(yīng)用的虛擬化生產(chǎn)環(huán)境由VMware 平臺(tái)和SG-VCS 平 臺(tái)組成,分別部署在不同的信息機(jī)房數(shù)據(jù)中心,平臺(tái)架構(gòu)設(shè)計(jì)均沿用云計(jì)算主流虛擬化技術(shù)路線:主存采用FCSAN;計(jì)算節(jié)點(diǎn)由X86 物理服務(wù)器組成,通過將ESXI、KVM虛擬化引擎Hypervisor 部署在服務(wù)器實(shí)現(xiàn)虛擬化;控制節(jié)點(diǎn)Server 對(duì)包括宿主機(jī)、虛擬機(jī)、網(wǎng)絡(luò)、存儲(chǔ)等資源進(jìn)行控制、管理;輔存包括操作系統(tǒng)鏡像文件、操作系統(tǒng)驅(qū)動(dòng)文件、虛擬機(jī)磁盤備份文件等。其典型架構(gòu)如圖1 所示。
國(guó)網(wǎng)某電力公司VMware平臺(tái)生產(chǎn)環(huán)境納管業(yè)務(wù)系統(tǒng)虛擬機(jī)546 臺(tái),若通過在SGVCS 平臺(tái)重新部署業(yè)務(wù)系統(tǒng)的方式實(shí)現(xiàn)商業(yè)虛擬化軟件退運(yùn),按照平均一臺(tái)虛擬機(jī)遷移需耗時(shí)5 個(gè)工作日計(jì)算,完成遷移需2 730 個(gè)工作日,實(shí)施費(fèi)用約300 萬 元,此方案耗費(fèi)時(shí)間長(zhǎng)、工作效率低、經(jīng)濟(jì)成本高。
為解決遷移工作過程中面臨的遷移成本高和工作效率低等難題,國(guó)網(wǎng)某電力公司充分借鑒云開源社區(qū)的遷移經(jīng)驗(yàn),通過對(duì)比分析商業(yè)VMware 平臺(tái)和SG-VCS 平臺(tái)的整體結(jié)構(gòu)和系統(tǒng)內(nèi)部的差異,梳理得出導(dǎo)致業(yè)務(wù)系統(tǒng)無法直接由VMware 平臺(tái)遷移至SGVCS 平臺(tái)的關(guān)鍵性因素在于以下兩點(diǎn):
(1)虛 擬 化引 擎。 即Hypervisor,—種運(yùn)行在基礎(chǔ)物理服務(wù)器和操作系統(tǒng)之間的中間軟件層,當(dāng)服務(wù)器啟動(dòng)并執(zhí)行Hypervisor 時(shí),它會(huì)加載所有虛擬機(jī)客戶端的操作系統(tǒng)同時(shí)會(huì)分配給每一臺(tái)虛擬機(jī)適量的內(nèi)存、CPU、網(wǎng)絡(luò)和磁盤。
VMware 采用裸機(jī)部署ESXI 虛擬化引擎,SG-VCS 則采用操作系統(tǒng)內(nèi)核安裝KVM 虛擬化引擎,在不同的虛擬化引擎上衍生出不同磁盤格式、磁盤驅(qū)動(dòng)和網(wǎng)卡類型的虛擬機(jī),引擎不同是異構(gòu)平臺(tái)虛擬機(jī)彼此不兼容的根本原因。
(2)管理數(shù)據(jù)庫(kù)。用于存放和管理整個(gè)系統(tǒng)的“元”數(shù)據(jù)和操作、告警信息,“元”數(shù)據(jù)是虛擬化平臺(tái)的各類軟硬件資源配置信息的合集,VMware 管理數(shù)據(jù)庫(kù)采用Oracle 數(shù)據(jù)庫(kù),SG-VCS 則采用MariaDB 數(shù)據(jù)庫(kù),不同的數(shù)據(jù)庫(kù)導(dǎo)致SG-VCS 平臺(tái)無法直接共享使用VMware 平臺(tái)的各類數(shù)據(jù)資源,虛擬機(jī)配置信息不能有效同步和匹配。
將虛擬機(jī)業(yè)務(wù)系統(tǒng)由VMware 平臺(tái)遷移至SG-VCS平臺(tái)的完整V2V 過程包括虛擬機(jī)配置數(shù)據(jù)遷移和虛擬機(jī)磁盤數(shù)據(jù)庫(kù)遷移,為盡可能的避免線下數(shù)據(jù)的導(dǎo)入導(dǎo)出,提升工作效率,在遷移工作開展之前搭建數(shù)據(jù)傳輸通道,貫通VMware 平臺(tái)和SGVCS 平臺(tái)數(shù)據(jù)中心聯(lián)接的以太網(wǎng)絡(luò)和SAN 網(wǎng)絡(luò),保證遷移過程中數(shù)據(jù)傳輸安全。
圖2 配置數(shù)據(jù)遷移流轉(zhuǎn)圖
國(guó)網(wǎng)某電力公司通過設(shè)計(jì)數(shù)據(jù)抽取工作流、編譯ETL代碼、封裝處理過程,完成VMware 平臺(tái)Oracle 數(shù)據(jù)庫(kù)中的元數(shù)據(jù)同步至SG-VCS平臺(tái)MariaDB 數(shù)據(jù)庫(kù),最終實(shí)現(xiàn)虛擬機(jī)配置數(shù)據(jù)自動(dòng)化、流程化遷移的目標(biāo),整個(gè)數(shù)據(jù)遷移流轉(zhuǎn)如圖2 所示。
虛擬機(jī)元數(shù)據(jù)抽取工作流,采用Java 語言編程實(shí)現(xiàn)ETL 處理過程,將VMware 平臺(tái)Oracle 數(shù)據(jù)庫(kù)的配置數(shù)據(jù)自動(dòng)抽取到ODS 數(shù)據(jù)中心,匹配調(diào)度規(guī)則按照關(guān)鍵字段值進(jìn)行自動(dòng)轉(zhuǎn)換清洗后,存放到DW 數(shù)據(jù)倉(cāng)庫(kù)。
清洗加工后的DW 虛擬機(jī)配置數(shù)據(jù)自動(dòng)裝載成單個(gè)的XML 元數(shù)據(jù)文件,便于MD5 校驗(yàn)和數(shù)據(jù)糾錯(cuò),最后將完整的XML 元數(shù)據(jù)文件導(dǎo)入SGVCS 平臺(tái)的MariaDB 數(shù)據(jù)庫(kù),
(1)在KVM 主 機(jī) 安 裝vmfs-tools、qemu-img 等 工具。vmfs-tools 是 一 套可以在Linux 操作系統(tǒng)中管理識(shí)別ESXI 主機(jī)文件系統(tǒng)的管理工具,為保證遷移過程中磁盤數(shù)據(jù)傳輸?shù)陌踩咝?,需要借助安裝vmfs-tools 文件系統(tǒng)的管理工具掃描讀取vmdk 虛擬機(jī)磁盤文件,將VMware 平臺(tái)的主存儲(chǔ)直接映射掛載到SGVCS 平臺(tái)的KVM 主機(jī)。
(2)KVM 主 機(jī) 讀 取 到vmdk 虛擬機(jī)磁盤文件后,執(zhí)行qemu-img convert 磁盤格式轉(zhuǎn)換命令:
qemu-img convert [-c] [-f fmt] [-O output_fmt] [-o options] filename% [filename2 [...]] output_filename
將fmt 格式的filename鏡像文件根據(jù)options 選項(xiàng)轉(zhuǎn)換為格式為output_fmt的名為output_filename 的鏡像文件。一般來說,輸入文件格式fmt 由qemu-img工具自動(dòng)檢測(cè)到,而輸出文件格式output_fmt 根據(jù)自己需要來指定,默認(rèn)會(huì)被轉(zhuǎn)換為與raw 文件格式。
(3)通過dd 命令將轉(zhuǎn)換完成的虛擬機(jī)磁盤寫入SGVCS 平臺(tái)的主存儲(chǔ),并適配KVM 虛擬機(jī)virtio 驅(qū)動(dòng),保證虛擬機(jī)正常啟動(dòng)。
dd 是Linux 系統(tǒng)磁盤數(shù)據(jù)塊快拷貝命令,可從標(biāo)準(zhǔn)輸入或文件中讀取數(shù)據(jù),根據(jù)指定的格式來轉(zhuǎn)換數(shù)據(jù),再輸出到文件、設(shè)備或標(biāo)準(zhǔn)輸出,常見的使用方式如下:
執(zhí)行dd if=/path/file of=/path/file count=n bs=x(n 代表指僅拷貝n 個(gè)塊;x 代表 塊大小為x 個(gè) 字節(jié))。
對(duì)上述VMware 平臺(tái)虛擬機(jī)磁盤掃描發(fā)現(xiàn)、磁盤數(shù)據(jù)轉(zhuǎn)換、磁盤數(shù)據(jù)寫入SG-VCS平臺(tái)存儲(chǔ)等操作步驟進(jìn)行編排和串聯(lián),并封裝成圖形化工具,使整個(gè)磁盤數(shù)據(jù)遷移過程更加自動(dòng)化、流程化和標(biāo)準(zhǔn)化。至此完成虛擬機(jī)跨平臺(tái)、跨數(shù)據(jù)中心磁盤數(shù)據(jù)遷移的全部操作過程。
國(guó)網(wǎng)某電力公司通過深入研究商業(yè)VMware 和SGVCS 異構(gòu)虛擬化平臺(tái)之間的特點(diǎn)與差異,充分挖掘開源ETL 數(shù)據(jù)加工融合技術(shù)、qemu-img 磁盤轉(zhuǎn)碼技術(shù)和dd 磁盤鏡像拷貝技術(shù), 研發(fā)開源V2V 技術(shù)在異構(gòu)虛擬化平臺(tái)跨數(shù)據(jù)中心遷移的實(shí)現(xiàn)過程和圖形化處理工具,解決了因異構(gòu)虛擬化平臺(tái)管理數(shù)據(jù)庫(kù)不同、虛擬機(jī)的磁盤格式不兼容和驅(qū)動(dòng)程序有差異而導(dǎo)致虛擬機(jī)無法直接跨平臺(tái)遷移整合的難題。和傳統(tǒng)重新部署應(yīng)用系統(tǒng)或采購(gòu)商業(yè)V2V 遷移工具相比,采用開源V2V 遷移方案在短短60 個(gè)工作日內(nèi),安全無差錯(cuò)地跨平臺(tái)和數(shù)據(jù)中心遷移546 臺(tái)虛擬機(jī)業(yè)務(wù)系統(tǒng),提前高質(zhì)地完成了徹底退運(yùn)商業(yè)VMware 平臺(tái)的目標(biāo)任務(wù),直接節(jié)約工期210 天、經(jīng)濟(jì)300萬元。