近日,天翼云联合科技媒体InfoQ举办了以“存储难题新解法,揭秘极致易用的HBlock”为主题的线上技术分享会。天翼云国际业务事业部存储产品线总监潘亚莲与研发专家武志民参与了第一期分享,以“革命性软件定义存储HBlock,极致易用背后的技术解析”为主题,分享了HBlock的产品理念、应用场景、技术架构设计等内容。
天翼云推出革命性软件定义存储HBlock
IDC预测,到2025年我国数据量将增长到48.6ZB,这给企业存储系统的容量、性能、运维、成本、灵活性等带来全方位挑战。此外,由于过度配置、数据孤岛、冗余备份、低访问速度、低效搜索,以及中断性的传输和迁移等操作,机房存在存储资源利用率低的问题。
为了解决异构存储和数据孤岛给企业带来的存储高成本、低效率的难题,天翼云研发出国内首款存储资源盘活系统——HBlock。
![](https://pic.doit.com.cn/2023/09/111-5.jpg)
HBlock是一款全用户态的软件定义存储产品,能够和底层基础设施完全解耦,和服务器上现有的业务并存,可以把通用的X86、ARM、龙芯等不同架构的服务器和它上面管理的存储资源统一管理,转换成高性能的虚拟存储阵列,通过标准的iSCSI协议提供分布式块存储服务。
高效管理 轻松盘活
用户可以通过HBlock对自己的存储资源进行全面高效的管理与使用,这些是通过管理平面各种功能来实现的。从管理平面上看,HBlock分为四层:访问接入层、校验层、服务层和数据层。
![](https://pic.doit.com.cn/2023/09/112-1.jpg)
★在访问接入层,用户可以使用API、命令行、管理控制台的方式,对HBlock进行灵活、直观、全面的管理。
★在校验层,HBlock采用HTTPS、加密鉴权以及接口校验的方式来确保接入的安全。
★在服务层,用户可以根据自己本地硬件资源来选择创建单机版或集群版服务端,3分钟就可完成部署,对存储资源进行创建、删除、扩容、统计、监控等操作。使用过程中出现任何问题,天翼云工程师都可以远程协助,接入到系统进行故障诊断排查,若考虑到隐私问题,也可以将运行日志发送给天翼云工程师进行排障。用户也可以设置邮件地址,来及时接收系统的告警信息。
★在数据层,HBlock对用户的数据进行统一管理,通过独特的技术架构实现高性能。
HBlock极致易用背后的关键技术
HBlock不光为用户提供了高效、全面、灵活的管理手段,还提供了极高的性能。这一切的背后,是优秀技术架构的支撑。HBlock的技术架构从上到下分为三层:访问层、存储服务层和操作系统及硬件层。
![](https://pic.doit.com.cn/2023/09/113.jpg)
最上方是访问层,通过iSCSI提供块存储服务,通过API、命令行、Web界面提供管理服务,还支持OpenStack、K8S的CSI driver等管理方式。
中间是存储服务层,其核心是分布式租约模块,它是天翼云完全自研的,不要求时钟强一致或频率强一致,就可以为数据服务和管理服务提供一致性保证。
存储服务层还提供利旧检测功能,用户在安装HBlock之前,可以利用这个工具对磁盘、网络、CPU、内存等多个性能维度进行综合检测,让用户尽早的对各个部件的性能有基准的认识,识别出潜在的性能短板。
存储服务层的另一个重要模块是缓存,这是HBlock高性能优化的重点,后面会详细介绍。
存储服务层还包括HA、数据冗余、故障域、数据重构等模块,提供了高可用、高可靠保障。IO调度、索引、数据均衡模块,根据智能调度算法,保证各个节点、各个磁盘负载均衡,及时移出产生性能瓶颈的组件。
最下方操作系统及硬件层,HBlock做到了真正的硬件异构。例如,对于不同规格的磁盘,在分配数据的时候,会根据磁盘的容量、负载、性能表现、网络时延等信息去动态分配不同权重,然后计算出不同分配方式,保证各个组件在集群里发挥出最好的性能。
1、写缓存的多模式匹配
HBlock作为块存储产品,其性能最直观地反映在数据读写能力上。HBlock是通过写缓存与读缓存的设计来实现高性能的,接下来,我们就详细了解一下HBlock写入与读取数据的过程。
首先,看一下写入数据流:
客户端发起写请求,数据正常放到写缓存以后,继续到第二个备节点的写缓存,写成功后才会向客户端反馈成功。这样既可以保证数据在两个节点都有留存(避免了单点故障),又可以保证数据无需落盘,到缓存就结束,IO路径也可以尽量短,这样写的延时是相对较低。这是HBlock写入的基本流程,也被称为WriteBack。
![](https://pic.doit.com.cn/2023/09/114.jpg)
数据在写缓存里,根据不同的策略执行落盘。有定量策略,比如脏数据达到一定的比例后就会落盘;有定时策略,比如脏数据达到一定的时间就会落盘;还有主动策略,比如客户端如果主动地发过来sync命令,也会落盘。落盘后会把数据放到读缓存,之后更新索引。
可能有用户会担心:虽然避免了单点故障,但是如果数据已经写入内存返回写入成功,但还未落盘这段时间,集群整体发生故障,数据一样会丢。
针对这种情况,HBlock设计了另外两种写缓存模式:WriteThrough、WriteAround。
WriteThrough模式下,数据到写缓存以后会继续等待数据落盘,等到数据真正落完盘以后再去向客户端反馈成功。
WriteAround跟WriteThrough很类似,唯一的区别就是最后一步,它在落完盘以后数据不会进入到读缓存。
![](https://pic.doit.com.cn/2023/09/115-2.jpg)
这三种不同的写缓存有各自的适用场景。比如WriteBack,它的数据都是到内存就结束,所以它的读写性能相对来说比较高。WriteThrough和WriteAround每次数据都要落盘,所以它的写性能相比WriteBack来说要低一些。对于WriteAround来说,因为最后数据不进读缓存,所以它更适合于写多读少的场景,相应它占用的内存也是最少,所以在具体使用的时候,可以根据不同的业务场景去做不同的配置。
三种缓存模式总结如下:
![](https://pic.doit.com.cn/2023/09/116-1.jpg)
关于WriteThrough和WriteAround,因为每次写都会落盘,会明显增加系统调用,更严重的是会增加对磁盘sync的次数。因此HBlock设计了自适应的写缓存,根据客户端的并发情况和磁盘的负载表现,去动态的调整对sync合并的时机,去平衡写请求等待时间和底层磁盘压力。
2、读缓存与预读器的优化机制
了解完数据写入流程,接下来,看一下数据读取流程:
读请求到达以后,会依次从写缓存、读缓存中寻找数据。若没找到数据,就会到相应的磁盘上直接读,HBlock会根据网络距离和节点负载选择最合适的节点。当它读完以后会把数据放到读缓存里,最后就可以向客户端返回数据了。
考虑到时间局部性原理,刚访问过的数据,将来可能还会被访问,这些数据就进入读缓存。根据不同的场景用户可以调整读缓存的大小或直接关掉。
考虑到空间局部性的原理,刚读过数据的相邻数据也有可能会被读到,所以会由预读器来判断是否需要从磁盘里提前把这些数据读上。通过预读器,HBlock大幅度提升了客户端小IO顺序读的性能,减少了客户端读请求的响应延时,避免对磁盘进行频繁的小IO的操作,更好地发挥磁盘的性能。
以上就是HBlock高性能背后的各种缓存机制,它们也确实发挥出很好的效果:块存储主要的性能指标是大IO的带宽和小IO的IOPS,与开源的Ceph进行对比,从带宽的角度看,HBlock的写性能稳定优于开源Ceph,从IOPS的角度看,HBlock的写性能更是可以达到开源Ceph的3-5倍。
直播预告
9月6日19:00,HBlock深度揭秘
如何保障服务高可用、数据高可靠、服务超易用、省钱不丢数据……以上对于成本、性能、安全性的考量,是企业在选择分布式存储产品时的重要因素。
围绕这些问题,天翼云国际业务事业部存储研发专家武志民和天翼云国际业务事业部存储产品线总监魏玮做客直播间,带来“HBlock实战,深挖独创存储技术亮点”的分享。
为了感谢用户的支持与陪伴
天翼云现面向广大社区伙伴及开发者
提供上限1PB、1024节点的
永久免费私有云块存储服务
(仅限存储资源盘活系统3.4版本)
这里有
专家“一对一”指导
灵活多样的“软”服务
活动将于2023.10.31截止
不要犹豫
快来扫描下方海报上的二维码参加吧~
![](https://pic.doit.com.cn/2023/09/117.jpg)
想了解更多HBlock相关一手资讯?
锁定天翼云视频号
9月6日19:00
我们不见不散!