首页 > 其他分享 >ZNS SSD简介

ZNS SSD简介

时间:2022-11-21 20:55:17浏览次数:65  
标签:zone 写入 Storage ZNS 2020 简介 SSD

传统SSD

SSD是Solid State Drive(固态硬盘)。一块SSD封装有10-100个NAND芯片和一个SSD控制器。SSD控制器通过接口来管理NAND芯片并且向用户提供服务,其中NVMe就属于一种接口。 NVMe是Non Volatile Memory Host Controller Interface Specification。曾经广泛使用的SATA接口传输速度太慢,拖了SSD的后腿。NVMe性能高,可以自动适配很多平台,无需厂家提供驱动。 图片来源: 2020 Storage Developer Conference. © Western Digital, Inc. All Rights Reserved. 在传统的SSD中,管理SSD的软件叫做flash translation layer(FTL)。主要的任务是将逻辑块映射到物理地址。不同的文件写入到介质上以后没有办法分开,也就是说不同生命周期的文件存储在相同的擦除单元里。 图片来源: 2020 Storage Developer Conference. © Western Digital, Inc. All Rights Reserved. 由于擦除是按擦除单元进行的,要删就要删一整个单元,所以在删掉之前必须要做垃圾回收(garbage collection, GC),也就是说把有用的部分先写到其他的地方,这样原来的擦除单元就可以删掉了。 图片来源: 2020 Storage Developer Conference. © Western Digital, Inc. All Rights Reserved. 垃圾回收的开销叫写入放大因数( Write Amplification Factor, WAF),WAF越大,如果在写入的时候,可以把不同的文件就写入到不同的擦除单元里,上面的问题就好解决了。ZNS SSD就可以达到这种要求。 图片来源: 2020 Storage Developer Conference. © Western Digital, Inc. All Rights Reserved. 垃圾回收机制需要一定的预留空间( over-provisioning)来存放暂时不需要删掉的信息,影响了吞吐量;而ZNS SSD不需要垃圾回收,写入吞吐量明显大很多。

ZNS SSD

ZNS就是Zoned Namespaces的意思,通过NVMe的新规范(https://nvmexpress.org/developers/nvme-specification/)就可以实现。

分区存储模型(Zoned Storage Model)

zone(分区)在namespace(命名空间)里线性分布,所有的zone都要顺序地写入,在再一次写入前必须要先重置。 图片来源: 2020 Storage Developer Conference. © Western Digital, Inc. All Rights Reserved. 每个zone都有相关联的属性,如
  • 线性地指向下一个写入单元的写指针
  • 指向第一个LBA(逻辑区块地址,Logical Block Address)的指针:ZSLBA(Zone Starting LBA)
  • Zone容量,用可写入的LBA的数量表示
  • zone状态,包括读写访问规则
图片来源: The NVM Express Zoned Namespace Command Set 1.0 specification

分区大小(zone size)和分区容量(zone capacity)

Zone size就是zone里面所有逻辑块的总数,命名空间里的所有zone都是相同的。zone capacity是一个zone里可以写入的LBA的数量,也就是可用的逻辑块总数(一个LBA对应一个逻辑块)。通常是固定的,但是标准允许它变。分区容量总是小于等于分区大小。 图片来源: 2020 Storage Developer Conference. © Western Digital, Inc. All Rights Reserved.

分区状态(zone state)

每一个zone都有一个状态机,LBA是否可读写就取决于它的状态。 图片来源: The NVM Express Zoned Namespace Command Set 1.0 specification

分区资源限制(Zone Resources Limits)

ZNS标准允许控制器设置同时能够在隐式、显式开放状态下的zone总数,还可以定义活跃zone的总数。

分区命名空间指令集(Zoned Namespace Command Set)

就是NVMe的那一套,包括命名空间、控制器的数据结构和 Flush (0h), Read (1h), Write (2h), Verify (0Ch) 。 图片来源: 2020 Storage Developer Conference. © Western Digital, Inc. All Rights Reserved.

写入的时候为什么要用Append

NVMe标准允许设备以任何顺序执行指令,但是在一个zone里面必须要顺序写入。所以必须要把写入指令排好顺序。由于SSD本来就很快,需要消耗很多CPU资源,这样一来开销更大,因此要改用append指令。 append指令需要3个参数:ZSLBA,数据长度,数据缓存区。  
参考
  1. https://snia.org/sites/default/files/SDC/2020/075-Bj%C3%B8rling-Zoned-Namespaces-ZNS-SSDs.pdf
  1. https://zonedstorage.io/docs/introduction/zns
 

标签:zone,写入,Storage,ZNS,2020,简介,SSD
From: https://www.cnblogs.com/hushrush/p/16913175.html

相关文章