04-华为HyperReplication中的多时间片技术
简介
多时间片技术,是应用于HyperReplication的异步远程复制;提高效率, 在同步远程复制中,没有这个概念;
时间片:在Cache中管理一段时间内写入数据的逻辑空间(数据大小没有限定);
HyperReplication,基于cache多时间快照技术,主端需要做COW时,主机IO写入Cache即可返回,不需要等COW完成后才返回,减少了COW对主机性能的影响,极大降低了远程复制同步数据时对主机的性能影响,同时远程复制拷贝数据时,主端直接从Cache读取拷贝数据,拷贝时延较小,使异步远程复制支持秒级RPO。

实现原理:
HyperReplication LUN异步远程复制基于多时间片缓存技术,周期性的同步主、从LUN的数据,上一次同步以来主LUN上发生的所有变化会在下一次同步时写到从LUN上。
OceanStor存储系统异步远程复制采用了创新的多时间片缓存技术(专利号:PCT/CN2013/080203),其实现原理如下:
1) 与同步远程复制类似,当主站点的主LUN和远端复制站点的从LUN建立异步远程复制关系以后,默认情况下会启动一个初始同步,将主LUN数据全量拷贝到从LUN;
2) 初始同步完成后,从LUN数据状态变为完整(即从LUN为主LUN的过去某个时刻的一致性拷贝),然后开始按照下面的流程进行I/O处理:

