软硬协同设计下的飞天盘古,是如何降低存储系统开销的?

云布道师

经过十几年的技术演进,阿里巴巴已经实现了统一存储的目标——即以“飞天盘古”系统作为统一底座,通过标准化、服务化和开放化的方式建立了完整的存储产品和服务体系,服务广大内部和外部客户。

“万古乾坤心上辟,于令日月掌中悬。”飞天盘古分布式存储系统是飞天云操作系统的核心组件,是阿里云数据存储底座。块存储 EBS、对象存储 OSS、文件存储 NAS、表格存储 Tablestore 等核心存储产品,都生长在飞天盘古之上。飞天盘古作为业界少有的统一存储平台,具有稳定、规模、普适、性能、安全的特点。

●在稳定性方面,飞天盘古提供了多 AZ 的技术支持,保证服务的高可用。在数据可靠性方面,飞天盘古提供了多副本以及纠删码技术,保证数据全链路的数据可靠性。

●在规模方面,飞天盘古从 4 节点起步,运行的单集群规模支持十万台。

●在普适性方面,飞天盘古作为一个通用的平台,它既可以支持低延迟的访问,也可以支持高吞吐的应用,适用于全场景的业务场景。在硬件平台上,支持闪存、非易失性内存、磁盘等各种硬件平台。

●在性能方面,提供微秒级 I/O 的访问延迟,基于飞天盘古的云盘提供 100 万 IOPS能力。

●在数据安全方面,飞天盘古提供了包括数据默认加密等技术能力。

经过十几年的技术演进,阿里巴巴已经实现了统一存储的目标——即以“飞天盘古”系统作为统一底座,通过标准化、服务化和开放化的方式建立了完整的存储产品和服务体系,服务广大内部和外部客户。

从大规模到高性能再到高效能,飞天盘古的演进史

在这里插入图片描述
艰难困苦,玉汝于成。飞天盘古不是一蹴而就的,而是历经了软硬件之间的不断融合与迭代发展而来的。Pangu1.0 诞生于 2009 年,当时只有千兆万兆的网卡,它的存储介质主要是 HDD。之后数年,阿里云构建了大规模的分布式存储系统,2015 年时单集群规模数达到了十万台。

到 2016 年,随着 25Gbps RDMA、NVMe SSD 时代的开启,阿里云拥抱 RDMA和 NVMe 高性能硬件,构筑了高性能的 Pangu2.0 分布式存储系统。随着云计算技术的不断发展,硬件的设计需要和云进行匹配,因此出现了云定义的硬件产品,而软硬件深度协同设计的 Pangu New-Gen 也即将面世,进一步提升存储系统效能。

总而言之,历经 15 载,如今的飞天盘古系统已迭代至第三代,数千万行代码和 1,000 余项专利,从大规模、到高性能、到高效能的分布式存储系统的演进,更高效地让数据中心成为一台计算机。

飞天盘古设计中遇到的各种存储开销

在整个技术演进的过程中,飞天盘古也遇到了多种技术挑战,具体可概括为:

●面对存算分离场景,如何去除网络的开销。

●在云原生访问存储的场景下,如何让计算更高效地访问存储,去除中间链路的开销。

●在高性能的闪存条件下,如何发挥闪存的效能,去除软硬件的开销。

●面对 HDD 这样的磁盘存储介质,如何去除软硬件的开销,发挥出磁盘的吞吐能力。

以上提到的各项“开销”,是飞天盘古演进过程中的拦路虎,而如果纵览 I/O 的一生,这些开销都可以看作是跨国贸易中的重重“关税”:安全隔离税、TCP 网络税、内核税、接口税、传统文件系统税、垂直记录税等等。
图片
要想有效提升飞天盘古的性能。一个行之有效的解决思路就是通过软硬协同设计,逐步去掉这些存储开销。

软硬协同设计,去除存储开销

1、通过 VSC 去除安全隔离开销,降低存储访问延迟
在存算分离的场景下,云原生容器已经成为计算任务运行的主要场景。由于云原生容器主要在 VPC 计算域里运行,在访问存储时,中间的物理网络是隔离的。尽管从隔离的网络里可以访问存储,但是延迟很高。

为了降低存储访问延迟,飞天盘古利用了计算端 CIPU/DPU 的能力,提供了基于Virtio 的 RPC 接口,构建了通用的 VSC(Virtual Storage Channel)数据访问通路,在保证安全的同时,提升了 I/O 访问性能。目前,VSC 已在线上规模部署,支持阿里集团业务上云。
在这里插入图片描述
值得一提的是,采用飞天盘古 VSC 技术架构解决云原生场景下计算端资源占用,隔离网络高性能访问等问题的相关论文已在 FAST’23 会议上发表。

