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