QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

第二期观点:如何“轻”松驾驭存储丨揭秘 HBlock 背后的黑科技

天翼云

  • 2024-08-21
    北京
  • 本文字数:3296 字

    阅读完需:约 11 分钟

大小:1.64M时长:09:34
第二期观点:如何“轻”松驾驭存储丨揭秘HBlock背后的黑科技

近日,天翼云联合权威科技媒体 InfoQ 举办了以“新存储,更轻量”为主题的线上技术分享会”。天翼云存储产品线总监武志民以“轻量级存储集群控制器,揭秘 HBlock 背后的存储黑科技”为主题,讲解了 HBlock 的创新设计,本文将对其观点进行详细阐述。


高性能·高可用·高可靠:自研创新解决存储技术难题


随着数字经济的蓬勃发展,数据作为核心生产要素,已成为数字经济发展的重要基石。与此同时,数据规模持续爆炸性增长,数据类型不断丰富,企业对存储性能、服务可用性、数据可靠性要求越来越高,从而对存储系统提出了一系列新的挑战。


为此,天翼云自主研发了业内首款存储资源盘活系统 HBlock,HBlock 通过用户态设计,能够与底层基础设施完全解耦,同服务器上现网业务并存,把 x86、ARM、龙芯等异构通用服务器中的存储资源统一管理,通过标准的 iSCSI 协议提供分布式块存储服务。


HBlock 的技术架构从上到下分为三层:访问层、存储服务层和操作系统及硬件层。


HBlock架构


访问层通过 iSCSI 提供块存储服务,通过 API、命令行、Web 界面提供管理服务,同时支持通过 Cinder 和 CSI 插件对接 OpenStack、Kubernetes。


存储服务层的核心是自研的分布式租约,不依赖时钟同步即可提供一致性保证。其中的利旧检测功能可对磁盘、网络、CPU、内存等硬件从多个性能维度进行检测,为用户部署前提供配置建议。存储服务层还提供了高性能、高可用、高可靠、负载均衡保障,在后续我们将详细说明。


硬件和操作系统层支持异构非对称部署。例如,对于不同规格的磁盘,在分配数据时,会根据磁盘的容量,负载,性能表现,网络时延等信息动态分配不同权重,然后计算出不同分配方式,保证各个组件在集群里发挥出最好的性能。


在性能方面,HBlock 单卷 IOPS 可达 15 万次、读写延迟小于 200 微秒,能满足多数业务场景的需求。这要归功于自研的分布式多控架构和智能调度算法,以及多模式写缓存与读缓存的设计。写缓存方面,HBlock 具有 WriteBack、WriteThrough、WriteAround 三种模式,可以根据不同场景的读写需求动态调整。读缓存方面,HBlock 采用按需更新、分段加锁、高效淘汰算法和智能预读器等多重机制,提升内存利用率、提高缓存命中率,并优化高并发场景下的数据访问性能。HBlock 会根据网络距离和节点负载选择最合适的节点,将数据放在缓存中,避免对磁盘频繁的小 IO 操作,更好地发挥存储介质的性能。


HBlock的缓存设计


HBlock 通过多重机制保障服务的高可用。首先,它采用一主多备架构,不依赖外部时钟服务器,实现自动秒级故障切换,分布式双控架构确保缓存数据强一致,在切换过程中保障数据不丢。其次,HBlock 实现了写入速度优化控制功能,当存储空间紧张时,平滑降速写请求,避免业务中断。最后,HBlock 还对内存和重构操作进行限速管理,灵活调整资源分配,确保在高负载情况下仍能稳定运行。


HBlock的一主多备设计


HBlock 通过多种机制来确保数据的高可靠。

数据冗余方面,HBlock 支持多副本和纠删码(EC),支持数据块和校验块总数达到 128 的 EC 配置,得盘率可超过 98%;HBlock 能通过多种故障域的配置来确保数据的持续可用性,应对不同级别的故障;HBlock 独创的副本折叠技术允许在一个故障域放多个副本来提高小规模集群的数据可靠性。例如,只有三个故障域时,可以每个故障域放置两个副本,将 EC2+1 扩展为 EC4+2,得盘率不变的情况下显著提升数据的容错能力,在扩容时,HBlock 可智能调整数据分布,以最大化故障域的利用。


HBlock的副本折叠设计