2、基于 RDMA 增强技术去除传统 TCP 网络开销
存储系统对网络的要求很高,高性能网络是分布式存储的基石。近年来,无论是以太网还是 PCIe,其物理链路的性能都得到了飞速发展和提升。可以预见,PCIe 等高速互连技术的发展,将进一步推进存算分离。
在这里插入图片描述
随着以太网性能的提升,传统的 TCP 实现成为重要的性能瓶颈点。同时,基于以太网的 RoCE RDMA 协议不统一,存在性能跌零等稳定性风险。为了解决这些问题,需要发展高性能网络协议,去除传统协议和实现带来的开销。

针对存储业务特征,阿里云对 RDMA 技术进行了增强,形成了高速存储网络,实现了高速 RDMA 通路与传统 IO 通路的混合调度、PFC风暴的实时监测与控制、规模化链接的共享与复用以及RDMA端口实时监测与流量调度。

早在 2018 年,阿里云就构建了当时全球最大规模 RDMA 存储集群。飞天盘古存储网络相关成果已在 NSDI 和 OSDI 会议上发表。

3、全用户态存储引擎解决内核开销
NAND 闪存经历了 SLC、MLC、TLC、QLC 四代演进。闪存技术的发展,为业务提供高性能 IO 奠定了基础。总的来说,闪存的存储密度在持续增高,单 GB 性能在下降,介质的寿命在降低,为了更好地利用闪存容量和性能,需要用新的技术架构来发挥硬件的能力,去除不必要的开销,提升云存储效能。

最近几年,阿里云在闪存方面做了很多的创新工作,主要包括五个方面:用户态存储引擎、存储引擎与 SSD 协同设计、用异构介质的方式使能 QLC 介质、和行业协同推进 ZNS 技术标准化、在 ZNS 介质基础之上构建存储引擎。
在这里插入图片描述
针对内核开销(包括系统的上下文切换、内存拷贝、中断导致 CPU 效率下降、锁开销),全自研飞天盘古全用户态存储引擎选择了逐个击破:采用 Bypass Kernel 技术绕过 Linux 内核(TCP/IP协议栈)、利用零拷贝技术提升文件传输的性能、通过polling 避免大量中断、无锁设计,垂直单元化设计提升效率。此外,飞天盘古还将管控与数据通路进行分离,构建了针对高性能场景的 USSOS(User Space Storage Operating System)平台,实现用户态存储资源管理。通过多重技术加持,支持 NVMe SSD 和 HDD 的飞天盘古,将 CPU 效率提升了一倍以上。当前已在阿里云规模化使用,相关成果发表在了 FAST’23 会议论文《More Than Capacity: Performance-oriented Evolution of Pangu in Alibaba》中。

4、通过 ZNS 解决 SSD 接口开销,提升效能
尽管 NVMe SSD 已经规模应用,但依然不够完美,这体现在:稳态 IOPS 性能远低于空盘,SSD 内部 GC 耗费了用户带宽;受到内部 GC 影响,长尾延迟大;在随机写 IOPS 和使用寿命方面,QLC SSD 和规模使用的 TLC SSD 有很大的差距。
图片
为了更好地使用 NAND Flash,使其服务于数据中心存储,可以引入 ZNS(Zoned NameSpace)SSD 技术,将 Data Placement 功能上移至存储软件栈,并和存储软件栈融合,重塑软硬件的分工,从而更灵活地布局数据、提升效能。所以,ZNS 对Flash而言是更友好的接口,有利于进一步挖掘 NAND Flash 的能力。2021 年 5 月,ZNS 协议被收入 NVMe 规范 2.0 版本中,并得到了 SPDK、Linux 以及各设备商的支持。

提供分布式 Append-Only 和随机读能力的飞天盘古,正是通过创新的存储引擎来使用 ZNS。针对大规模数据中心应用,飞天盘古去除FTL映射层,让NAND Flash特性与分布式存储软件完美匹配。看似是接口变化,但本质在于Data Placement(数据布局)/ GC(垃圾回收)上移到了存储软件层。未来,阿里云将继续与业界共同推动ZNS技术标准的发展。

