Open-Channel SSD

Open-Channel SSD

所谓open-channel SSD 指的是FTL(Flash translation layer)不在device 端, 而是由Host的操作系统维护的SSD。Linux 内核从4.4开始已经支持 Open-Channel SSD了, 并提供了符合NVMe协议的抽象层——lightNVM。

目前,NVM Express (NVMEe) 1.3, 定义了寄存器级别的接口可以让host软件通过PCI Express管理非易失性存储介质

Open-Channel SSD 2.0 的spec,使SSD将内部的并行机制暴露给Host, 从而Host 可以控制数据的物理位置并进行I/O调度(这些原来是SSD内部Firmware的事情)。spec 可以从官网下载openchanel ssd spec, spec 提供了符合NVMe协议的物理地址命令集(Physical Page Address Command Set)

Open-Channel提供

  • I/O isolation
  • predictable latencies
  • software-defined non-volatile memory

I/O isolation 指 将 SSD 的容量以 LUN 形式进行划分,成为多个 Channel。(可以分割租户)

Software-Defined Non-Volatile Memory,指将 SSD flash 的 FTL 集成进入 host 端,由 host 端进行 workload 的优化

OpenChannel 架构

可以看出,在Open Channel 架构下,向 Host System 暴露了 写 Buffer 及 Wear-leveling

基本术语

  • Logical block, 逻辑块,读写命令所面对的最小数据单位,这里的概念从NVMe来,而不是NAND上的物理block。
  • PU (parallel unit), 指的是存储介质中的最小并行操作单元,SSD 中拥有大量的PU,这个PU 与传统SSD 中LUN或者DIE 的概念相似。
  • Group, 指的是一组共享同一传输总线的PU。与传统SSD 中的Lane 或者Channel 的概念类似。
  • Chunk, 指一系列连续的逻辑块(contiguous logical blocks)。 chunk 是可以被reset(参见后面基本命令集)的最小单元。
  • Write unit, write unit 是一次写的最少逻辑块数目。
  • LBA, 即 logical block address, 指逻辑块地址又称为 LBA。值得说明的是,Open-Channel SSD 使用的LBA 包含了SSD 内部的拓扑信息,比如PU,Group,Chunk等信息。

 SSD的物理拓扑结构图

Open-Channel SSD 有哪些好处?

  • Host 更主动

这是显然的,对于open-channel SSD,drive 将自己的物理结构信息和内部控制能力开放给Host,使得Host可以精准的控制SSD里的并行单元。spec指出,Host 可以根据自己的业务来控制drive的并行度,SSD firmware不应当对任何形式的workload(比如传统意义上的顺序写,随机写)进行优化处理。

  • I/O 隔离

对于多租户的应用架构(multi tenant architecture)中,I/O 隔离有助于解决 nosiy neighbor 问题(指的是由于物理资源的共享,本来逻辑隔离的业务性能上难以避免地彼此影响),而Open-Channel SSD里面的每个PU在物理上是隔离的,先天适合这种应用场景

  • 可预测 latency

Host 知道每一个PU上的正在执行的(或者pending的)所有命令,对latency就有准确的把握。

chunk的管理

  • 一个chunk 可以接受的命令有Read, Write 和Reset等。(具体见下文I/O commands)。
  • 在一个chunk中Host 必须顺序写(但是看上图中,貌似为random 写留了一条通道),而且写的最小单位是write unit。
  • 一个chunk写完后,Host 要想重新往这个chunk写数据必须先 reset 这个chunk。
  • 跟chunk相关的信息有:
    • SLBA,start LBA,每个chunk 都有唯一的SLBA。
    • NLB,number of logical blocks,chunk 里面的logical block 个数。
    • WP, write pointer。

SLBA, NLB 和 WP 的逻辑关系如下图:

  • CS,chunk state,又可以分为:
    1. Free,WP 为0 的情况下,chuck的状态为free。
    2. Open, WP 不等于0,并且可以继续写入。
    3. Closed,不可以继续写。
    4. Offline,不可以再用的chunk。可能是 wear leveling 的结果。

状态转换如图:

LightNVM:为Open-Channel SSD 的管理设计和实现的Linux子系统

LightNVM 架构

从下至上: 

  • NVMe 设备驱动通过 PPA Address 与 Open-Channel SSD 交互        
  • LightNVM 子系统(介质管理层)
  • pblk (Host-side Flash Translation Layer)

 Physical Page Addressing (PPA) Interface

  • 将SSD的物理/逻辑分布,Performance,metadata,控制器功能向上层暴露
  • 将设备分布映射成为地址空间,映射如下

LightNVM 子系统(介质管理层)

子系统的一个实例在PPA I/O支持的块设备的顶部初始化。该实例使内核可以通过内部nvm_dev数据结构和sysfs公开设备的几何结构。这样,FTL和用户空间的应用程序可以在使用前了解设备的几何特征。它还使用blk-mq设备驱动程序专用的I/O接口公开了vector接口,从而可以通过设备驱动程序有效地发布vector I/Os。

  •  向量 I/Os(批量操作)

介质管理器抽象化底层物理介质通过隐藏其约束和访问详细信息,主要负责:

  1. 具体地址和通用地址格式之间的名称映射
  2. 设备具体的SSD状态管理
  3. 恢复–保证持久性在处理与SSD状态管理关联的元数据时

Host-side Flash Translation Layer - pblk

  • Data Placement
    • 物理地址到逻辑地址的映射(L2P)
    • Host端的映射表
    • 其他元数据
  • I/O Scheduling
  • Error handling
    • 擦除&写入错误

读路径相对简单,首先查看Buffer中是否含有所需信息,如果没有,则访问OCSSD

写路径: 写入写Buffer,经过LightNVM子系统,通过NVMe设备驱动器写入OCSSD

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值