写点什么

UCloud 彭晶鑫: UCloud 高性能存储背后的技术解析

  • 2019-11-12
  • 本文字数:3304 字

    阅读完需:约 11 分钟

UCloud彭晶鑫: UCloud高性能存储背后的技术解析

随着移动互联网的迅速发展,智能终端、可穿戴设备、智能家居正在快速普及,数据吞吐量呈现出指数级的增长趋势。大数据爆发的时代下,各行各业的互联网化与现实世界数据化的趋势,使市场对企业级云存储的需求更加迫切。


云存储,可以理解为云计算环境下的存储服务,将云计算数据中心的各种存储资源虚拟化,抽象化、池化,以存储服务的形式提供给应用。用户可以按自己的需求(容量,性能,时间)等使用云存储资源。一些可以通过用户购买的计算节点去使用,例如块存储,分布式文件存储,还有些可以通过网络访问标准的接口存取去使用,例如对象存储。


UCloud 作为国内领先的云计算服务平台,在云存储方面有着比较丰富的产品线。UCloud 块存储研发副总监彭晶鑫近日接受了 51 CTO 记者的采访,对云存储产品及技术进行了解析。

1 UCloud 丰富的存储产品线

彭晶鑫目前担任 UCloud 块存储研发副总监,主要从事分布式云盘,块设备数据保护产品,分布式文件存储的研发。彭晶鑫在采访中对 UCloud 已有的存储产品进行了以下总结。


  • 提供块设备存储能力的云硬盘 UDisk,包括 SATA 的普通云盘和 SSD 云盘,云盘能为云主机提供高速、高可靠的块存储能力;

  • 提供分布式文件系统能力的文件存储 UFS,UFS 提供了高可靠、无限扩展的文件存储服务,目前是容量型,后续还将推出性能型;

  • 对象存储 UFile 提供了海量、高可靠、低成本的非结构化文件存储服务,可以让用户在任何互联网可达的位置利用 API 去访问和存储;

  • 提供持续数据保护 CDP 系统的数据方舟 UDataArk,它是公有云中前几家支持块设备回滚至任一秒,并能有效防止用户由于误操作、黑客攻击等带来的数据误删除或者丢失。


当然除了这四种存储产品以外,UCloud 还有适用于海量数据的长期归档、备份的数据归档存储 UArchive,提供数据库服务的 RDS 以及分布式关系数据库等。

2 这些存储产品例如云硬盘和软件定义存储有什么关系

总的来说软件定义存储(SDS)就是将数据中心的各种存储资源抽象化、池化,以服务的形式提供给应用,满足应用按需自动化的使用存储。云硬盘其实就是 SDS 的一种,它将存储资源池子化,提供应用层需要的逻辑块设备存储能力,并让计算和存储在物理上分离。

3 UCloud 在存储产品研发之路上遇到了哪些问题并如何解决的

在存储产品的研发之路上,UCloud 确实也遇到过一些问题,在这里就列举三个点:


  • 数据可靠性


为了更早发现数据损坏,有些时候,用户 IO 的读写并没有散落到磁盘的任何位置上,磁盘的坏道坏块等也不能及时发现。甚至可能三个副本中有两个副本所在的磁盘都有损坏确没有被及时发现。这样就给数据的可靠性带来了较大的挑战。后续我们加入了磁盘不同偏移的读写探测以及定期读数据和校验码的比对,从而更好地保障了数据的可靠性。


  • 数据分片


数据分片和元数据的关系是分片小元数据就多,分片大却不能均匀的打散并发挥分布式集群的能力,因此分片要适当的小。那么问题又来了,当用户申请一块磁盘时,需要将很多元数据分配好进行持久化,这对于大容量磁盘的申请体验就很差,速度慢。如果不是申请时分配,那么就是写时分配,这对于用户第一次 IO 时的体验也会很差,性能有影响。后来经过综合考虑,我们选取了通过计算去获取路由的方式,避免了中心存储元数据带来的麻烦。


  • 连续数据保护