① 每当间隔一个同步周期(由用户设定,范围为3s~1440min),系统会自动启动一个将主站点数据增量同步到从站点的同步过程(如果同步类型为手动,则需要用户来触发同步)。每个复制周期启动时在主LUN(LUN A)和从LUN(LUN B)的缓存中产生新的时间片(TPN+1和TPX+1);
② 主站点接收生产主机写请求;
③ 主站点将写请求的数据写入Cache时间片TPN+1中,立即响应主机写完成;
④ 同步数据时,读取前一个周期主LUN(LUN A)Cache时间片TPN的数据,传输到从站点,写入从LUN(LUN B)Cache时间片TPX+1中;
若主站点Cache写缓存达到高水位时会自动将数据从Cache写入硬盘中,此时时间片TPN的数据会在盘上生成快照,同步时已写入硬盘的数据从快照中读取并复制到从LUN(LUN B);
⑤ 同步数据完成后,按照刷盘策略将主LUN(LUN A)和从LUN(LUN B)Cache中时间片TPN和TPX+1的数据下盘(生成的快照自动删除),等待下一个同步的到来。
多时间片缓存技术对LUN异步远程复制的影响
秒级RPO
HyperReplication基于多时间片缓存技术,可以使LUN异步远程复制的RPO指标达到秒级。
基于多时间片缓存技术,Cache中的数据和与Cache交互的IO都携带时间片信息,在进行复制时,可以直接从主LUN Cache中读取相应时间片的数据复制到从LUN,写从LUN时写入其Cache即可返回。而传统异步复制,每个周期需要创建、删除快照,复制时读数据需要从快照读取,写数据需要做快照处理。相对于传统技术,HyperReplication极大的缩短了复制周期,可以达到秒级RPO。
从LUN数据完全保护
OceanStor存储系统的异步远程复制支持对从LUN数据的完全保护。在从站点,主机对从LUN的读、写有权限控制,当同步中断或从LUN数据不可用时,可以将前一个TPX周期的数据恢复到从LUN,覆盖第TPX+1个周期的数据,使从LUN回退到最近一次同步开始前时间点的可用数据。
从LUN可写
OceanStor存储系统异步远程复制支持从LUN可写。默认情况下,异步远程复制从LUN是只读的,设置从LUN可写需满足以下两个条件:
1) 远程复制处于***或异常断开状态;
2) 远程复制从LUN数据必须是完整的(当从LUN数据不完整时,从LUN数据此时不可用,不能设置为从LUN可写)。
当设置从LUN可写时,若从LUN存在保护时间点TPX,则会触发回滚,将从LUN的数据回滚到TPx,使从LUN数据恢复到最近一次可用数据。
OceanStor存储系统支持对从LUN的写记录差异,当主站点生产阵列恢复后,可通过比较主从差异,进行增量同步来使得灾难恢复后业务快速回切。
04-华为HyperReplication中的多时间片技术的更多相关文章
- 【DDD/CQRS/微服务架构案例】在Ubuntu 14.04.4 LTS中运行WeText项目的服务端
在<WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例>文章中,我介绍了自己用Visual Studio 2015(C# 6.0 with .NET Frame ...
- Linux 中的零拷贝技术,第 1 部分
概述 本系列由两篇文章组成,介绍了当前用于 Linux 操作系统上的几种零拷贝技术,简单描述了各种零拷贝技术的实现,以及它们的特点和适用场景.本文是本系列文章的第一部分,主要是介绍一些零拷贝技术的相关 ...
- CSS3中新出现的技术
CSS3中新出现的技术 CSS媒体查询 媒体查询 包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3加入的媒体查询使得无需修改内容便可以使样式应用于某些特定 ...
- Android中通过进程注入技术改动广播接收器的优先级
前言 这个周末又没有吊事,在家研究了怎样通过进程的注入技术改动广播接收器的优先级.关于这个应用场景是非常多的.并且也非常重要.所以就非常急的去fixed了. Android中的四大组件中有一个广播:B ...
- [转帖]Linux 中的零拷贝技术,第 1 部分
Linux 中的零拷贝技术,第 1 部分 https://www.ibm.com/developerworks/cn/linux/l-cn-zerocopy1/index.html 引言 传统的 ...
- Android中通过进程注入技术修改广播接收器的优先级
前言 这个周末又没有吊事,在家研究了如何通过进程的注入技术修改广播接收器的优先级,关于这个应用场景是很多的,而且也很重要,所以就很急的去fixed了. Android中的四大组件中有一个广播:Broa ...
- 【转】代码中特殊的注释技术——TODO、FIXME和XXX的用处
(转自:http://blog.csdn.net/reille/article/details/7161942) 作者:reille 本博客网址:http://blog.csdn.net/reille ...
- 【Cocos2d-x游戏开发】Cocos2d-x中的数据存储技术
一.引言 数据存储和网络功能可以说是一款游戏中必不可少的功能,如果一款游戏不能保存进度那么它的可玩性必然大打折扣(试想一下,玩家辛辛苦苦玩了一整天的游戏,结果退出时告诉人家不能保存关卡信息,你明天还得 ...
- OpenGL中实现双缓冲技术
在OpenGL中实现双缓冲技术的一种简单方法: 1.在调用glutInitDisplayMode函数时, 开启GLUT_DOUBLE,即glutInitDisplayMode(GLUT_RGB | G ...
- Android中的接口回调技术
Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James ...
随机推荐
- 一文读懂什么是AIGC?
目录 AIGC概念 AIGC发展历史 在早期萌芽阶段(1950s~1990s) 在沉淀累积阶段(1990s~2010s) 在快速发展阶段(2010s~至今) ChatGPT AIGC能做什么? 电子商 ...
- PB从入坑到放弃(一)第一个HelloWorld程序
前言 网上关于PowerBuilder的资料确实是少之又少. 为了方便,后面我们都用pb 来代替PowerBuilder 说到这不得不来说说自己的pb入坑经历, 自己也不是计算机科班出生. 刚到公司面 ...
- 每日一题 力扣 1090 https://leetcode.cn/problems/largest-values-from-labels/
每日一题 力扣 1090 https://leetcode.cn/problems/largest-values-from-labels/ 先对这道题目进行排序,贪心一下,要求分数最高的放在前面,而标 ...
- 超越.NET极限:我打造的高精度数值计算库
超越.NET极限:我打造的高精度数值计算库 还记得那一天,我大学刚毕业,紧张又兴奋地走进人生第一场.NET工作面试.我还清楚地记得那个房间的气氛,空调呼呼地吹着,面试官的表情严肃而深沉.我们进行了一番 ...
- test20230304考试总结(2023春 · 字符串)
前言 赛时得分明细: A B C D Total Rank 100 100 0 70 270 2 C题如此说道:字符串没有学好的报应!! A. P4391 [BOI2009]Radio Transmi ...
- Cilium系列-8-绕过 IPTables 连接跟踪
系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, ...
- TypeScript: Object is of type 'unknown'.
错误代码展示 解决方案 将e声明为any类型,如下所示: // 修改蛇的X和Y值 try { this.snake.X = X; this.snake.Y = Y; }catch(e:any){ // ...
- 【go语言】3.1.2 接口的定义和实现
在 Go 中,接口是一种抽象类型,用来描述其他类型应该有哪些方法.它定义了一组方法,但没有实现.这些方法由其他类型实现. 接口的定义 接口定义的格式如下: type InterfaceName int ...
- IE浏览器不支持TextDecoder()的问题
IE浏览器不支持TextDecoder()方法,因此在进行Arrbuffer转string或中文时,出现未定义的错误.通过网上查找方法,可以通过引用第三方库进行解决. github地址:https:/ ...
- 【腾讯云 Cloud Studio 实战训练营】在线 IDE 编写 canvas 转换黑白风格头像
关于 Cloud Studio Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站.用户在使用Cloud Studio 时无需安装,随时随地打开浏 ...