5、去除通用文件系统开销,100% 发挥磁盘吞吐
如果以存储设备接口为标准来划分存储介质,那么存储介质可以分为两类。一类是可以进行随机读写的块设备接口的介质,包括 HDD 和 SSD。另一类是支持 Append-Only 且没有块设备接口的 Zoned Storage 介质。Zoned Storage 介质类型在数据中心有着良好的应用前景,因为它在相同的硬件基础上可以增加容量,且能够更好地控制 NAND 写放大系数,实现性能的优化。
在这里插入图片描述
当下,随着数据量的指数级增长,HDD 依然是具有高性价比的存储介质,而针对HDD,飞天盘古采用了通用的用户态存储引擎,去除了 Ext4 元数据操作带来的开销以及通用文件系统的复杂操作。去除 Ext4 后,用户态存储引擎直接和上层的存储软件融合在一起,可以平衡业务对容量与吞吐的不同需求,优化数据布局, 百分之百地发挥磁盘的吞吐带宽。

6、去除垂直记录开销,获取磁盘存储密度红利
针对冷数据长期存储场景,阿里云采用了成本更低的 SMR HDD 磁盘,SMR HDD 磁盘采用叠瓦式的记录方式,而常用的 PMR HDD 磁盘采用的是垂直记录的方式。叠瓦式的记录方式利用了磁道在读写方向上的不对称性,从而可以更好的控制磁道的间距,让存储密度达到最优。

不可否认,垂直记录和叠瓦式记录两种方式各有优劣。采用垂直记录的方式会浪费一些存储空间,产生存储垂直记录开销,但是可以对外提供随机读写的能力。采用叠瓦式的记录方式,可以提升存储密度、存储容量,却无法进行随机读写,会导致传统的存储引擎不能正常工作。

所以,飞天盘古采用了名为“SMRStore”的存储引擎使能 SMR HDD,通过数据冷热分离、端到端协同设计、流量打散等技术有效地控制 GC(垃圾回收),让整个盘的IOPS 利用率达到最高。
在这里插入图片描述
经过长时间的性能对比测试,阿里云发现 SMRStore + SMR 吞吐带宽稳定,整体性能优于 Ext4 + CMR HDD。通过 SMRStore,可以将 SMR 扩展至热数据存储领域。相关技术成果发表在了 FAST’23 会议论文《SMRstore: A Storage Engine for Cloud Object Storage on HM-SMR Drives》中。

全栈自研的飞天盘古,通过软硬协同设计,去除了 I/O 全栈存在的各种存储开销,提升了存储系统的效能。基于飞天盘古构建的块存储、对象存储、表格存储、文件存储、灾备、相册与网盘、云定义存储等多种存储产品,为全球客户提供了普惠、智能的存储服务。随着飞天盘古技术的不断演进,阿里云将继续引领云存储技术的发展,通过技术普惠,为客户提供稳定、安全、高性能的存储服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正大国际:董宇辉最治愈的六句话

关于努力 努力不是为了证明自己多优秀, 而是在意外和不可控的因素来临时, 那些平常所努力积淀的涵养和能力, 可以成为抗衡一切风雨的底气。 关于焦虑 焦虑是对的。 焦虑是因为你想做得更好, 说明你追求高, 说明你眼界…

基于51单片机的智能监护与健康检测[proteus仿真]

基于51单片机的自行车测速系统设计[proteus仿真] 个人健康检测系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的智能监护与健康检测 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 2&#xff…

CrossOver24破解版下载安装与激活

在 Mac 上运行Windows 软件,CrossOver Mac 可以轻松地从 Dock 本地启动 Windows 应用程序,并将 Mac 操作系统功能(如跨平台复制和粘贴以及共享文件系统)集成到您的 Windows 程序中。 CrossOver 产品特性 无需重启 CrossOver 可以…

LeetCode69. x 的平方根(C++)

LeetCode69. x 的平方根 题目链接代码 题目链接 https://leetcode.cn/problems/sqrtx/description/ 代码 class Solution { public:int mySqrt(int x) {int right x, left 0, ans -1;while(left < right){long long mid left (right - left) / 2;if(mid * mid <…

openssl3.2 - crypto-mdebug被弃用后, 内存泄漏检查的替代方法

文章目录 openssl3.2 - crypto-mdebug被弃用后, 内存泄漏检查的替代方法概述笔记查看特性列表openssl3.2编译脚本 - 加入enable-crypto-mdebug看看有没有替代内存诊断的方法?main.cppmy_openSSL_lib.hmy_openSSL_lib.c备注备注这招不行啊显势调用默认上下文也不行END openssl3…

Laravel03 路由到控制器与连接数据库

Laravel03 路由到控制器与连接数据库 1. 路由到控制器2. 连接数据库 1. 路由到控制器 如下图一些简单的逻辑处理可以放在web.php中&#xff0c;也就是路由的闭包函数里面。但是大的项目&#xff0c;我们肯定不能这么写。 为什么保证业务清晰好管理&#xff0c;都应该吧业务逻辑…

Amazon Generative AI | 基于 Amazon 扩散模型原理的代码实践之采样篇

