基于RSYNC的Linux系统迁移上云方案实现
2021-09-29牟骏田富强胡波叶鑫平
牟骏 田富强 胡波 叶鑫平
DOI:10.16661/j.cnki.1672-3791.2107-5042-5725
摘 要:随着业务系统上云规模不断扩大,越来越多的业务系统客户提出了迁移上云需求,如何把现有物理机上的系统迁移到云计算管理平台上作为一台虚拟机运行是一个关键问题。该文提出基于RSYNC的文件级同步方案进行Linux操作系统的全量及增量迁移。经测试,该方案能实现为任意X86环境(传统硬件架构、虚拟化、异构云)之间提供迁移支持。
关键词:数据镜像备份工具 虚拟机 迁移上云 可引导Linux系统
中图分类号: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
隨着云计算和虚拟化的迅速发展,在构建数据中心时,将已有传统硬件架构的系统迁移上云面临着诸多困难,人工重新部署效率低且风险高,迁移工具免费的限制了特定平台使用,收费的迁移工具往往又比较昂贵。
迁移上云是一个系统工程,要保障业务中断时间最小化或0停机,在迁移的每个阶段都要充分地考虑和验证。迁移准备阶段,需要充分收集源系统的信息,对涉及绑定了硬件、KEY等特殊应用的系统提前验证目标平台的兼容性;根据收集的信息综合分析选择最优的迁移方案,比如集群式的应用系统,系统整机迁移不是好的选择,“热扩展”节点才是实现0停机的最佳方案。系统迁移阶段,提前做好系统的关键数据备份,迁移过程中源系统不中断,迁移占用的网络带宽不能影响业务系统正常使用。迁移完成阶段,计划系统切换停机时间,验证源端和目标端数据一致没有丢失,迁移切换失败回退到源系统[1-2]。
该文将介绍通过RSYNC实现Linux系统的整机迁移方案,该方案支持异构虚拟化之间、传统硬件架构系统上云的迁移,并且短时间完成业务系统的切换。
1 RSYNC方案概述
该方案包括系统全量同步、增量机制、LiveCD应用、重建系统引导、内存溢出修复5个部分。
如图1所示,在目标平台创建同源端相同配置的虚拟机(target节点),以LiveCD启动目标平台的“target”节点,在“临时系统”里面配置IP以便同源端进行RSYNC通信,并格式化磁盘同源端“source”节点保持一致。
基于上述配置之后,可以在“source”节点的系统内部发起rsync数据同步操作,同步完成后修复“target”节点的系统引导,系统重新从磁盘启动即完成了基于rsync的Linux系统整机迁移[3]。
1.1全量同步机制
在系统全量迁移有两个关键步骤,一是目标虚拟机磁盘的处理,另一个是利用RSYNC进行数据同步迁移时涉及的参数选项,以及需要迁移的Linux系统目录[4]。
1.1.1 目标磁盘处理步骤
(1)收集源系统的磁盘信息,包括磁盘数量、大小、名称信息,记录系统内磁盘的分区方式、文件系统格式和对应的挂载点,若使用LVM还需要记录PV、VG、LV的关系信息。(2)通过LiveCD启动目标虚拟机,按照源端收集的信息进行磁盘分区和格式化。(3)将格式化的分区/lv挂载,以LiveCD启动的“临时系统”中的“/mnt”目录对应源系统的“/”目录,挂载示例如表1所示。
1.1.2 RSYNC同步策略
rsync是Linux系统下一款开源的、快速的、多功能的数据镜像备份工具,可实现全量及增量的本地或远程数据同步备份。在使用rsync进行全量同步时需要注意参数选项和同步的目录两个方面:(1)rsync使用-ahPHAXxS参数选项,为了满足断点续传和增量同步还应该加上—delete选项。(2)在进行系统全量迁移时,源系统部分目录与硬件环境相关可不做同步,目标端启动时会自动生成,通过--exclude ={/dev,/proc,/sys,/tmp,/run,/media,/lost+found}参数选项进行屏蔽。rsync关键参数解释如下。
-a:最重要的参数,以递归的方式进行文件传输,保留文件的权限、属主、软连接的信息。
-h:显示文件传输大小。
-P:断点续传及显示整个传输过程信息。
-H:保留文件的硬链接。
-A:保留文件ACL权限控制信息。
-X:保留文件的扩展属性。
-x:不要超越文件系统边界。
-S:对源稀疏文件的处理,避免大量空洞文件撑爆目标文件系统。
1.2 增量机制
rsync实现增量传输的主要过程,就是差异检测和差异数据组织及传输,前者是rsync增量传输算法的核心。rsync增量传输算法是一种滑动块差异检测算法。如图2所示,以检测文件A和B的差异为例,首先对A按固定长度L划分为若干块,并对每一块生成弱摘要(Adler-32:速度快)和强摘要(MD5:鉴别度高),然后对B从第一个字节开始,以长度为L的滑动窗口,遍历整个文件,计算每个窗口块的弱、强摘要,并与A中的摘要值进行比较,弱、强摘要都相同者,即视为相同数据块,否即为差异块。
发现B文件的大小或mtime与源端不一致,则会在目标路径下创建一个临时文件,并按照接收到的数据和指令重组该临时文件,目的是使该文件和A文件完全一致。当临时文件重组校验成功后,将修改该临时文件的属性信息,包括权限、所有者、所属组、mtime等。最后将此文件重命名并覆盖掉目标路径下已存在的文件,文件增量同步完成。
1.3 LiveCD应用
LiveCD是直接引导为可用 Linux系统的CD,当从CD引导起来后,提供一整套可以使用的工具,其中有一些是通用的,有一些是高度专用的。通常用来离线部署系统(装机)、备份/还原系统[5]。
各Linux发行版都提供了相应的LiveCD镜像,包含了基础功能,如果需要在LiveCD中安装额外的程序包,可以通过livecd-creater进行自定义。本方案中基于CentOS 7.5镜像库自定义LiveCD,安装了grub2,替换了默认的rsync安装包以便修复内存溢出问题。
1.4 重建系统引导
系统数据迁移完成之后需要进行引导修复操作,目标端的硬件设备或者磁盘驱动已经进行了变更,需要重建引导,根据内核版本的不同使用grub-install/grub2-install。
在该方案中将源系统同步至了LiveCD“臨时系统”的/mnt目录下。
(1)chroot /mnt 切换将/mnt作为根目录的运行环境;
(2)grub2-install –recheck /dev/vda,/dev/vda代表/boot分区所在的磁盘,更新当前设备的信息/boot/grub2/目录下的device-map、i386-pc信息会更新;
(3)grub2-mkconfig -o /boot/grub2/grub.cfg重新生成grub引导文件;
(4)建议检查/etc/fstab、/etc/mtab、/boot/grub2/device-map、/boot/grub2/grub.cfg文件充磁盘名称是否正确,有可能源和目标磁盘驱动不一致,磁盘名称就不一样。
1.5 RSYNC内存不释放修复
Linux在进行文件拷贝/传输时会通过cache提高读写速度,在迁移上云的场景中更希望是直接拷贝,不占用源端过多内存,不影响业务系统的运行,很遗憾的是rsync主版本中,在进行数据拷贝的过程中会一直占用系统内存不释放,造成拷贝速度越来越慢,最后还会影响业务系统。
开发人员建议使用nocache,但是并不能解决该问题,反而有一个关于drop-cache的补丁可以有效地进行处理,该补丁可以在rsync 3.0.x版本进行使用,如果是其他版本需要自己进行代码移植。
2 验证测试
该文选择了三个场景针对异构环境之间的迁移:VMware虚拟机往KVM云平台迁移、KVM云平台虚拟机往VMware迁移、物理机往KVM云平台迁移。选择主流的Linux服务器操作系统CentOS/RedHat,版本范围:6.2~7.5[6]。
测试环境准备:每一组测试场景准备5台虚拟机,每台虚拟机按照不同的分区方式进行安装,随机选择一台安装apache+mariadb应用服务。
测试结果见表2。
3 结语
该方案能实现Linux系统迁移上云场景,在很小的中断时间内能完成系统的切换,可以基于该方案形成自动化的在线迁移上云工具。
参考文献
[1]景双一.云计算负载检测与均衡技术研究[D].大连:大连海事大学,2018.
[2]郭煜.可信云体系结构与关键技术研究[D].北京:北京交通大学,2017.
[3]李琳.备份系统数据高并发处理与系统高可用性的研究与实现[D].西安:西安电子科技大学,2019.
[4]左珍德.基于Rsync的结构化数据库实时高速备份研究及工具开发[D].广州:华南理工大学,2017.
[5]郑清安,黄云峰.基于WinFE的电子数据取证启动盘改进研究与实现[J].信息技术与网络安全,2019,38(11):41-46.
[6]石鸿超.云环境下文件同步研究与应用[D].西安:西安理工大学,2018.
作者简介:牟骏(1990—),男,本科,工程师,研究方向为云计算、分布式存储等。
田富强(1984—),男,本科,工程师,研究方向为云计算、虚拟化、企业信息架构等。
胡波(1989—),男,本科,助理工程师,研究方向为云计算、网络、自动化运维等。