青云QingCloud
作者青云QingCloud·2021-03-16 10:29
技术经理·北京青云科技股份有限公司

面向核心业务的全闪分布式存储架构设计与实践

字数 4716阅读 2616评论 0赞 0

QingStor NeonSAN 是一款面向核心业务设计的全闪分布式块存储,打破了传统存储的容量与水平扩展的瓶颈,性能可以媲美全闪中高端存储阵列, 能够很好支持 Oracle RAC 等关键应用,在金融、电力、广电、制造、测绘等行业广泛落地。

我们将在本文中揭开 NeonSAN 架构的神秘面纱,介绍她是如何做到高性能和高可靠的产品体验,并在最后详细分享一个典型案例: NeonSAN 替换 Oracle 一体机,承载某大型保险集团 OLTP 和 OLAP 系统, 满足数据不断增长的互联网金融业务需求。

1. 面向闪存的三种存储方案

如下图 所示,目前业界基于全闪的存储方案主要有以下三种:

1.传统方式

因为传统的存储诞生在机械盘的时代,是面向机械盘设计的,IOPS 通常在一百左右。而当前主流 NVMe SSD 的性能已经达到百万 IOPS 级别。这两类存储介质的机制迥异。

受限于底层架构的设计,传统存储并没有针对全闪进行有效的软件改造或者优化,无法全部发挥 NVMe SSD 的性能,此类方案已经不再适合承载高速闪存介质。

2.全闪阵列

全闪阵列的性能相比传统方式有了很大提升。

但是,全闪阵列通常采用专有的硬件,成本高昂。另外,传统阵列一般采用双控制器互为备份,纵向扩展无法提升性能,横向扩展受限于控制器的数量。这使得全闪阵列无法灵活适应数据爆发增长的业务场景。

3.全闪分布式存储

分布式存储是通过网络将存储节点联系在一起,以集群的形式提供服务。

通常采用通用的 X86 硬件,使硬件标准化,可以降低 TCO。 集群中每一个节点都具备存储和计算能力,随着节点的增加集群的容量和性能得到线性扩展。 无中心设计使集群不易形成瓶颈节点,理论上可以无限扩展。 针对 NVMe SSD 进行特殊的设计和优化,性能强劲。

另外,随着 25G、100G 网络的普及和 RDMA 网络低延迟的特性,使得分布式全闪的跨节点扩展不再是瓶颈。 在全闪存和高速RDMA 网络的加持下,分布式全闪架构已经成为企业核心业务的理想之选 。

2. 企业级分布式块存储

关于 NeonSAN 名字的由来:后半部分是SAN代表了产品的形态;Neon 是元素周期表里面氖的代号,是一种惰性气体,具有极高的稳定性。所以 NeonSAN 的名字寓意着这是一款稳定的企业级存储产品。

NeonSAN 核心模块由数据层和控制层组成,此外包括前端接口与运维管理工具层。

NeonSAN 核心模块采用并行流水线技术,设计了全闪存储系统的资源调度系统、内存管理系统、元数据管理系统、RDMA 网络收发系统等,打造高可用、高可靠、高性能、扩展灵活的全闪分布式存储。

NeonSAN 提供 9 个 9 可靠性,单卷性能达到 10 万 IOPS,最小延迟小于 90 微秒。

在扩展方面,NeonSAN 可以扩至 4096 节点,容量和性能随节点的增加而线性增长。

NeonSAN 的基本架构是由 Zookeeper 服务、元数据服务、管理服务、存储服务和接入服务五部分构成。

Zookeeper 提供集群的发现服务;元数据服务用来记录集群中的元数据,如节点信息、SSD 的信息、卷信息等;

管理服务提供集群的管理功能,如节点的上线、创建卷等。

数据存储服务用来给客户提供具体的 I/O,承载业务发来的 I/O 请求。 其采用对等的设计,每个存储节点的地位是相等的,都可以提供 I/O 服务。

对等设计可以保证集群的某一个节点发生故障时,其他节点能够接替故障节点继续服务,保证业务的连续性,同时为集群的容量和性能线性扩展提供基础。

