牟駿 田富強(qiáng) 胡波 葉鑫平
DOI:10.16661/j.cnki.1672-3791.2107-5042-5725
摘 ?要:隨著業(yè)務(wù)系統(tǒng)上云規(guī)模不斷擴(kuò)大,越來(lái)越多的業(yè)務(wù)系統(tǒng)客戶提出了遷移上云需求,如何把現(xiàn)有物理機(jī)上的系統(tǒng)遷移到云計(jì)算管理平臺(tái)上作為一臺(tái)虛擬機(jī)運(yùn)行是一個(gè)關(guān)鍵問(wèn)題。該文提出基于RSYNC的文件級(jí)同步方案進(jìn)行Linux操作系統(tǒng)的全量及增量遷移。經(jīng)測(cè)試,該方案能實(shí)現(xiàn)為任意X86環(huán)境(傳統(tǒng)硬件架構(gòu)、虛擬化、異構(gòu)云)之間提供遷移支持。
關(guān)鍵詞:數(shù)據(jù)鏡像備份工具 虛擬機(jī) 遷移上云 可引導(dǎo)Linux系統(tǒng)
中圖分類(lèi)號(hào):TP317? ? ?文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1672-3791(2021)06(b)-0013-03
Implementation of Linux System Migration to the Cloud based on RSYNC
Mou Jun Tian Fuqiang Hu Bo Ye Xinping
(Aostar Information Technologies Co., Ltd., Chengdu,Sichuan Province,610041?China)
Abstract: With the continuous expansion of the scale of business systems on the cloud, more and more business system customers have proposed to migrate to the cloud. How to migrate the system on the existing physical machine to the cloud computing management platform to run as a virtual machine The key issue. This paper proposes a file-level synchronization scheme based on RSYNC for full and incremental migration of the Linux operating system. After testing, the solution can be implemented to provide migration support between any X86 environment (traditional hardware architecture, virtualization, heterogeneous cloud).
Key Words: Data mirroring backup tool; Virtual machine; Migration to the cloud; Bootable linux system
隨著云計(jì)算和虛擬化的迅速發(fā)展,在構(gòu)建數(shù)據(jù)中心時(shí),將已有傳統(tǒng)硬件架構(gòu)的系統(tǒng)遷移上云面臨著諸多困難,人工重新部署效率低且風(fēng)險(xiǎn)高,遷移工具免費(fèi)的限制了特定平臺(tái)使用,收費(fèi)的遷移工具往往又比較昂貴。
遷移上云是一個(gè)系統(tǒng)工程,要保障業(yè)務(wù)中斷時(shí)間最小化或0停機(jī),在遷移的每個(gè)階段都要充分地考慮和驗(yàn)證。遷移準(zhǔn)備階段,需要充分收集源系統(tǒng)的信息,對(duì)涉及綁定了硬件、KEY等特殊應(yīng)用的系統(tǒng)提前驗(yàn)證目標(biāo)平臺(tái)的兼容性;根據(jù)收集的信息綜合分析選擇最優(yōu)的遷移方案,比如集群式的應(yīng)用系統(tǒng),系統(tǒng)整機(jī)遷移不是好的選擇,“熱擴(kuò)展”節(jié)點(diǎn)才是實(shí)現(xiàn)0停機(jī)的最佳方案。系統(tǒng)遷移階段,提前做好系統(tǒng)的關(guān)鍵數(shù)據(jù)備份,遷移過(guò)程中源系統(tǒng)不中斷,遷移占用的網(wǎng)絡(luò)帶寬不能影響業(yè)務(wù)系統(tǒng)正常使用。遷移完成階段,計(jì)劃系統(tǒng)切換停機(jī)時(shí)間,驗(yàn)證源端和目標(biāo)端數(shù)據(jù)一致沒(méi)有丟失,遷移切換失敗回退到源系統(tǒng)[1-2]。
該文將介紹通過(guò)RSYNC實(shí)現(xiàn)Linux系統(tǒng)的整機(jī)遷移方案,該方案支持異構(gòu)虛擬化之間、傳統(tǒng)硬件架構(gòu)系統(tǒng)上云的遷移,并且短時(shí)間完成業(yè)務(wù)系統(tǒng)的切換。
1 ??RSYNC方案概述
該方案包括系統(tǒng)全量同步、增量機(jī)制、LiveCD應(yīng)用、重建系統(tǒng)引導(dǎo)、內(nèi)存溢出修復(fù)5個(gè)部分。
如圖1所示,在目標(biāo)平臺(tái)創(chuàng)建同源端相同配置的虛擬機(jī)(target節(jié)點(diǎn)),以LiveCD啟動(dòng)目標(biāo)平臺(tái)的“target”節(jié)點(diǎn),在“臨時(shí)系統(tǒng)”里面配置IP以便同源端進(jìn)行RSYNC通信,并格式化磁盤(pán)同源端“source”節(jié)點(diǎn)保持一致。
基于上述配置之后,可以在“source”節(jié)點(diǎn)的系統(tǒng)內(nèi)部發(fā)起rsync數(shù)據(jù)同步操作,同步完成后修復(fù)“target”節(jié)點(diǎn)的系統(tǒng)引導(dǎo),系統(tǒng)重新從磁盤(pán)啟動(dòng)即完成了基于rsync的Linux系統(tǒng)整機(jī)遷移[3]。
1.1全量同步機(jī)制
在系統(tǒng)全量遷移有兩個(gè)關(guān)鍵步驟,一是目標(biāo)虛擬機(jī)磁盤(pán)的處理,另一個(gè)是利用RSYNC進(jìn)行數(shù)據(jù)同步遷移時(shí)涉及的參數(shù)選項(xiàng),以及需要遷移的Linux系統(tǒng)目錄[4]。
1.1.1 ?目標(biāo)磁盤(pán)處理步驟
(1)收集源系統(tǒng)的磁盤(pán)信息,包括磁盤(pán)數(shù)量、大小、名稱(chēng)信息,記錄系統(tǒng)內(nèi)磁盤(pán)的分區(qū)方式、文件系統(tǒng)格式和對(duì)應(yīng)的掛載點(diǎn),若使用LVM還需要記錄PV、VG、LV的關(guān)系信息。(2)通過(guò)LiveCD啟動(dòng)目標(biāo)虛擬機(jī),按照源端收集的信息進(jìn)行磁盤(pán)分區(qū)和格式化。(3)將格式化的分區(qū)/lv掛載,以LiveCD啟動(dòng)的“臨時(shí)系統(tǒng)”中的“/mnt”目錄對(duì)應(yīng)源系統(tǒng)的“/”目錄,掛載示例如表1所示。
1.1.2 ?RSYNC同步策略
rsync是Linux系統(tǒng)下一款開(kāi)源的、快速的、多功能的數(shù)據(jù)鏡像備份工具,可實(shí)現(xiàn)全量及增量的本地或遠(yuǎn)程數(shù)據(jù)同步備份。在使用rsync進(jìn)行全量同步時(shí)需要注意參數(shù)選項(xiàng)和同步的目錄兩個(gè)方面:(1)rsync使用-ahPHAXxS參數(shù)選項(xiàng),為了滿足斷點(diǎn)續(xù)傳和增量同步還應(yīng)該加上—delete選項(xiàng)。(2)在進(jìn)行系統(tǒng)全量遷移時(shí),源系統(tǒng)部分目錄與硬件環(huán)境相關(guān)可不做同步,目標(biāo)端啟動(dòng)時(shí)會(huì)自動(dòng)生成,通過(guò)--exclude ={/dev,/proc,/sys,/tmp,/run,/media,/lost+found}參數(shù)選項(xiàng)進(jìn)行屏蔽。rsync關(guān)鍵參數(shù)解釋如下。
-a:最重要的參數(shù),以遞歸的方式進(jìn)行文件傳輸,保留文件的權(quán)限、屬主、軟連接的信息。
-h:顯示文件傳輸大小。
-P:斷點(diǎn)續(xù)傳及顯示整個(gè)傳輸過(guò)程信息。
-H:保留文件的硬鏈接。
-A:保留文件ACL權(quán)限控制信息。
-X:保留文件的擴(kuò)展屬性。
-x:不要超越文件系統(tǒng)邊界。
-S:對(duì)源稀疏文件的處理,避免大量空洞文件撐爆目標(biāo)文件系統(tǒng)。
1.2 ??增量機(jī)制
rsync實(shí)現(xiàn)增量傳輸?shù)闹饕^(guò)程,就是差異檢測(cè)和差異數(shù)據(jù)組織及傳輸,前者是rsync增量傳輸算法的核心。rsync增量傳輸算法是一種滑動(dòng)塊差異檢測(cè)算法。如圖2所示,以檢測(cè)文件A和B的差異為例,首先對(duì)A按固定長(zhǎng)度L劃分為若干塊,并對(duì)每一塊生成弱摘要(Adler-32:速度快)和強(qiáng)摘要(MD5:鑒別度高),然后對(duì)B從第一個(gè)字節(jié)開(kāi)始,以長(zhǎng)度為L(zhǎng)的滑動(dòng)窗口,遍歷整個(gè)文件,計(jì)算每個(gè)窗口塊的弱、強(qiáng)摘要,并與A中的摘要值進(jìn)行比較,弱、強(qiáng)摘要都相同者,即視為相同數(shù)據(jù)塊,否即為差異塊。
發(fā)現(xiàn)B文件的大小或mtime與源端不一致,則會(huì)在目標(biāo)路徑下創(chuàng)建一個(gè)臨時(shí)文件,并按照接收到的數(shù)據(jù)和指令重組該臨時(shí)文件,目的是使該文件和A文件完全一致。當(dāng)臨時(shí)文件重組校驗(yàn)成功后,將修改該臨時(shí)文件的屬性信息,包括權(quán)限、所有者、所屬組、mtime等。最后將此文件重命名并覆蓋掉目標(biāo)路徑下已存在的文件,文件增量同步完成。
1.3 ??LiveCD應(yīng)用
LiveCD是直接引導(dǎo)為可用 Linux系統(tǒng)的CD,當(dāng)從CD引導(dǎo)起來(lái)后,提供一整套可以使用的工具,其中有一些是通用的,有一些是高度專(zhuān)用的。通常用來(lái)離線部署系統(tǒng)(裝機(jī))、備份/還原系統(tǒng)[5]。
各Linux發(fā)行版都提供了相應(yīng)的LiveCD鏡像,包含了基礎(chǔ)功能,如果需要在LiveCD中安裝額外的程序包,可以通過(guò)livecd-creater進(jìn)行自定義。本方案中基于CentOS 7.5鏡像庫(kù)自定義LiveCD,安裝了grub2,替換了默認(rèn)的rsync安裝包以便修復(fù)內(nèi)存溢出問(wèn)題。
1.4 ?重建系統(tǒng)引導(dǎo)
系統(tǒng)數(shù)據(jù)遷移完成之后需要進(jìn)行引導(dǎo)修復(fù)操作,目標(biāo)端的硬件設(shè)備或者磁盤(pán)驅(qū)動(dòng)已經(jīng)進(jìn)行了變更,需要重建引導(dǎo),根據(jù)內(nèi)核版本的不同使用grub-install/grub2-install。
在該方案中將源系統(tǒng)同步至了LiveCD“臨時(shí)系統(tǒng)”的/mnt目錄下。
(1)chroot /mnt 切換將/mnt作為根目錄的運(yùn)行環(huán)境;
(2)grub2-install –recheck /dev/vda,/dev/vda代表/boot分區(qū)所在的磁盤(pán),更新當(dāng)前設(shè)備的信息/boot/grub2/目錄下的device-map、i386-pc信息會(huì)更新;
(3)grub2-mkconfig -o /boot/grub2/grub.cfg重新生成grub引導(dǎo)文件;
(4)建議檢查/etc/fstab、/etc/mtab、/boot/grub2/device-map、/boot/grub2/grub.cfg文件充磁盤(pán)名稱(chēng)是否正確,有可能源和目標(biāo)磁盤(pán)驅(qū)動(dòng)不一致,磁盤(pán)名稱(chēng)就不一樣。
1.5 RSYNC內(nèi)存不釋放修復(fù)
Linux在進(jìn)行文件拷貝/傳輸時(shí)會(huì)通過(guò)cache提高讀寫(xiě)速度,在遷移上云的場(chǎng)景中更希望是直接拷貝,不占用源端過(guò)多內(nèi)存,不影響業(yè)務(wù)系統(tǒng)的運(yùn)行,很遺憾的是rsync主版本中,在進(jìn)行數(shù)據(jù)拷貝的過(guò)程中會(huì)一直占用系統(tǒng)內(nèi)存不釋放,造成拷貝速度越來(lái)越慢,最后還會(huì)影響業(yè)務(wù)系統(tǒng)。
開(kāi)發(fā)人員建議使用nocache,但是并不能解決該問(wèn)題,反而有一個(gè)關(guān)于drop-cache的補(bǔ)丁可以有效地進(jìn)行處理,該補(bǔ)丁可以在rsync 3.0.x版本進(jìn)行使用,如果是其他版本需要自己進(jìn)行代碼移植。
2 ??驗(yàn)證測(cè)試
該文選擇了三個(gè)場(chǎng)景針對(duì)異構(gòu)環(huán)境之間的遷移:VMware虛擬機(jī)往KVM云平臺(tái)遷移、KVM云平臺(tái)虛擬機(jī)往VMware遷移、物理機(jī)往KVM云平臺(tái)遷移。選擇主流的Linux服務(wù)器操作系統(tǒng)CentOS/RedHat,版本范圍:6.2~7.5[6]。
測(cè)試環(huán)境準(zhǔn)備:每一組測(cè)試場(chǎng)景準(zhǔn)備5臺(tái)虛擬機(jī),每臺(tái)虛擬機(jī)按照不同的分區(qū)方式進(jìn)行安裝,隨機(jī)選擇一臺(tái)安裝apache+mariadb應(yīng)用服務(wù)。
測(cè)試結(jié)果見(jiàn)表2。
3 ?結(jié)語(yǔ)
該方案能實(shí)現(xiàn)Linux系統(tǒng)遷移上云場(chǎng)景,在很小的中斷時(shí)間內(nèi)能完成系統(tǒng)的切換,可以基于該方案形成自動(dòng)化的在線遷移上云工具。
參考文獻(xiàn)
[1]景雙一.云計(jì)算負(fù)載檢測(cè)與均衡技術(shù)研究[D].大連:大連海事大學(xué),2018.
[2]郭煜.可信云體系結(jié)構(gòu)與關(guān)鍵技術(shù)研究[D].北京:北京交通大學(xué),2017.
[3]李琳.備份系統(tǒng)數(shù)據(jù)高并發(fā)處理與系統(tǒng)高可用性的研究與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2019.
[4]左珍德.基于Rsync的結(jié)構(gòu)化數(shù)據(jù)庫(kù)實(shí)時(shí)高速備份研究及工具開(kāi)發(fā)[D].廣州:華南理工大學(xué),2017.
[5]鄭清安,黃云峰.基于WinFE的電子數(shù)據(jù)取證啟動(dòng)盤(pán)改進(jìn)研究與實(shí)現(xiàn)[J].信息技術(shù)與網(wǎng)絡(luò)安全,2019,38(11):41-46.
[6]石鴻超.云環(huán)境下文件同步研究與應(yīng)用[D].西安:西安理工大學(xué),2018.
作者簡(jiǎn)介:牟駿(1990—),男,本科,工程師,研究方向?yàn)樵朴?jì)算、分布式存儲(chǔ)等。
田富強(qiáng)(1984—),男,本科,工程師,研究方向?yàn)樵朴?jì)算、虛擬化、企業(yè)信息架構(gòu)等。
胡波(1989—),男,本科,助理工程師,研究方向?yàn)樵朴?jì)算、網(wǎng)絡(luò)、自動(dòng)化運(yùn)維等。