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

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

UCloud丰富的存储产品线

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

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

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

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

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

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

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

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

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

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

1. 数据可靠性

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

2. 数据分片

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

3. 连续数据保护

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

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

总的来说,就是底层硬件越来越强。主要提现在两个方面:一是磁盘速度越来越快,另一个就是网络接口也有了快速的发展。SSD这类固态硬盘的发展,目前主要以NAND为主,单盘可以提供几十万甚至百万的IOPS,高达几个GB的读写带宽,这是机械盘时代无法想象的。与此同时,固态硬盘的容量已普遍可以做到4TB到 6TB,也充分解决了存储对于容量的需求。除了NAND以外,还有3D Xpoint的发展,相对于NAND,3D Xpoint例如Intel的 optane, 延迟上有了10倍左右的提升,并且更耐用。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

嘉宾介绍

相关推荐