接入服务,第一个模块是 QBD 内核驱动,在 Windows Server 和 Linux Server 上都有对应的版本,它可以让服务器以使用本地盘的方式使用 NeonSAN,上层业务不需要做任何改造就可以对接 NeonSAN,非常方便。

第二个模块是 QEMU,可以为虚机提供云硬盘。

第三个模块是通用的 iSCSI 接口,可以为 VMware 等虚拟化平台提供存储服务。

第四个模块是 NVMe-oF 接口,提供端到端的高速数据传输服务,具备非凡的性能。

此外,还提供 CSI 接口,为容器提供持久化的存储服务。其支持提供克隆、快照、QoS、在线扩容等高级功能。

3.如何满足网络高可靠和高可用

NeonSAN 的网络分为两部分:前端业务网络和后端互联网络,采用两个前端交换机和两个后端交换机,组建高可用网络。

每个 NenonSAN 节点配备双网卡,每张网卡有两个网口,分别连接到后端交换机和前端交换机。

假如交换机 A 发生故障就会影响到 NeonSAN 1、2、3 节点的网卡 A,凡是通过这些网卡进行交互的业务也会受到影响。 此时 NeonSAN 节点就会自动把网络流量切换到网卡 B 上,走交换机 B,保证整个集群网络的可用性。

4.如何满足数据高可靠和高可用

NeonSAN 的数据可靠性及可用性是通过副本机制来实现的。

在 Linux 服务下看到块设备,或者在 Windows Server 下我们看到一张盘,对应到 NeonSAN 集群里,就会把这个盘切成一片片的 Shard。

如上图所示,有红、黄、绿、紫这四个片,每一片都会有三副本,分别存放在不同的节点。任何一个节点上的数据损坏,都不会导致数据的丢失。

如果节点 1 不能提供服务,节点 2 或 3 可以继续提供服务,保证整个集群的可用性。

NeonSAN 的数据写入是三个副本同时写入,保证数据间的强一致性。数据的读取是从主副本读的。数据的副本可以按卷进行灵活的配置,在一个集群中既可以有单副本的卷,也可以有两副本的卷,还可以有三副本的卷。

NeonSAN 支持精简置备和全置备,一个集群可以同时存在精简置备的卷和全置备的卷。

我们通过一个例子来介绍 NeonSAN 强一致性写过程中的 I/O 路径。

首先,客户端发 I/O 给三副本的主副本节点,当主副本节点收到 I/O 请求后会同时做两件事:将 I/O 请求发给它本地的 SSD,同时也会把这个请求发给两个从副本。当两个从副本 I/O 完成以及本地的 I/O 同时完成后才会返回给客户端写成功,实现强一致三副本的写入。

5. NeonSAN 的独门秘籍

NeonSAN 是一个面向全闪的分布式存储系统,针对全闪有哪些特殊的设计?

首先, NeonSAN 采用了 极短 I/O 路径 ,这是可以提供卓越性能的根本。

NeonSAN 只要 3 步就可以完成一个 I/O,当客户端的 I/O 发到存储节点后,存储软件做完处理后直接发给本地的 SSD。

业界某些分布式存储,比如 Ceph,却要经历很多步骤:先经过存储软件的处理,再发给本地文件系统,还要写日志,某些系统还需要再经过缓存,最后才能落到 SSD,这个 I/O 路径是非常长的。简单来说就是很慢。

NeonSAN 采用自研 SSD 管理模块直接管理本地裸设备,不依赖本地的文件系统,不需要日志,也不需要 Cache,极大精简了 I/O 路径,从而让延迟减少到最低,接近于 SSD 延迟的量级。

传统机械盘只有 1 个队列,深度是 32,NVMe SSD 一般盘有 128 个队列,每个队列的深度是 128,还采用传统的软件设计,显然 NVMe 是处于饥饿的状态,无法发挥队列和深度优势。

NeonSAN 采用并行流水线,将 I/O 进行拆分,拆分成接收、调度和落盘。

举个例子,在机械盘的年代就像超市只有 1 个收银台,只能排 1 队。但是到了 NVMe SSD 时代,超市有 128 个收银台。如果我们还排 1 队就对资源造成极大的浪费,所以需要采用多个队列并行 I/O,充分发挥 NVMe SSD 本身的性能,提升 SSD 的使用率。

