阿里云Optane+QLC存储实践案例分享

简介: 本文主要分享主题在阿里云本地盘存储中,基于Optane SSD和SPDK WSR的功能,降低QLC SSD的写放大。

作者简介:周雁波,阿里云资深云储研发工程师,曾就职Intel参与spdk软件研发工作, 《Linux开源存储全栈详解:从Ceph到容器存储》作者之一。

版权声明:本文由周雁波先生授权发表,未经授权请勿转载。


本文主要分享主题在阿里云本地盘存储中,基于Optane SSD和SPDK WSR的功能,降低QLC SSD的写放大

本地盘是ECS实例所在物理机上的本地硬盘设备。本地盘能够为ECS实例提供本地存储访问能力,具有低时延、高随机IOPS、高吞吐量和高性价比的优势。

在本地盘会提供两种规格的产品:

  • I系列实例:提供低延迟、高随机/顺序性能,适合OLTP/OLAP/NoSQL等数据库场景。
  • D系列实例:提供高顺序带宽,低成本,适合HDFS/HBase等海量数据存储场景。

在云存储的演进过程中,有几个阶段:

  • 第一阶段:基于SATA/SAS HDD高带宽、大容量、低成本的优势,在内核态virtio-blk虚拟化存储,提供中断响应的IO场景。
  • 第二阶段:基于NVME 3D TLC NAND SSD低延迟、高性能的优势,基于SPDK用户态,提供Polling模式的IO场景。解决了基于传统软件栈一些开销
  • 第三阶段:随着QLC和PLC SSD的来临,由于大容量低成本的特性,但是性能和寿命却受到写放大的影响。如何解决这个问题,也是本文的重点

写放大是NAND-based SSD中最让人头疼的因素。主要的根源是操作粒度之间的差异:

  • SSD IU(Indriection Unit, 盘内部物理的访问的大小)比用户操作数据块要大。Intel QLC SSD有16K IU和64K IU两个代次。
  • SSD擦除的数据块大小比应用层的数据块也要大。

写放大会影响性能和寿命,比如下图,随机写IOPS性能会不断的下降直到一个稳态,此时盘内部的写放大会达到最大。写放大如果太大的话,也会降低SSD的寿命,加速盘的老化。

下图中,采用50%混合随机读场景比100%纯随机读场景的延迟要高出一个量级,这里面的原因也主要是GC和写放大对延迟的影响。

为了解决写放大对QLC SSD性能和寿命的影响,我们采用了基于Optane SSD的缓存和分层存储架构。Optane SSD的优势是高读写性能,高可靠性/耐久性,同时没有类似NAND-SSD因为复写而带来的写放大的影响。作为缓存层是非常理想的选择。

在写过程的IO传输路径中,IO会写到本地盘虚拟块设备中,然后优先落盘到Optane SSD,完成写入响应后,再从Optane SSD中通过聚合/压缩等算法,形成大块顺序写场景,把数据下刷到QLC SSD中,降低写放大。

  • 传统的cache缓存改进基于bcache,OCF,对NAND不是很友好的写入。在Optane下刷过程,也不是SSD IU对齐的IO pattern。
  • 基于WSR(Write-Shaping RAID)的写入对NAND非常友好,大块写且顺序,同时与SSD IU对齐。这样实现的方式从软件上做了彻底的优化,降低写放大。

整个WSR的数据流过程,主要有几个步骤:

  • 第1步:数据会写写入WSR Bev
  • 第2步:通过Append-only追加写的方式,写入数据到Optane SSD,同时基于VSS实现meta的安全校验,保证数据安全性。
  • 第3步:更新软件管理的L2P映射表,这里面为了提升效果,热点访问的映射表放在DRAM,其他的放在Optane缓存盘。
  • 第4步:通知用户完成写入。到这里跟用户之间的交互就完成了。
  • 第5-7步:是后台执行的动作,Optane SSD中通过聚合/压缩等算法,形成大块顺序写场景,把数据下刷到QLC SSD,同时更新QLC对映的L2P映射表。

一些软件优化之后,分别针对QLC 10% OP、Optane+QLC & OCF、Optane+QLC & WSR三种场景测试IO性能,测试结果提升明显:

  • 特别是#5,#6测试项,针对4K顺序和随机写场景,Optane+QLC & WSR的性能提升2个数量级
  • #3,#4测试项中,基于齐普夫定律的反应热频高低,在热点数据场景(Zipf 1.2)中,Optane+QLC & WSR对性能的提升更加优异。