第一代 CDP 系统数据方舟 1.0 可以很好的支持块设备回滚到过去任一秒。但是对于大盘或者 IO 比较凶的磁盘来说,回滚速度会很慢,甚至需要几个小时。用户使用时都希望能快速回滚。后来我们就设计了数据方舟 2.0,从用户角度出发,回滚时选择回滚至一个全新的磁盘,不去破坏原有的磁盘数据。并通过流式计算、分层混合存储设计、分布式存储技术顺利地将回滚速度提升了 8 倍,1TB 大容量盘也可以在 30 分钟内完成回滚。

4 近年来块存储在底层硬件方面有哪些发展

总的来说,就是底层硬件越来越强。主要体现在两个方面:一是磁盘速度越来越快,另一个就是网络接口也有了快速的发展。


SSD 这类固态硬盘的发展,目前主要以 NAND 为主,单盘可以提供几十万甚至百万的 IOPS,高达几个 GB 的读写带宽,这是机械盘时代无法想象的。与此同时,固态硬盘的容量已普遍可以做到 4TB 到 6TB,也充分解决了存储对于容量的需求。除了 NAND 以外,还有 3D Xpoint 的发展,相对于 NAND,3D Xpoint 例如 Intel 的 optane, 延迟上有了 10 倍左右的提升,并且更耐用。


另外,网卡也经历了从千兆、万兆、25G 卡到 50G 卡的高速发展。此外,还有网卡对 RDMA 特性的支持,可以让网络收发零拷贝,无需操作系统/协议栈等的介入,就可以实现机器间的超低延迟、超高吞吐。

5 随着底层硬件的发展,块存储该如何突破软件技术层的瓶颈

随着底层硬件的发展,例如 NVME/PCIESSD 相对于 SATA SSD 的跨越式发展,网络接口的处理能力也从 10G 到 25G 再到 100G。与此同时,CPU 的主频确几乎没有大的发展,主流的平均在 2-3GHZ 以下。另外,按照传统模式 SSD 的 IO、网卡的收发包经过用户态内核态的多层拷贝,都还需要靠 kernel 的中断来唤醒。以前,这些外设的能力远低于 CPU,所以没有任何瓶颈。而现在外设硬件的跨越式发展,中断模式来唤醒系统处理也开始受到了技术挑战。


云计算环境下的分布式块存储从软件栈上可以分为两层:一个是宿主机集群,一个是后端集群,两者之间通过网络互联。块存储要突破的技术也主要在整个软件栈上的 IO 路径、整个 IO 路径的性能及可靠性。宿主机侧,为了实现数据交互的高性能,数据面需要从 qemu 卸载到宿主机上,从而有了用户态 VHOST 方案。例如 SPDK VHOST 技术,不仅将数据面从 qemu 卸载到用户态,而且可以通过 pmd 模式加速性能。


第二个就是宿主机到后端集群的路径。传统的 TCP/IP 协议栈+网络服务框架 epoll 模式很难做到超高性能的要求。而 RDMA 技术,通信不需要经过复杂的 TCP 协议栈,通过旁路和零拷贝极大的提供低延迟的特性。同时不需要两端的 CPU 参与。所以 RDMA 技术,不管是 ROCE 还是 IB,都可以在网络通信上极大的提高性能。


第三个在后端侧,RDMA 的应用可以极大的提高网络通信的性能,减少 CPU 的负载。另外,还需要关注磁盘 IO 的性能。发挥 NVME 的高 IOPS,同时降低 IO 的延迟,就成为了最关键的方面。利用 SPDK 通过 NVME 驱动访问磁盘,缩短 IO 栈以及 PMD 模式,可以极大的降低 IO 延迟。

6 UCloud 在存储技术上是如何做到更好地服务于用户的

为了给用户提供更好的存储服务,还是需要从用户的需求去看待:


1、用户追求高性能低延迟,例如刚才说的块存储,就可以从 IO 路径上整体兼顾,不断追求更低的时延和更高的 IOPS。总之就是做到 IO 路径上的极致;


2、用户追求大容量,那么怎么设计出可以让用户无限扩容的系统就是关键;


3、用户追求低价格,那么降低 TCO,不损失数据可靠性的基础上降低冗余度,提高磁盘利用率就是关键;


4、用户追求回档的速度和粒度上,那就需要在持续数据保护上追求 RTO 和 RPO。


在这方面,UCloud 一直秉承“用户需求就是下一个产品”的理念。

