公司凝聚了素质高、技能强、深谙物流管理的人才,拥有经过专业培训的装卸队伍,积累了丰富的实践管理经验并提供良好的服务。
当前位置:主页 > 创新研发 >
创新研发
中移(苏州)软件技术有限公司云计算产品部高级研发工程师张卓豫:
来源:未知 作者:admin 发布时间:2019-02-01 14:13 浏览量:

  12月22日,由工业和信息化部指导,中国信息通信研究院主办的“2017全球存储大会”在北京国宾酒店隆重召开。大会旨在更好探讨如何引导IT基础设施向更加智能化的方向发展,构建部署灵活、自动化的云环境,开创产业的崭新未来。

  本次大会由云计算开源产业联盟承办,中国移动苏州研发中心协办,邀请来自工业和信息化部、中国信息通信研究院、中国移动省公司领导以及国内外互联网开发者、友商代表莅临现场,与受邀的500余名行业嘉宾,共论在互联网时代存储的发展与精进。

  中移(苏州)软件技术有限公司云计算产品部高级研发工程师张卓豫在下午的Ceph超越传统存储之路分论坛上发表了题为“分布式存储中的热升级技术”的演讲。以下是演讲全文:

  大家下午好,我今天分享一下苏研在分布式存储中的热升级技术,热升级技术不需要重启就可以打补丁的技术,就可以升级线上的bug。这个对于用户无感知的,而不会影响业务。一般升级有几个步骤,就是停止进程,重新进行进程。但是分布式存储带来一个问题,每次升级,相当于这个节点当掉了,触犯一个数据平衡恢复过程,为了避免这个问题,苏研在分布式存储做了一些热升级技术的探索。

  提到热升级就是大家耳熟能详的内核的升级技术,对于用户态的热升级能不能像内核态一样做到用户的无感知的升级呢?我们接下来从三个方面来分享一下,第一,进程热升级技术。其实目前在内核态前面做了很多的工作。我们现在一个基本的思路把内核的热升级技术引入到用户空间,88btt.com,来解决用户空间热升级的问题。

  这个技术主要两个核心的部分,一个热补丁的生成,还有一个热补丁导入到升级中,倒换到替换。对于热补丁主要基于ELF技术实现对已经生成的可执行文件、对象文件进行解析,生成可动态的热补丁文件就可以替换。热补丁基于GCC的gprof,就是统计函数调用的流程,现在我们用它来做一个函数替换的功能,就是把我们函数做一个替换。进程热升级有一个明显的优势,就是说对上层的业务没有影响的,对集群的业务降到最低,而且运维起来也比较方便。

  我们下面就讲一下进程热补丁技术一些细节。对原来的代码打上补丁的代码进行编译,这个也是内核的一个工具,编译前和编译后有两个不同的工具,这些解析工具解析不同,把这部分抽出来,放到热补丁文件里面,生成热补丁的二进制文件。我们为了要做替换,所以要打开一个编译选项,其实对于我们的替换的目标进程也是有要求的,要做一些特殊的定制。经过两次编译我们生成热补丁的文件。

  下面讲一下热补丁加载的工作,其实它的加载,在当前的进程空间里面先影射一块内存,ag88环亚国际娱乐平台,把我们热补丁导入当前的空间,这个热补丁不能用的,引用原来进程中的一些函数或者变量,我们要做一次解析,我们现在有一个新的函数A给原来的A函数打补丁,这个A调用了原来的函数B的函数,我们就需要到当前的进程空间中把这个函数B的地址取出来,放到我们热补丁空间中一这样的热补丁在执行过程中成功找到这个函数B。

  这个是进程热补丁技术的核心技术,函数地址替换。其实本身刚刚我讲的利用GPproxy插入几个函数,这一个要替换的指令。我们调用了函数A,函数调用重定向函数,把这个代理函数,这个函数跑到函数A里面,从这个A置换以后,反到调用者这个里面,这个像热补丁的盗用空间,我是这样认为的。