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