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 ...
随机推荐
- 图书搜索领域重大突破!用Apache SeaTunnel、Milvus和OpenAI提高书名相似度搜索精准度和效率
作者 | 刘广东,Apache SeaTunnel Committer 背景 目前,现有的图书搜索解决方案(例如公共图书馆使用的解决方案)十分依赖于关键词匹配,而不是对书名实际内容的语义理解.因此会导 ...
- SQL Server 根据一个表数据修改另外一个表数据
今天在写代码的时候发现一个有趣的问题,同时也暴露了之前写的代码有问题,还好之前没有出现重复的情况,及时发现了这个问题,及时改了回来,不然就GG了 下面先上代码,再给大家解说一下 CREATE TABL ...
- C语言。格式化符号
%s 输出字符串 %d 输出整形数字 %f 输出浮点数数字 %c 输出字符 %x 输出16进制 %04d 输出长度固定的整形数字(0001,0002,....)
- mac shell终端命令行快捷键
Ctrl + d 删除一个字符,相当于通常的Delete键(命令行若无所有字符,则相当于exit:处理多行标准输入时也表示eof) Ctrl + h 退格删除一个字符,相当于通常的Backspace键 ...
- 前端关于table的设置
表格超长度后加... table{ table-layout:fixed; } td{ overflow:hidden; text-overflow:ellipsis; white-space:now ...
- Matlab GUI-Gamma选择工具
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path s ...
- 【问题解决】docker版本v23.0后,构建Dockerfile中FROM私库镜像报错构建失败
问题情况 Docker版本在v23.0以后,只要Dockerfile中FROM的私库镜像不存在本地,就会报错: # 我本地是v24.0.2版本Docker [root@localhost ipd]# ...
- C# 中的 数组[]、ArrayList、List
C# 中的 数组[].ArrayList.List 数组 在 C# 中,数组实际上是对象,而不只是如在 C 和 C++ 中的连续内存的可寻址区域. 属性: 数组可以是一维.多维或交错的. 创建数组实例 ...
- Flutter系列文章-Flutter进阶2
这一节我将再详细地为您介绍 Flutter 进阶主题,包括导航和路由.状态管理.异步处理.HTTP请求和Rest API,以及数据持久化.让我们逐个介绍这些主题. 1.导航和路由 在 Flutter ...
- 【入门教程】3202年了,还有人没用stable diffusion画过自己的AI小姐姐吗。
个人绘画作品: 说明 本文主要是讲一下如何安装.使用整合包,以及介绍画真人图片的大模型(介绍的整合包只提供二次元模型,个人不太感兴趣) 通过最简单的介绍帮助大家快速入门,开始画图,不会深入的进行讲解, ...