ICCD 2024 Paper 分布式元数据论文阅读笔记整理
问题
分区命名空间(ZNS)SSD将地址空间划分为顺序写入的区域,并将垃圾回收(GC)转移到主机,从而提供更稳定的性能、更大的容量和更长的设备寿命。
然而,顺序写入约束给ZNS设备上的文件系统设计带来了一些问题,例如:依赖覆盖操作的文件系统(例如,Ext4[10]和XFS[11])不能直接在ZNS SSD上运行;如果不采取额外措施(例如,zone Append命令[12]或合并写入请求),多个写入请求不能同时写入单个区域。这些问题给提高文件系统的多线程写入吞吐量带来了困难。
现有方法局限性
为了适应NVMe ZNS SSD并缓解上述问题,F2FS[13]和BTRFS[14]引入了额外的设计。
F2FS需要额外的块接口设备来存储元数据,需要在块层使用块I/O调度器mq-deadline[15]-[17]。合并来自不同线程的数据块和节点块,将它们提交给块层的mq-deadline调度器进行进一步合并[16],最后将合并后的请求写入ZNS SSD。
BTRFS可以直接在ZNS SSD上运行,而无需额外的设备,需要在块层使用块I/O调度器mq-deadline[15]-[17]。采用了Zone Append命令[12],允许将多个数据块并发写入单个区域[18]。
通过全面的实验,两种文件系统在NVMe ZNS SSD上可扩展性很差,且写入吞吐量远低于ZNS SSD的最大写入带宽,其根本原因在于:
-
当前文件系统通常无法同时利用多个区域的吞吐量。
-
当前文件系统在单个区域内并发写入的方法效率低下。
本文方法
本文提出了SchInFS,集成了块I/O调度器功能的多头日志ZNS SSD文件系统。
-
采用多头日志设计,同时利用多个区域的吞吐量。
-
为每个日志提供了一个独立的合并队列,促进了高效的跨线程写入块。
-
使用块I/O提交控制器(BSC)来确保在单个区域内及时提交请求和有序写入。
真实设备的评估证明了SchInFS的有效性,与当前的ZNS SSD文件系统相比,ZNS SSD的并发性能提高了71.94%。
总结
针对ZNS SSD上文件系统写入性能问题,现有文件系统:无法同时利用多个区域的吞吐量;在单个区域内并发写入的方法效率低下。本文提出SchInFS,集成了块I/O调度器功能的多头日志ZNS SSD文件系统。包括3个技术:(1)多头日志设计,同时利用多个区域的吞吐量。(2)每个日志单独一个合并队列,促进了高效的跨线程写入块。(3)使用块I/O提交控制器(BSC)确保在单个区域内及时提交请求和有序写入。