OpenChannelSSD之六_从OpenChannelSSD到ZNS

  • 背景
  • Chunk 和 PU
  • 关于Zoned Namespaces (ZNS)

背景

关于在GitHub上的Open Channel SSD 的开源项目好久没人更新过,在qemu搭建的平台上改进过,经常会出现bug, 对内核版本,qemu版本,系统版本要求相当高了。
虽然有很多论文已经发表出来了,但是讲真的觉得很多都是理论假设,并不能真的得到相应的实验结果,因此在学相关方面内容一定要看顶会论文,毕竟阿里的内部技术并不是公开的。

如今企业级要实现云存储效率需要单个SSD满足许多不同的工作负载,而工作负载现在可以说是无处不在。在应用共享SSD的时候,负载之间干扰造成延时忽高忽低,最坏时延迟巨幅升高。 保证为每一个硬盘用户提供稳定的服务质量,才能体现出云环境的服务质量。

传统SSD把内部的FTL交给主机处理是Open-Channel SSD的主要功能,让用户自制属于自己的SSD。

Chunk 和 PU

Open-Channel SSD提出了chunk和PU的概念。
Chunks特点:

  • 在LBA范围内顺序写入;
  • 需要重置才能重写;
  • 借鉴HDD的SMR规范(ZAC / ZBC);
  • 针对SSD物理限制进行了优化:使写入与介质对齐

Parallel Units特点:

  • Host可以对单独的工作负载进行direct I/O;
  • 单个或者多个die实现条带化;
  • 并行单元继承了底层介质的吞吐量和延迟特性;
  • 与NVMe中的I / O确定性相似的概念;

不难看出,Open-Channel SSD实现了I/O分离,可预测性延迟的特点,FTL功能移至Host端负责数据管理以及I/O调度。
但是实际情况,Open-Channel Specification 仅仅定义了Open-Channel涉及的最为通用的部分。不同厂商的SSD产品特性不同,它们或者难以统一,对定制化应用和工作负载的需求,依旧欠缺灵活性

关于Zoned Namespaces (ZNS)

采用Open-Channel SSD架构有阿里,微软等,将这个架构成为NVMe标准规范一部分的概念,提供灵活的定制化需求是一个热点研究。西部存储将功能驱动到解决关键OCSSD用例的NVMe中,提出了ZNS的概念。

• 它是NVMe工作组中的技术提案

  • 相对于正常的NVMe Namespace, Zoned Namespace将一个Namespace的逻辑地址
    空间切分成一个个的zone。Zone的基本操作有Read, Append Write,Zone
    Management 以及Get Log Page。

• 将zone接口标准化是为了:

  • 减少设备端的WAF;
  • 减少OP;
  • 减少SSD的DRAM,这是SSD中代价最高的部分;
  • 改善延迟和吞吐量;
  • 适用软件生态系统;

怎么来理解?
ZNS与SMR的ZBC / ZAC相似
• 存储空间被分成多个zone
• 每一段zone内都是顺序写入的
• 它是针对SSD优化的接口
-与介质特征保持一致(Zone的大小和Nand的块大小一致,Zone的容量与介质大小一致)
-减少NAND介质擦除周期

关于Zone的信息:
• Zone 状态转换

  • Empty, Implicitly Opened, Explicitly Opened, Closed, Full, Read Only, Offline
  • Empty -> Open -> Full -> Empty -> ….
    • Zone Reset
  • Full -> Empty
  • Zone 大小 和 Zone容量
    • Zone 大小是固定的
    • Zone容量是在一个Zone内的可写区域
    • 与Open-Channel相比,最大的区别就是在Zoned Namespace中,Zone的地址是LBA(Logical Block Address, 逻辑块地址)Zone Namespace就可以避免Open-Channel里繁琐的
      各类地址转换。


考虑到对一个区域(zone)多个写入的可伸缩性低(如下图为例),ZAC/ZBC 需要严格的写入顺序,限制写入性能还会增加host的开销,因此,软件生态系统,HBA等面临巨大挑战。

所以引入追加区域 (Zone Append),将数据追加到一个区域而不定义偏移量,由驱动器返回将数据写入该区域的位置。

Zone Write 示例:
3x Writes (4K, 8K, 16K) – Queue Depth = 1

Zone Append 示例:
3x Writes (4K, 8K, 16K) – Queue Depth = 3

ZNS 指的是具有ZAC / ZBC软件生态系统的Synergy。
现有的ZAC/ZBC-aware文件系统和设备映射都“工作正常”,支持ZNS只需要很少的更改;重用已应用于ZAC / ZBC硬盘驱动器(SMR)的现有工作;直接与文件系统集成(没有host-side FTL;1TB的介质设备不需要1GB 的DRAM; 能更好地利用SSD);代码已经在大厂商生产中使用,并且可以在Linux生态系统中使用。