以前通过论文介绍 Amazon 生成式 AI 和大语言模型&#xff08;LLMs&#xff09;的主要原理之外&#xff0c;在代码实践环节主要还是局限于是引入预训练模型、在预训练模型基础上做微调、使用 API 等等。很多开发人员觉得还不过瘾&#xff0c;希望内容可以更加深入。因此&#x…

python 进程笔记二(通讯) (概念+示例代码)

1、为什么要掌握进程间通信 Python代码效率由于受制于GIL全局锁限制&#xff0c;多线程不能利用多核CPU来加速&#xff0c;而多进程方式却可以绕过GIL限制, 发挥多CPU加速的优势&#xff0c;达到提高程序的性能的目的。 然而进程间通信却是不得不考虑的问题。 进程不同于线程&a…

react useMemo 用法

1&#xff0c;useCallback 的功能完全可以由 useMemo 所取代&#xff0c;如果你想通过使用 useMemo 返回一个记忆函数也是完全可以的。 usecallback(fn,inputs)is equivalent to useMemo(()> fn, inputs). 区别是:useCallback不会执行第一个参数函数&#xff0c;而是将它返…

Java Swing游戏开发学习2

跟随大佬教程继续&#xff0c;图片资源&#xff0c;视频简介有下载链接。 这个文章是看视频教程写的&#xff0c;不算原创。有条件的可以去油管搜索RyiSnow&#xff0c;是一个游戏开发视频制作up主&#xff0c;讲解的非常基础&#xff0c;可以边看边实践&#xff0c;增加对Java…

JavaWeb个人学习

1:RequestParam(defaultValue "默认的值") 这个可以在一个参数的前面写上 要是前端不传值进来的话 这个形参就是你定义的默认值 2: slf4j 对应的是日志的输出 log.info("参数是 {}", detail); 3: 分页插件 PageHelper 用法: 准备工作: 引入依赖 …

【MySQL】学习和总结联合查询

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-OPj5g6evbkm5ol0U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

向导式堆栈管理器Dockge

经过申诉&#xff0c;目前博客的几个域名都恢复了&#xff0c;时间也延长到了 2033 年&#xff0c;后面还会不会出问题&#xff0c;老苏就不知道了 什么是 Dockge ? Dockge 是一款时髦的、易于使用的、响应式的、自托管的 docker-compose.yaml 向导式堆栈管理器&#xff0c;可…

单目与双目相机标定(一)

下面是几种常见的方法来获得三维点云重建的坐标系&#xff1a; 外部标定方法&#xff1a;在采集点云数据之前&#xff0c;通过使用已知尺寸和形状的校准物体在场景中放置特定的标记点或标定板。通过捕捉这些已知的标记点&#xff0c;可以建立一个参考坐标系&#xff0c;所有的点…

【Java程序设计】【C00317】基于Springboot的智慧社区居家养老健康管理系统(有论文)

基于Springboot的智慧社区居家养老健康管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的智慧社区居家养老健康管理系统设计与实现&#xff0c;本系统有管理员、社区工作人员、医生以及家属四种角色权限 管…

Atcoder ABC341 D - Only one of two

Only one of two&#xff08;只有两个中的一个&#xff09; 时间限制&#xff1a;2s 内存限制&#xff1a;1024MB 【原题地址】 所有图片源自Atcoder&#xff0c;题目译文源自脚本Atcoder Better! 点击此处跳转至原题 【问题描述】 【输入格式】 【输出格式】 【样例1】 …

C语言--- 操作符详解(上)

目录 一.操作符的分类 1.算术操作符&#xff1a; - * / % 1. 和 - 2. * 3./ 4.% 2.移位操作符 3.位操作符 4.赋值操作符 1.连续赋值 2.复合赋值 5.单目操作符 1.和-- &#xff08;1&#xff09;前置 &#xff08;2&#xff09;后置 &#xff08;3&#xff09;前置…

用html编写的简易新闻页面

用html编写的简易新闻页面 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document<…

【MySQL】表的约束 -- 详解

表中一定要有各种约束&#xff0c;通过约束让我们在未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段倒逼程序员插入正确的数据&#xff0c;反过来站在 MySQL 的角度&#xff0c;凡是插入进来的数据都是符合数据约束的。约束的最终目标&#xff1a;保证数据的完整…

javaApI(Application Programming Interface)应用程序编程接口

ApI概念 Apl:指的是官方给开发人员提供的说明文档&#xff0c;对语言中有哪些类&#xff0c;类中有哪些方法进行说明 Objict 类 java.lang.Object 是java类体系结构中最顶层的类 Object可以表示java中任意的类 Object类中的方法 toString() 输出一个对象&#xff0c;但是…