作者简介:周雁波,阿里云资深云储研发工程师,曾就职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场景已经实现。

阿里云Optane+QLC存储实践案例分享相关推荐

  1. ML:阿里云计算平台之搜索推荐演讲分享《多场景智能推荐助力业务增长》、《阿里云智能推荐应用实践:PAI-EasyRec Framework》、《新一代数仓架构漫谈》

    ML:阿里云计算平台之搜索推荐演讲分享<多场景智能推荐助力业务增长>.<阿里云智能推荐应用实践:PAI-EasyRec Framework>.<新一代数仓架构漫谈> ...

  2. 【推荐】如何使用好阿里云的网络安全隔离?深入分享阿里云ECS安全组实践经验...

    近期针对安全的话题非常火爆.特别邀请阿里云专家撰写一组文章,深入分享阿里云ECS安全组实践经验. 阿里云的ECS有经典网络和专有网络(VPC)两种网络类型.经典网络基于阿里云基础网络,通过安全组(类似 ...

  3. (新零售)商户网格化运营 - 阿里云RDS PostgreSQL最佳实践

    原文地址 背景 伟大的马老师说: "纯电商时代很快会结束,未来的十年.二十年,没有电子商务这一说,只有新零售这一说,也就是说线上线下和物流必须结合在一起,才能诞生真正的新零售" 线 ...

  4. 《阿里云互联网多媒体存储解决方案蓝皮书》震撼上线!

    前言 中国互联网从1994年正式接入国际网络至今,以非凡的力量改变了世界,重新塑造了商业.政治.社会,甚至改变了全球几十亿的人的生活. 中国互联网络信息中心(CNNIC)第45次<中国互联网络发 ...

  5. 时间、空间、对象 海量极速多维检索 - 阿里云RDS PostgreSQL最佳实践

    标签 PostgreSQL , 时间 , 空间 , 对象属性 , 多维度检索 , 海量 , 空间索引 , 数据分区 , 块级索引BRIN , 多级索引 , GIN倒排索引 , JSON索引 , 多列索 ...

  6. 阿里云【7天实践训练营】进阶路线——Day3:阿里云云计算助理工程师认证(ACA)课程3 ~ 4章

    阿里云[7天实践训练营]进阶路线--Day3:阿里云云计算助理工程师认证(ACA)课程3 ~ 4章 第3章 : 掌握云数据库RDS 课时11:云数据RDS产品介绍 概要 基本信息 功能 RDS与自建数 ...

  7. 阿里云【7天实践训练营】进阶路线——Day2:阿里云云计算助理工程师认证(ACA)课程1 ~ 2章

    阿里云[7天实践训练营]进阶路线--Day2:阿里云云计算助理工程师认证(ACA)课程1 ~ 2章 ACA介绍 第1章:阿里云简介 课时1:阿里云简介 公司简介 企业愿景 阿里云是如何提供服务的 阿里 ...

  8. 阿里云运维架构实践秘籍 ——乔帮主的云技术实践绝学:降云十八掌

    传统IT正在向DT变革.未来,云计算将成为互联网的基础设施.作为技术过来人,亲历了中国互联网时代的发展.云计算云时代的发展,以及技术人员眼中云计算所带来的技术变革. 云对技术架构的变革 物理机体系阶段 ...

  9. 阿里云【7天实践训练营】进阶路线——Day5:阿里云云计算助理工程师认证(ACA)课程实验部分

    阿里云[7天实践训练营]进阶路线--Day5:阿里云云计算助理工程师认证(ACA)课程实验部分 课时9:[在线实验]ECS之初体验(Linux) 实验背景 实验详情 课时10:[在线实验]云服务器的数 ...

最新文章

  1. csgo怎么通过人机验证_让你的MacBook Pro完美运行CSGO!(图解版)
  2. 学习动态性能表(3)--v$sqlv$sql_plan
  3. java 获取包名类名_获取指定包名下的所有类的类名(全名)
  4. C++——类访问修饰符
  5. James Shore:敏捷的衰落
  6. python文件writelines_python 写文件write(string), writelines(list)
  7. mysql事务处理什么意思_mysql事务是什么意思
  8. pyspark 冒烟
  9. rundeck 内存溢出
  10. JAVA——JVM参数设置规则以及参数含义
  11. 【ASP.NET 基础】ASP.NET 目录操作
  12. 对我启发最大的数学学习方法
  13. RPLIDAR A1 slam建图
  14. qq企业邮箱的发送邮件服务器地址,腾讯企业邮箱注册和SMTP发件设置教程
  15. 控制天象,世间的最强者!
  16. centos7安装N卡驱动和conda pytorch1.7.1深度学习环境
  17. System.BadImageFormatException: 试图加载格式不正确的程序。
  18. JAVA,实现视频压缩(最全)
  19. 天涯孤岸软件商城-.net电子商务网站系统案例
  20. Swift 属性与方法

热门文章

  1. 亿图图示专家导出pdf并去除页面白边,可用于latex
  2. ASP.NET Core 面试题(二)
  3. 用java绘制火焰_用 CSS 实现火焰特效?不在话下
  4. 19年英语及计算机统考时间,2019年英语四六级考试时间及考试科目【已公布】
  5. Yolov3:目标检测都是浮云我只愿放飞自我
  6. 创建和部署flask中有关migrate可能遇到的问题
  7. java中list、map、array、实体类、字符串之间的相互转换,以及java8 stream使用
  8. 树莓派接手机屏幕_如何使用手机实现树莓派的连接
  9. Google Earth Engine ——利用where来合理划分NDVI阈值
  10. 清除console密码重起后,部分版本又会要输入默认console密码