数据完整性保护方面,HBlock 在数据传输过程中,通过校验码对 iSCSI 协议传输的数据包进行完整性保护,防止在网络传输过程中出现的数据错误;HBlock 在存储介质上读取数据时会进行校验,同时通过定期扫描来提前发现和修复可能存在的静默错误,限制其影响范围,确保数据的长期可靠性和完整性。

HBlock 通过创新设计,全面解决了存储系统中的性能、可用性与可靠性难题,真正实现了“高性能·高可用·高可靠”的卓越存储解决方案。


低门槛·巧分配·超灵活:轻量设计定义存储未来形态

HBlock 采用极简设计模式,安装包只有 170MB 左右,1 核 4GB 内存即可部署,可安装在任何主流 Linux 操作系统上,不依赖 NTP 服务器,3 个命令即可完成安装,3 分钟建立数据中心级别集群,大幅降低使用门槛的同时,发挥硬件资源的全部潜力。


HBlock 轻量易用的背后,是独具匠心的存储引擎设计思路。存储引擎的核心是元数据管理与数据管理,HBlock 的元数据管理通过多级索引等机制,可有效应对大规模数据环境下元数据管理的挑战,实现系统轻量化。


HBlock多级元数据管理


HBlock 的多级元数据管理设计思路包括以下几个方面:

  • 多级元数据索引架构:一级索引记录 iSCSI 卷的逻辑地址(LBA)与数据物理位置的映射关系,直接关联具体的数据位置,但由于数据量庞大,查询效率可能受限;二级索引作为一级索引的汇总,在每个数据服务节点上生成,记录一级索引的范围和位置,可以快速定位到具体的一级索引,大幅提升查询效率,避免全量查询;三级索引记录了整个集群内数据的节点分布情况,体积小可置于缓存中,客户端通过三级索引可以迅速确定数据所在节点,实现高效数据访问。

  • 索引缓存与访问机制:通过索引缓存机制,客户端访问时先从缓存中查找索引,若缓存未命中,则依次通过磁盘读取二级索引、一级索引,直至找到数据对应的位置。这种逐级访问机制减少了对元数据服务的依赖。

  • 元数据持久化与存储可靠性:一级索引与二级索引采用与数据相同的保护方式,保证元数据的持久化和容错能力。三级索引则以三副本方式存储在元数据服务集群中,确保其可靠性。

  • 轻量化混合部署:在实际部署中,HBlock 自动选择适配的节点进行多服务角色的混合部署,只需要三个节点即可正常部署元数据服务、iSCSI 服务和数据服务,充分利用硬件资源。


除了元数据外,HBlock 对数据存储服务也进行了轻量化设计,通过使用本地文件系统与其他业务系统共享资源,并支持容量配额来限制磁盘空间占用;通过多因子算法动态优化磁盘读写请求分配,减少系统调用和内存复制;结合读校验与定期扫描机制,有效限制静默错误的影响,确保数据存储的可靠性。

HBlock 的多存储池功能通过灵活配置和高效管理,充分发挥硬件潜力。HBlock 能够在单个集群中统一管理不同规格的硬件设备,可以根据性能、容量、故障域等因素创建多种类型的存储池。例如,可以将 NVMe 磁盘划分为高性能存储池,将 HDD 磁盘划分为容量池,将老旧和新设备分别分配到不同的存储池,以实现故障隔离和资源优化。


HBlock 允许在每个卷设置独立的数据冗余保护策略,精准适配业务系统对数据可靠性的不同需求。HBlock 还引入了跨节点高速缓存池,无需每个节点都配备高速盘,避免了传统缓存机制中的性能瓶颈和数据重构时的读写放大问题,高速缓存池不会独占高速磁盘,允许这些磁盘同时用于其他业务系统,提高资源的共享效率。


HBlock 还通过一系列优化策略实现了负载均衡,确保集群整体性能的最优表现。HBlock 可动态调整数据分布,确保在异构集群中,数据合理分布于各节点,避免过度占用某一资源;HBlock 支持纵向和横向扩容,在新增存储设备或故障域时,系统会优先向新设备分配数据,系统会在业务低谷期自动进行存量数据的均衡搬移,避免影响业务的 IO 性能。


在创建高可用卷(HA 卷)时,HBlock 会根据集群情况自动优化服务分布,采用无初值预测分布模型,预先估算集群整体的内存和网络负载情况,并根据集群的当前状态(包括内存使用情况、网络带宽、已有卷的分布情况等)来选择最优的节点分配数据,确保读写性能最大化,降低网络和内存的使用压力。这些策略使 HBlock 在负载均衡方面表现出色,能够充分发挥集群中各种硬件的潜力。


