Zoned Storage - 介绍
分区存储设备
分区存储设备是一类存储设备,其地址空间被划分为具有不同于常规存储设备的写入约束的区域 zones。
原理
分区存储设备的区域 必须按顺序写入。 设备地址空间的每个zone 都有一个写入指针wp
,用于跟踪下一次写入的位置。 区域中的数据不能被直接覆盖。 必须首先使用特殊命令(zone reset
)擦除该区域。 下图说明了这一原理。
分区存储设备可以使用各种记录和media技术来实现。 当今最常见的分区存储形式在叠瓦式磁记录 (SMR) HDD 上使用 SCSI 分区块命令 (ZBC) 和分区 ATA 命令 (ZAC) 接口。 ZBC 和 ZAC 支持分区块存储模型; SMR 技术能够实现持续的面密度增长,以满足不断扩大的数据需求,并且需要分区块访问模型。
固态磁盘 (SSD) 存储设备还可以实现分区接口,以减少写入放大、减少设备 DRAM 需求并大规模提高服务质量。 NVMe Zoned NameSpace (ZNS) 是 NVMe 标准委员会在 NVMe 接口标准中增加分区存储接口的技术提案。
Linux 生态系统支持
由于区域的顺序写入限制,分区存储设备不是传统存储设备的plug-and-play 即插即用替代品。 需要特殊的软件和驱动程序来确保应用程序操作符合设备限制。
随着版本 4.10.0 的发布,对分区存储设备的支持被添加到 Linux® 内核中,并支持在不同级别(磁盘驱动程序、文件系统、设备映射器驱动程序)的分区存储,为支持应用程序提供了广泛的选项 . 这种支持基于分区块设备 (ZBD) 抽象。
一个zoned块设备是独立于设备访问协议和接口的分区存储设备的通用表示。 这种抽象是 Linux 内核支持分区存储的基础。
与 ZBD 设备抽象相关的接口是对传统 Linux 块设备接口的扩展。 ZBD 接口与设备驱动程序相结合,为内核子系统(例如文件系统)和用户应用程序提供了一个通用的区域管理接口,该接口与所有分区设备类型和访问协议兼容。
下图显示了包括 ZBD 接口在内的内核结构的简化视图。