【背景】

前几天给一个客户演示华为云主机迁移工具SMS时,迁移脚本提示源主机上没有rsync工具,导致脚本启动失败。由于华为云官网提供的迁移工具是编译后的可执行文件,无法看到工具的源代码。通过这个提示推测,应该是利用rsync来实现文件级的迁移能力。

【主机迁移工具原理】

1、通过华为云公开的SMS迁移文档 https://support.huaweicloud.com/sms_faq/sms-faq.pdf 第13页,推测迁移的关键原理:

<1> 在源主机上安装Agent和rsync客户端,经测试linux主机不用重启,主要使用Agent来连接到华为云的目标主机的链路管理、兼容性检查(包括操作系统版本、存储容量)、断电续传、全量迁移、增量迁移等。

<2> 华为云后端服务器安装rsync服务端,用于调度、监控进度和控制复制速度。

<3> 华为云前端界面、负责管理目标主机的创建/开关机,进度/结果显示。

<4> Agent会调用linux的rsync工具进行文件同步(一个磁盘挂载后可识别为一个文件),涉及网络传输,需要开放ssh协议端口(linux:22 , windows: 8899/8900)

【rsync简介】

rsync(remote synchronize) 是linux/unix下的一个远程数据同步工具。它可以通过LAN/WAN快速同步多台主机间的文件和目录,并适当使用rsync算法(差分编码)来实现增量数据同步。

【rsync特点】

1、可以镜像保存整个目录树和文件系统。

2、可以保留原有的权限(permission,mode),owner,group时间,修改时间(modify time),软硬连接,文件acl文件属性(attributes)信息等。

3、传输效率高,能自动检测差异数据,增量同步。

4、支持匿名传输,方便网站镜像;页可以做验证,加强安全。

rsync大致使用三种主要的传输方式,分别为:本地传输(local),远程通道传输(remote shell),守护进程传输(daemon)。华为云主机迁移公司SMS,使用的就是远程通道传输(remote shell)

【rsync工作原理】

1、命令或脚本运行之后,同步端(源端)开始构造FileList,FileList就是被同步端(目标端)需要同步的文件索引,name->id,每个文件都有一个id值,如MD5。

2、全量同步:同步端(源端)构造完成之后,将FileList发送到被同步端(目标端),被同步端(目标端)rsync处理发送FileList,然后开始同步。

3、增量同步:因为2边都有文件,同步端(源端)发送Filelist,被同步端(目标端)用新旧的FileList进行MD5对比,只保留差异文件,构建新的FileList,并回应发送端(源端)。

4、同步端(源端)收到新的FileList后,开始同步文件到同步端。

【rsync的不足】

1、对文件目录扫描,如果文件数量级在百万/千万级,扫描非常耗时,降低了rsync效率。同时对CPU消耗非常大,甚至将源端的服务器卡死。

解决办法:rsync + inotify 解决扫描目录慢,耗CPU的问题。

inotify是linux系统中监控文件变化的工具,可以检测单个文件,也可以检测整个目录。inotify的设计初衷是当内核空间发生某种事件之后,可以立即通知用户,方便用户做出相应。

2、rysnc不能实时检测和同步数据,可以通过守护进程周期性出发同步,两次同步之间会有时间差,属于异步的迁移,数据一致性上存在时间差。

解决办法:该方案只能做异步同步,不能做实时同步。

什么是守护进程?

守护进程是linux的后台服务进程,生命周期较长,在系统加载时启动,在系统关闭时退出,通常独立于控制终端。主要作用:周期性执行某种任务或等待处理某些发生的时间,守护进程常用于定时器timer。本文分析的场景,守护进程主要定时把增/改/删的文件进行增量同步。

【架构图】

基于上述分析和实测发现,增量同步的速度很快,对源服务器的CPU消耗小,推测华为云的SMS工具使用守护进程 + inotify + rsync进行的高效增量同步。百度搜索了很多文章,都没有找到整个方案的架构图,我尝试画一个原理图,便于自己以后回顾,如有不对的地方,欢迎留言讨论。

【小结】

1、rsync 实现文件级的远程同步功能。

2、inotify + rsync 解决扫描目录慢,耗CPU的问题。

3、守护进程 提供定时将差异文件进行同步,即增量同步功能。

主要参考文献:

https://blog.csdn.net/yuanfeng78790/article/details/72633182