在微秒的 SSD 时代,操作系统逐渐暴露出一些问题。比如低效 CPU 核心调度和内存资源的竞争,以及调度时的切换等带来了巨大的延迟。

在高并发的压力下,多核心 CPU 的竞争与不合理的调度成为性能的瓶颈。NeonSAN 专门设计了资源调度引擎,避免由于调度问题和内存争抢问题带来的延迟开销。

首先,在网卡上我们分配专门的接收与解析 I/O 流水线,针对 I/O 调度流水线我们给它分配了独享的 CPU,避免调度流水线来回切换产生不必要的上下文开销,做到特定的 CPU 服务专门的流水线。

在内存方面,在系统软件启动时一次申请所需内存,根据不同流水线需求的多少按需分配给接收与解析 I/O 调度、数据落盘等流水线,避免在 I/O 过程中频繁申请与释放,带来的访问页表、内存锁等额外开销及内存碎片问题。

资源调度引擎保障了 NeonSAN 在获得高效 I/O 的同时将延迟控制在很低的水平。

分布式存储是依赖于网络的。NeonSAN 将业务与数据网络分离,存储网络中的 I/O 不会对业务网络造成压力,避免资源的竞争。

NeonSAN 采用端到端的 RDMA 网络设计,无论是存储内部节点之间还是存储服务和客户端之间都采用了 RDMA 网络。

RDMA 网络的内核旁路(kernel bypass)与零拷贝的特点让网络中的单个 I/O 延迟变得非常低,基于异步的消息机制能让多个 I/O 的并发显得效率更高。

6. 压力和性能测试

上面介绍了 NeonSAN 的基本架构与面向全闪的特殊设计,接下来看看 NeonSAN 的真实性能表现。

从 E 企研究院的测试结果可以看到:在两个客户端压力下,随着卷数量的增加,NeonSAN 集群提供的性能线性增长,延迟几乎不变。

以 4K 写为例,单个卷的 IOPS 是 13 万多,4 个卷的 IOPS 增加到 47 万,接近线性增长;单个卷的延迟是 0.943 毫秒,4 个卷的延迟基本没什么变化。

7. 典型案例

在采用分布式架构之前,用户采用 Oracle SuperCluster Solaris 平台,采购与维保费用昂贵,且扩容复杂,无法快速适应业务发展的需求。

于是客户把视角转到了基于 X86 计算与存储分离的分布式架构,采用三节点全闪配置的 NeonSAN 作为存储节点,配置三副本用于Oracle 数据库存储卷。

截止2020年底,用户已经完成了数次扩容,NeonSAN 整体规模已经达到了几十个节点,承载 OLTP 和 OLAP 业务,满足数据不断增长的互联网金融业务需求。

案例详情 -- 某大型保险集团在线财险业务系统分布式存储架构实践"。

NeonSAN 分布式存储方案的优势主要体现在以下几个方面:

首先,采用计算与存储分离的全分布式架构后,海量的数据压力分散到了多个并发存储节点,系统性能、吞吐量按照线性扩展。

其次,全闪的存储节点之间采用 RDMA 互联,性能提升 100% 以上,存储系统提供负载均衡机制,有效避免单点性能瓶颈。

通过开放的 X86 平台取代了传统数据库一体机与集中式存储设备,大幅缩短了存储系统的建设与扩容周期,有效满足业务数据量激增的扩容需求,同时大幅度节省采购、维护与运营成本。

8.总结

NeonSAN 针对全闪等新型存储介质进行的架构设计,能够提供高可靠、高可用,性能卓越的存储服务,其丰富的接口,可以承载数据库等传统应用,原生适配虚拟化、大数据、容器等多种应用生态,服务云时代高效的数据存储和管理。

NeonSAN 具备丰富的企业级特性,基于同步及异步的数据复制可以灵活构建各类灾备和双活解决方案。经过大量企业客户核心业务的长期验证,NeonSAN 是一款真正可以承载企业核心业务的全闪分布式存储产品。

本文作者:魏国武, QingStor 资深研发工程师

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广