OpenChannelSSD之六_从OpenChannelSSD到ZNS
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相关推荐
- 四:(之六_镜像发布)Dockerfile语法梳理和实践
*6.镜像发布 1>注册Docker Hub账号并登陆. build的镜像名称格式必须是: dockerhub账户名/标识: 使用docker login在项目目录下登录: 浏览器: 2> ...
- python股票数据预处理_Python股票处理之六_数据预处理A
1. 说明 在数据统计和预测的过程中,工程师基本都使用现成的算法,工程师的主要工作是根据具体业务逻辑预处理数据和选择算法. 首先要对数据预处理(数据清洗),包括数据的归一化,去除重复数据,修改错误数据 ...
- Arduino简单实例之六_超声测距离传感器
1) 说明: 超声波测距离传感器常用于小车的障碍物检测.它采用超声波回波测距原理,运用精确的时差测量技术,检测传感器与目标物之间的距离. Trig 触发控制信号输入,Echo回响信号输出. ...
- Python股票处理之六_数据预处理A
1. 说明 在数据统计和预测的过程中,工程师基本都使用现成的算法,工程师的主要工作是根据具体业务逻辑预处理数据和选择算法. 首先要对数据预处理(数据清洗),包括数据的归一化,去除重复数据 ...
- Git 学习笔记--3.EGit使用手册
zz http://blog.csdn.net/pandakong/article/details/7234974 EGit是Eclipse上的Git插件,官方内容参看http://wiki.ecli ...
- 考oracle ocm,Oracle数据库OCM考试系列教程与总结_OCM考试实验笔记
oracle数据库OCM考试系列教程与总结_OCM考试实验笔记 以下包括OCM考试系列的文章,在以下各章节中基本的内容都已经涉及到,在这些文章中,将对之前的OCM考试系列文章进行汇总,对一些之前没提到 ...
- Android经典的大牛博客推荐
Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 – 博客园 gundumw100博客 – android进阶分类文章列表 – ITeye技术网站 CSDN ...
- 我的Android进阶之旅------经典的大客推荐(排名不分先后)!!
今天看到一篇文章,收藏了很多大牛的博客,在这里分享一下(转载于:http://blog.csdn.net/wujxiaoz/article/details/8237096) Android中文Wiki ...
- 我的Android进阶之旅:经典的大牛博客推荐
Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 - 博客园 gundumw100博客 - android进阶分类文章列表 - ITeye技术网站 CSDN ...
- Android进阶之旅:经典的大牛博客推荐
Android中文Wiki AndroidStudio-NDK开发-移动开发团队 谦虚的天下 - 博客园 gundumw100博客 - android进阶分类文章列表 - ITeye技术网站 CSDN ...
最新文章
- poj1064(二分查找)
- 最新综述:基于深度学习方式的单目物体姿态估计与跟踪
- python django项目断点调试
- Spring Boot:构建一个RESTful Web应用程序
- 关于java的取整/和取余%
- WCF服务启动时遇到AddressAccessDeniedException
- linkedin客户开发_10个LinkedIn WordPress插件赢得新客户
- Hybrid Astar 算法剖析和实现(二)
- 推荐 7 个神级 Java 开源项目
- matlab输入二项分布函数,matlab实现二项分布
- 2015阿里巴巴校招在线笔试题
- 分析一个游戏脚本框架
- 四级英语高分必备完形填空2篇翻译
- 云计算基础设施平台iaas(openstack)超级详细搭建(十三) 安装Trove服务
- 互联网产业中“外行领到内行”和软件工程
- 奋斗吧,程序员——第四十二章 会挽雕弓如满月,西北望,射天狼
- Linux添加用户练习
- php python 源码安装教程,Python安装的图文教程分享
- 关于maven仓库存在jar包,工程引用却找不到
- 【SIP协议详解】SIP协议各字段的含义