【云主机迁移原理】华为云主机迁移服务SMS的原理分析相关推荐

  1. 华为云跨云迁移工具案例实践:阿里云迁移到华为云

    对于阿里云批量迁移到华为云,HyperMotion可以支持批量一键式安装Agent软件,做到了操作步骤简单化.自动化,可以满足常见源端操作系统类型. 例如:Windows 2003-2019,Cent ...

  2. 华为云迁移工具推荐最佳实践:Xen虚拟化迁移到华为云

    1.迁移需求分析 Xen虚拟化是早期半虚拟化技术,现有部分本地还在使用,像Citrix公司开发的XenServer虚拟化管理平台,底层就是运用的xen虚拟化技术底座,但是目前市场使用比较多的还是开源K ...

  3. 阿里云服务器怎么整体迁移到华为云服务器

    买了一台华为云的服务器,怎么将原先阿里云的服务器整体迁移到华为云服务器呢,编程爱好者之家为大家详细讲解下. 一:获取目的端服务器所在账号的AK/SK. 1.登录控制台,鼠标移动至右上方的用户名,在下拉 ...

  4. 华为云迁移工具推荐最佳实践:KVM虚拟化迁移到华为云

    1.迁移需求分析 KVM虚拟化是当前开源虚拟化技术下大家使用比较多的,而且现在好多云底层都是使用的KVM虚拟化作为云平台虚拟化技术底座,华为云也是全面应用了KVM虚拟化技术,所以在将本地KVM的虚拟化 ...

  5. 【华为云技术分享】云图说|第三方云厂商数据如何迁移至华为云OBS?真相在这里......

    很多客户有诉求将自己的业务从第三方云厂商迁移到华为云,发现自己的海量数据已经存放在了第三方云厂商的对象存储中,这部分数据怎么安全高效的迁移到华为云对象存储服务OBS呢? 别担心,一张云图说教会你将数据 ...

  6. 阿里云、腾讯云、UCloud 、华为云云主机对比测试报告

    在2020年初之际,国内专业的云资源选型服务平台CloudBest旗下监测实验室,针对业界4家主流的云服务提供商,包括阿里云.腾讯云.UCloud与华为云进行了横向评测.本次测试在尽量保证测试环境相同 ...

  7. 【本地Mindspore代码迁移至华为云ModelArts平台训练】

    *************************************************** 码字不易,收藏之余,别忘了给我点个赞吧! *************************** ...

  8. Redis从阿里云迁移至华为云

    场景描述 公司服务器需要从阿里云迁移到华为云,但是应用里面有一些自增的编码是存储在redis中的,所以redis的数据也需要从阿里云迁移到华为云,阿里云采用redis 4.0 华为云使用 redis ...

  9. 阿里云、腾讯云、UCloud、华为云云主机对比测试报告 | 技术

    本次测试在尽量保证测试环境相同的情况下,提供客观公正的测试数据,从技术层面对云服务提供商提供的云主机产品进行性能(CPU.磁盘.网络等)与性价比评测. 作者/来源:Cloudbest 在 2020 年 ...

  10. 本地pytorch代码迁移至华为云ModelArts平台训练

    本地pytorch代码迁移至华为云ModelArts平台训练 上传代码和数据集至华为云OBS 注册华为云OBS账号并使用AK登录. 参考这篇文件OBS账号注册和登录 修改pytorch本地训练代码文件 ...

最新文章

  1. android修改系统设置权限_安卓保护隐私利器!完美解决软件「不给权限就不运行」的小工具...
  2. 采购订单中的容差项目解释
  3. 查看windows下系统信息
  4. 修正 010 Editor 模板文件 MachO.bt 的错误
  5. Linux buff/cache和清理占用过高
  6. koa2 session mysql_koa2实现session的两种方式(基于Redis 和MySQL)
  7. 气泡提示效果css.html,用纯CSS3绘制高端简约的气泡提示框
  8. Servlet文件上传功能的实现(commons-fileupload)
  9. 两天学会css基础(一)
  10. mysqlreport
  11. Java学习笔记(13)——Java注释
  12. 如何提高python代码运行速度_一行代码让你的python运行速度提高100倍
  13. linux rpm
  14. 2021-09-14联想云教室连接不上服务器解决办法
  15. 如何制作伪原创视频?呆头鹅批量视频剪辑软件一键处理10万个视频
  16. HDMI-FMC子卡的使用(基于VC707)(中)
  17. 永不消逝的电波(一):无线电入门篇
  18. 大学这么多比赛,我该参加哪个?
  19. 每日十道面试题(五)
  20. 从路边摊到估值100亿,文和友“精神战略”餐饮逻辑

热门文章

  1. 深度学习图像-半自动和自动标注工具
  2. TAGE Branch Predictor/分支预测
  3. u盘在电脑上读不出来?从这几方面排查
  4. linux marvell 网卡驱动,坑爹的marvell linux 网卡驱动
  5. 计算机专业教室三行诗,当学霸写起三行情书,看完第一个就懵了……
  6. Shopnc之nginx安装
  7. Debezium系列之:手动创建存放ddl database.history.kafka.topic对应的topic
  8. Kotlin 使用DSL构建语法结构 看这一篇就够了~
  9. mcafee 8.5i杀毒软件规则配置
  10. echarts地图数据过旧,通过geojson自定义经纬度地图