ZNS使用现有的存储堆栈:
• 用户空间库

  • Libzbd
  • Nvme-cli
  • Blktests
  • Util-linux (blkzone)
  • fio
  • libzns
    • 内核空间库
  • NVMe对Zones的支持
  • XFS, Btrfs, F2FS, dm-zoned, etc…
    • 具有ZNS支持的Qemu

ZNS是为了满足多数应用对QOS及Latency需求的基础,然而却不如Open-Channel灵活。

OpenChannelSSD之六_从OpenChannelSSD到ZNS相关推荐

  1. 四:(之六_镜像发布)Dockerfile语法梳理和实践

    *6.镜像发布 1>注册Docker Hub账号并登陆. build的镜像名称格式必须是: dockerhub账户名/标识: 使用docker login在项目目录下登录: 浏览器: 2> ...

  2. python股票数据预处理_Python股票处理之六_数据预处理A

    1. 说明 在数据统计和预测的过程中,工程师基本都使用现成的算法,工程师的主要工作是根据具体业务逻辑预处理数据和选择算法. 首先要对数据预处理(数据清洗),包括数据的归一化,去除重复数据,修改错误数据 ...

  3. Arduino简单实例之六_超声测距离传感器

    1)       说明: 超声波测距离传感器常用于小车的障碍物检测.它采用超声波回波测距原理,运用精确的时差测量技术,检测传感器与目标物之间的距离. Trig 触发控制信号输入,Echo回响信号输出. ...

  4. Python股票处理之六_数据预处理A

    1.        说明 在数据统计和预测的过程中,工程师基本都使用现成的算法,工程师的主要工作是根据具体业务逻辑预处理数据和选择算法. 首先要对数据预处理(数据清洗),包括数据的归一化,去除重复数据 ...

  5. Git 学习笔记--3.EGit使用手册

    zz http://blog.csdn.net/pandakong/article/details/7234974 EGit是Eclipse上的Git插件,官方内容参看http://wiki.ecli ...

  6. 考oracle ocm,Oracle数据库OCM考试系列教程与总结_OCM考试实验笔记

    oracle数据库OCM考试系列教程与总结_OCM考试实验笔记 以下包括OCM考试系列的文章,在以下各章节中基本的内容都已经涉及到,在这些文章中,将对之前的OCM考试系列文章进行汇总,对一些之前没提到 ...

  7. Android经典的大牛博客推荐

    Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 – 博客园 gundumw100博客 – android进阶分类文章列表 – ITeye技术网站 CSDN ...

  8. 我的Android进阶之旅------经典的大客推荐(排名不分先后)!!

    今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下(转载于:http://blog.csdn.net/wujxiaoz/article/details/8237096) Android中文Wiki ...

  9. 我的Android进阶之旅:经典的大牛博客推荐

    Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 - 博客园 gundumw100博客 - android进阶分类文章列表 - ITeye技术网站 CSDN ...

  10. Android进阶之旅:经典的大牛博客推荐

    Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 - 博客园 gundumw100博客 - android进阶分类文章列表 - ITeye技术网站 CSDN ...

最新文章

  1. poj1064(二分查找)
  2. 最新综述:基于深度学习方式的单目物体姿态估计与跟踪
  3. python django项目断点调试
  4. Spring Boot:构建一个RESTful Web应用程序
  5. 关于java的取整/和取余%
  6. WCF服务启动时遇到AddressAccessDeniedException
  7. linkedin客户开发_10个LinkedIn WordPress插件赢得新客户
  8. Hybrid Astar 算法剖析和实现(二)
  9. 推荐 7 个神级 Java 开源项目
  10. matlab输入二项分布函数,matlab实现二项分布
  11. 2015阿里巴巴校招在线笔试题
  12. 分析一个游戏脚本框架
  13. 四级英语高分必备完形填空2篇翻译
  14. 云计算基础设施平台iaas(openstack)超级详细搭建(十三) 安装Trove服务
  15. 互联网产业中“外行领到内行”和软件工程
  16. 奋斗吧,程序员——第四十二章 会挽雕弓如满月,西北望,射天狼
  17. Linux添加用户练习
  18. php python 源码安装教程,Python安装的图文教程分享
  19. 关于maven仓库存在jar包,工程引用却找不到
  20. 【SIP协议详解】SIP协议各字段的含义

热门文章

  1. Windows快捷键小记
  2. linux重置ilo,重启HPE管理芯片ILO5的5种方法(Reset ilo)
  3. 播布客老顽童MySQL DBA培训目录
  4. warframe星际战甲氏族颜料35种全获取机制和获取流程攻略
  5. 【HGE】使用C++从加密压缩包中读取图像文件并显示
  6. 2018阿里菜鸟无人仓一面面经
  7. MySQL基础篇——存储过程和函数中的变量
  8. 电子行报告:从海外龙头发展历程看国内半导体设备企业投资价值
  9. ios微信分享失效,不支持history.pushState方法
  10. 【计算机体系结构量化与研究方法笔记】