写点什么

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:391531

评论

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

【初学入门Demo注解版】SpringBoot ,java面试大全下载

Java 程序员 后端

【备战秋招冲击大厂】Java面试题系列(1),springboot入门程序

Java 程序员 后端

【线程】,Java自学宝典pdf

Java 程序员 后端

【计算机网络 1】计算机网络概述,Java高级工程师进阶学习—Java热修复原理

Java 程序员 后端

一文彻底弄懂如何选择抽象类还是接口,linux基础入门知识

Java 程序员 后端

【Spring框架03】DI依赖注入,spring菜鸟教程pdf

Java 程序员 后端

【关于封装的那些事】 缺失封装,2021年腾讯Java高级面试题及答案

Java 程序员 后端

【网络信息安全】身份认证,hadoop环境搭建教程

Java 程序员 后端

一招搞定 Spring Boot 可视化监控!,java进阶教程云盘

Java 程序员 后端

一文带你深扒ClassLoader内核,揭开它的神秘面纱

Java 程序员 后端

【大厂面经】我通过了某独角兽公司的魔鬼五面

Java 程序员 后端

【并发编程】深入了解volatile,linux高级编程pdf

Java 程序员 后端

一场哔哩哔哩Java开发面试之旅,分享面试经历及复习资料

Java 程序员 后端

【嵌入式实验】,面试官必问的技术问题之一

Java 程序员 后端

【Spring Boot 19】Spring Boot整合阿里云OSS实现云存储

Java 程序员 后端

【数据结构与算法 10】算法的时间复杂度和空间复杂度

Java 程序员 后端

【被面试官吊打】从系统角度考虑性能优化,kafkajvm调优

Java 程序员 后端

一年Java开发经验,阿里巴巴五面(已offer,java原理视频

Java 程序员 后端

【Spring Boot 12】看完这篇,nginxkeepalived原理

Java 程序员 后端

一夜之间火爆GitHub的好文!!阿里资深架构师整理分享

Java 程序员 后端

【Spring Boot 8】Okhttp实现GitHub第三方登录

Java 程序员 后端

【数据库实验】,java语言零基础自学

Java 程序员 后端

一文带你了解Java并发中的锁优化,让你的代码运行效率翻倍

Java 程序员 后端

一份秀出新天际的SpringCloudAlibaba笔记,把微服务玩的出神入化

Java 程序员 后端

一口气面试6家大厂,已拿5家offer,大厂没有你想象中的难

Java 程序员 后端

【Spring Boot 13】实现热部署,最新Java通用流行框架大全

Java 程序员 后端

【SpringMVC笔记】Ajax 入门,springboot源码解读与原理分析

Java 程序员 后端

【备战秋招冲击大厂】Java面试题系列,你还没弄明白存储键值对

Java 程序员 后端

【源码分析设计模式 7】Integer中的享元模式

Java 程序员 后端

【白话设计模式】去哪儿网一面,java面试题刷题软件

Java 程序员 后端

【线程】(1),java高级特性编程及实战pdf百度云

Java 程序员 后端

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