基于Optane+QLC和SPDK WSR的优化能力,在阿里云本盘D3C场景已经实现。

相关文章
|
大数据 数据中心 云计算
连续4年 阿里云液冷技术论文入选DesignCon 2024和ECTC 2024
连续4年 阿里云液冷技术论文入选DesignCon 2024和ECTC 2024
|
监控 调度 开发工具
IO神器blktrace使用介绍
## 前言 1. blktrace的作者正是block io的maintainer,开发此工具,可以更好的追踪IO的过程。 2. blktrace 结合btt可以统计一个IO是在调度队列停留的时间长,还是在硬件上消耗的时间长,利用这个工具可以协助分析和优化问题。 ## blktrace的原理 一个I/O请求的处理过程,可以梳理为这样一张简单的图: ![](http://image
21616 0
|
存储 人工智能 缓存
面向AI的存储软硬结合实践和创新
本次分享的主题是面向AI的存储软硬结合实践和创新,由阿里云智能集团专家袁茂军、王正勇和常存银主讲。内容涵盖三大板块:自研存储部件设计及实践、自研存储服务器设计及实践、以及面向AI场景的存储软硬一体解决方案及实践。重点介绍AliFlash系列存储部件的演进与优化,包括QLC SSD的设计挑战与解决方案,并探讨了高性能存储服务器在AI场景中的应用与未来发展方向。通过软硬件深度融合,旨在提升AI业务的性能与效率,降低总拥有成本(TCO)。
1016 7
|
人工智能 并行计算 云计算
从UALink近期发展再看GPU Scale Up的互连方向
ALink System的目标是聚焦GPU算力需求、驱动云计算定义的开放生态,形成智算超节点的竞争力。
|
存储 机器学习/深度学习 并行计算
GPU通信互联技术:GPUDirect、NVLink与RDMA
在高性能计算和深度学习领域,GPU已成为关键工具。然而,随着模型复杂度和数据量的增加,单个GPU难以满足需求,多GPU甚至多服务器协同工作成为常态。本文探讨了三种主要的GPU通信互联技术:GPUDirect、NVLink和RDMA。GPUDirect通过绕过CPU实现GPU与设备直接通信;NVLink提供高速点对点连接和支持内存共享;RDMA则在网络层面实现直接内存访问,降低延迟。这些技术各有优势,适用于不同场景,为AI和高性能计算提供了强大支持。
|
存储 固态存储 Java
multi-stream SSD 介绍
# NVMe Multi-stream ## 1. 原理介绍 ### 1.1. flash 写操作 在介绍 multi-stream 之前,首先简单介绍一下 flash 写操作的特性。 - SSD 中写操作(write)的单元为 page,page 的大小通常为 2 ~ 64 KB - NAND flash 在对 page 写操作之前,必须对 page 执行擦除操作(er
9931 0
|
弹性计算 安全 虚拟化
万字干货分享 | 阿里云CIPU技术解析
2022年6月,阿里云发布了云基础设施处理器CIPU(Cloud  Infrastructure Processing  Unit),将其定义为取代传统CPU的新一代云计算体系架构的核心。在这个全新体系架构下,CIPU向下对数据中心计算、存储、网络等底层基础设施快速云化并进行硬件加速,向上接入飞天云操作系统,将全球数百万台服务器构建为一台超级计算机,实现资源的灵活编排和调度,给用户提供高质量弹性云计算算力集群。
万字干货分享 | 阿里云CIPU技术解析
|
算法 网络安全 开发工具
从头开始:将新项目上传至Git仓库的简易指南
无论您是一个经验丰富的开发者还是一个刚刚起步的新手,使用Git来管理您的项目是一个明智的选择。Git是一个强大的版本控制系统,它可以帮助您跟踪项目的变化、合并代码以及与团队成员协作。在本文中,我们将为您提供一步步的指南,教您如何将一个现有的项目上传至仓库。
894 1
从头开始:将新项目上传至Git仓库的简易指南
|
存储 固态存储 Linux
开启全新存储时代:SPDK文件系统项目实战指南
开启全新存储时代:SPDK文件系统项目实战指南