关键要点
1. 块存储在Android中的实现方式和挑战。
2. zoned storage解决方案优化块存储性能。
3. zoned storage标准化并加入Linux内核中。
UFS的介绍
- • 通用闪存存储(UFS)
- • 移动电话、数码相机和消费电子设备的闪存存储规范。
- • 支持高速数据传输、低功耗和小型化设计。
- • 在eMMC和SD标准的基础上进行改进。
- • UFS 1.1标准于2012年发布。
与企业SSD的差异
- • 形式因素:UFS设备更小。
- • UFS设备优化以低功耗运行。
- • 企业级SSD的成本高于UFS设备。
- • 企业级SSD提供更高的性能。
- • 企业级SSD具有更高的容量。
图中展示了基于UFS的块存储在移动设备中的堆栈结构和闪存特性,其满足闪存介质的一般特征,但根据移动设备场景特点做了深度优化,如能耗设计和访问效率。
F2FS(Flash-Friendly File System) 是由Google开发的一种文件系统,专门为闪存存储设备(如NAND闪存)设计。其主要特点和优势包括:
- 1. 优化闪存性能:F2FS通过减少写放大效应和提高随机写入性能,优化了闪存的使用,适合于手机和嵌入式设备。
- 2. 日志结构:采用日志结构文件系统(Log-Structured File System)设计,所有数据和元数据均以日志形式写入,降低了对闪存的写入次数。
- 3. 动态分配:F2FS使用动态分配的块管理策略,能有效管理存储空间,并提高了数据的读写效率。
- 4. 垃圾回收机制:具备高效的垃圾回收机制,能够在较小的延迟下整理存储空间,保持性能稳定。
- 5. 多种块大小支持:支持不同的块大小配置,适应不同应用场景的需求。
F2FS广泛应用于Android设备和其他需要高效闪存管理的系统中,因其在性能和效率方面的优势越来越受到青睐。
存在的挑战
- • UFS设备的L2P(逻辑到物理)表可能超过SRAM大小。这可能会使随机I/O操作数量加倍。
- • UFS设备的垃圾回收可能导致延迟峰值。
解决方案:分区存储
- • 更大的L2P条目,因此L2P表小得多。L2P表再次适配于SRAM。因此,I/O带宽增加,I/O延迟减少。
- • 主机软件可以通过为每个文件分配连续的LBA范围来优化读取性能。
- • 不再需要UFS设备过度配置。文件系统的过度配置仍然是必需的。
- • 垃圾收集从UFS设备移动到主机。因此,写入放大减少。
“分区存储”作为一种解决方案,强调通过优化L2P表的大小和结构来提高I/O性能。它指出,主机软件可以更有效地管理文件读取,同时简化了UFS设备的配置需求,并通过将垃圾收集转移到主机来减少写入放大。这种方法有助于提升存储系统的整体效率和性能。
分区存储(Zoned Storage )和分区空间(Zoned NameSpace)有什么区别?
分区存储(Zoned Storage)和分区空间(Zoned NameSpace)在某些方面是相似的,尤其是在应用场景和待解决的问题上,都旨在优化存储性能和管理效率,特别是在大容量存储设备中。
- 1. 相似之处:
- • 两者都强调区域化管理,以提高存储密度和效率。
- • 在移动端和企业级SSD中,都旨在解决随机写入性能下降的问题。
- 2. 不同之处:
- • 分区存储更侧重于物理层面的存储区域划分。
- • 分区空间则更多关注逻辑层面的数据组织,适用于企业级SSD,强调数据访问和管理的灵活性。
虽然它们在某些上下文中可以互换使用,但其应用背景和技术细节仍有区别。
- • JEDEC Zoned UFS (ZUFS) 标准已于2023年7月25日完成。该方法基于ZBC-2:
- • 每个UFS设备一个区域逻辑单元。
- • 区域逻辑单元中的所有区域具有顺序写入要求的区域类型。
- • 区域逻辑单元中的所有区域大小相同。
- • 无间隙区域。
- • 与T10合作,在SBC-5中增加数据温度支持。数据温度支持预计将在下一个SBC-5草案中添加(2023年)
关于T10
T10是一个国际标准化组织,专注于计算机存储接口的标准化工作。它的全称是“ANSI T10”,主要负责制定与SCSI(小型计算机系统接口)相关的标准和协议,包括SCSI命令、接口和其他存储设备的规范。
T10的工作涵盖多个方面,比如:
- 1. SCSI协议:定义了数据传输和命令集的标准。
- 2. 存储设备的管理:包括设备发现、配置和错误处理。
- 3. 新技术的整合:例如,支持NVMe和其他现代存储技术的标准。
通过这些标准,T10旨在确保不同制造商的存储设备之间的兼容性和互操作性。
表述了Linux内核对分区存储的支持,特别是NVMe和SCSI协议在写入操作上的差异。NVMe支持更灵活的写入方式,而SCSI的支持较为有限。Linux内核的块层处理可能会影响命令的顺序,而mq-deadline调度程序则在区域写入时进行序列化。限制每个区域的队列深度会导致性能下降。
概述了对Linux内核的计划,主要目标是减少写命令的重排序。通过对Linux内核块层和UFS主控制器驱动程序的修改,旨在确保SCSI命令的顺序处理。如果UFS设备检测到重排序的写命令,将以逻辑块地址(LBA)顺序重新提交这些命令,从而提高数据一致性和性能。
总结
- 1. Universal Flash Storage (UFS)是一种适用于移动设备的闪存存储标准,具有高速数据传输、低功耗和小型化的特点。
- 2. Zoned storage是解决UFS存储面临的挑战的一种方法,通过增大L2P条目、优化读取性能、减少设备的过度配额以及将垃圾收集移至主机来提高I/O带宽和降低延迟。
- 3. 目前正在推进zoned UFS(ZUFS)的标准化工作,并在Linux内核中持续优化Zoned storage的支持,以进一步提升UFS设备的性能。
---【本文完】---