HA卷服务的分布均衡


HBlock 将轻量化与高效能相结合,彻底革新了存储的部署和管理方式,重新定义了未来存储系统的形态。


结语

HBlock 凭借卓越的创新设计和技术实现,不仅解决了存储系统中的性能、可用性和可靠性难题,更开创了存储新纪元,重新定义了分布式存储的未来形态。HBlock 将继续引领行业发展,赋能各行各业的数字化转型,为企业释放数据的无限潜力铺平道路,推动更多创新应用场景落地,助力企业迈向更广阔的数字未来。


天翼云 HBlock 众测活动火热进行中

为了让“轻量存储”走进更多企业,InfoQ 和天翼云联合举办“HBlock 有奖众测活动”,欢迎广大存储 Geek 踊跃报名,深度体验轻量存储带来的不一样,将使用心得发布在 InfoQ 写作社区,即可参与评选并获得丰厚礼品!



2024-08-21 17:548008

评论

发布
暂无评论
发现更多内容

【云原生 | 从零开始学Kubernetes】一、kubernetes到底是个啥

泡泡

云计算 云原生 k8s 9月月更

监控系统的阶段建设

穿过生命散发芬芳

监控系统 9月月更

《简单记个笔记》之表单标签加CSS选择器

吉师职业混子

9月月更

面试突击85:为什么事务@Transactional会失效?

王磊

Java 面试

开发者有话说|时间过得真快,我也是一个“奔三”的人了

武师叔

个人成长

Python 教程之变量

芯动大师

变量 9月月更 Python语法

PLG SaaS 产品 Figma 商业模式拆解

程序员泥瓦匠

SaaS

Web3.0杂谈-#001(47/100)

hackstoic

Web3.0

通过爬虫爬取一些图片

吉师职业混子

9月月更

在windows电脑上配置kubectl远程操作kubernetes

程序员欣宸

Kubernetes 9月月更

Qt|ListWidget控件总结

中国好公民st

List qt 9月月更

【数据结构】五分钟带你了解及自定义有向图

迷彩

数据结构 算法 无向图 9月月更 有向图

ESP32-C3入门教程 基础篇(四、I2C总线 — 与SHT21温湿度传感器通讯)

矜辰所致

I2C I2C协议 ESP32-C3 9月月更

C++学习---cstdio的源码学习分析04-创建临时文件函数tmpfile

桑榆

c++ 源码阅读 9月月更

2022-09-19:给定字符串 S and T,找出 S 中最短的(连续)子串 W ,使得 T 是 W 的 子序列 。 如果 S 中没有窗口可以包含 T 中的所有字符,返回空字符串 ““。 如果有不

福大大架构师每日一题

算法 rust 福大大

面对全新的编程语言,这些思路可以帮助你察觉漏洞

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞利用

史上最详细vue的入门基础

楠羽

Vue 笔记 9月月更

ESP32-C3入门教程 基础篇(三、UART模块 — 与Enocean无线模块串口通信)

矜辰所致

ESP32-C3 9月月更 UART

概述构建应用智能运维系统的核心能力

阿泽🧸

智能运维 9月月更

《简单记个笔记》之部分CSS选择器介绍

吉师职业混子

9月月更

【字符串函数内功修炼】strlen + strstr + strtok + strerror(三)

Albert Edison

C语言 9月月更 strlen strstr strtok

Python语法之数据类型

芯动大师

Python 数据类型 9月月更

4 分钟优化 Fetch 函数写法~

掘金安东尼

前端 9月月更

开发者有话说|情分 or 本分

卷卷龙

个人成长 职场 PUA

2022-09-20:以下go语言代码输出什么?A:8 8;B:8 16;C:16 16;D:16 8。 package main import ( “unsafe“ “fmt“ )

福大大架构师每日一题

golang 福大大 选择题

Python教程之Python简介

芯动大师

编程语言 9月月更 Python简介

[极致用户体验] 多页面应用里,「网页内返回」按钮,何时用 history.back 何时用 replaceState?

HullQin

CSS JavaScript html 前端 9月月更

挑战30天学完Python:Day3夯实基础-布尔值和运算符

MegaQi

9月月更 挑战30天学完Python

Chrome操作指南——入门篇(五)Snippets

Augus

Chrome开发者工具 9月月更

第二期观点:如何“轻”松驾驭存储丨揭秘HBlock背后的黑科技_云计算_InfoQ精选文章