加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

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

发布时间:2020-04-16 21:29:54 所属栏目:动态 来源:站长网
导读:当今是云计算、大数据的时代,企业业务持续增长需要存储系统的 IO 性能也持续增长。 机械盘本身的 IOPS 一直徘徊在数百的级别,为了提高传统存储的性能,有些存储厂商加了缓存层,然而目前应用正由单一走向多元化,导致 IO 特征无法预测,缓存也难以发挥作

此时 NeonSAN 节点就会自动把网络流量切换到网卡 B 上,走交换机 B,保证整个集群网络的可用性。同理,当网卡发生故障时,整个网络仍然是高可用的。

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

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

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

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

如图所示,有红、黄、绿、紫这四个片,每一片都会有三副本,分别存放在不同的节点。任何一个节点上的数据损坏,都不会导致数据的丢失。可用性也是同样的,如果节点 1 不能提供服务,节点 2 或 3 可以继续提供服务,保证整个集群的可用性。

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

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

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

我们通过一个例子看看 NeonSAN 强一致性写过程中的 IO 路径。

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

NeonSAN 分布式全闪有哪些黑科技

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

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

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

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

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

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

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

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

接下来讲讲 NeonSAN 并行流水线处理的设计。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

NeonSAN 分布式全闪跑分及场景实践

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

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

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

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!