7 在块存储方面,UCloud 后续会做什么样优化和新产品等

我们确实在紧跟存储行业的发展不断推出或者优化存储产品,比如我们 5 月发布的高性能块存储新品 SSD 云硬盘,软件架构设计更简洁。另外,为了满足客户对高性能的需求,后端存储也全部使用了 NVME SSD,并提供了 QOS 保证。接下来我们也会推出基于 NVME SSD 的分布式文件存储,提供更高性能的文件存储需求。


同时,我们会引入 RDMA SPDK 等数据面的 kernel bypass 技术,充分优化 IO 栈,并压榨硬件性能,打造高性能低延迟的存储引擎,服务于各种对高性能有需求的存储服务。后续也会采用混合存储技术,例如 optane 和 nvme 磁盘的混合存储,提供更低的写延迟,让客户获得更好的体验。


作者介绍:


彭晶鑫,UCloud 块存储研发副总监,上海交通大学研究生毕业,2011 年加入百度,2011 年-2014 年负责移动云应用服务后端多项研发工作。目前就职于 UCloud,任块存储研发部副总监,负责块存储研发部,文件存储研发部的研发以及运营工作,主要包括云硬盘,数据方舟,分布式文件系统。对服务后端技术,存储技术,工程实践有相当丰富的研发经验。


本文转载自公众号 UCloud 技术(ID:ucloud_tech)。


原文链接:


https://mp.weixin.qq.com/s/7ffs86PpeEL9Ha0UJRNxyQ


2019-11-12 11:391087

评论

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

浅谈软件项目开发过程

小锅米线

当东数西算变成一场西游记……

白洞计划

基于python的struct模块实现简单的ByteBuf

歆晨技术笔记

一文读懂 MySQL Explain 执行计划

老周聊架构

MySQL 数据库 3月月更 4月月更

王者荣耀商城异地多活架构设计

「架构实战营」

系统架构实践(一)

Trent

架构师成长路线图

俞凡

架构

Kubernetes官方java客户端之八:fluent style

程序员欣宸

4月月更

怒肝 JavaScript 数据结构 — 数组篇(一)

杨成功

JavaScript 数据结构 4月月更

SeekTiger治理通证STI流动性质押的背后,是DAO社区的支持

西柚子

在 Flutter 和 Dart 中取消 Future 的 3 种方法

坚果

4月日更

三高Mysql - Mysql索引和查询优化(偏理论部分)

懒时小窝

MySQL 数据库

Linux之ssh-copy-id命令

入门小站

Linux

智能时代,应该如何培养中小学AI教师?

脑极体

SeekTiger治理通证STI流动性质押的背后,是DAO社区的支持

小哈区块

微服务从代码到k8s部署应有尽有系列(四、用户中心)

万俊峰Kevin

微服务 RPC web开发 go-zero Go 语言

微信朋友圈高性能架构

流火

新的篇章,Pancake开通STI的流动性LP质押

BlockChain先知

容器 & 服务:Kubernetes运维记录

程序员架构进阶

Kubernetes 容器 4月日更 4月月更

在线XML转HTML工具

入门小站

工具

在线OPML美化格式化工具

入门小站

工具

全链路压测(八):构建三大模型

老张

性能测试 全链路压测 稳定性保障

架构训练营-作业七

默光

异地多活 架构训练营5期

谈谈高并发系统的一些解决方案

xiaoxi666

高并发 高并发系统设计 高并发系统

【Go实现】实践GoF的23种设计模式:单例模式

元闰子

Go 设计模式 单例模式

架构设计学习资料汇总

俞凡

架构

一条SQL语句是如何执行的?

程序员阿杜

MySQL 数据库

推荐一款可以替代Postman的国产api管理工具apipost

CodeNongXiaoW

php 后端 开发工具 java api管理工具

swagger2 统一默认Response Code

Rubble

swagger 4月日更

模块7作业-王者荣耀商城异地多活架构设计

卡西毛豆静爸

#架构实战营

王者荣耀商城异地多活架构设计

石小天

「架构实战营」

UCloud彭晶鑫: UCloud高性能存储背后的技术解析_文化 & 方法_彭晶鑫_InfoQ精选文章