面向NVM的混合粒度文件系统

2016-05-14 15:49何耀蔡涛彭长生
软件导刊 2016年7期

何耀 蔡涛 彭长生

摘要:设计面向NVM的混合粒度文件系统UFS,首先给出混合粒度文件系统的结构;设计空间管理策略,将两类NVM存储设备的空间划分为字节区和块区;然后基于多级索引表的元数据和数据管理策略,提高元数据和数据的查找性能;设计了混合式文件数据管理策略,在两类NVM存储设备之间合理分布数据,提高数据的访问效率,解决单一NVM存储设备存储空间不足的问题;最后在fuse的基础上实现了UFS原型系统,使用postmark和fio工具进行了测试与分析。结果表明UFS相比Ext3在I/O性能上提高了28%~166%,接近于ramfs,在保证I/O性能的同时,解决了DIMM接口NVM存储设备空间不足问题。

关键词关键词:存储级内存; SCM; 非易失存储器;混合文件系统

DOIDOI:10.11907/rjdk.161389

中图分类号:TP301文献标识码:A文章编号文章编号:16727800(2016)007001704

0引言

随着4G、物联网、云计算等技术的飞快发展,人类正在从IT时代走向DT时代。DT时代意味着数以亿计的智能终端和传感器设备每时每刻都在向后台系统传输海量数据。数据规模呈现爆炸式增长的同时,数据的存储性能和管理需求也面临新的挑战和机遇。为了解决此问题,研究开发新型存储技术,成为未来构建高性能存储系统的关键。随着半导体技术的发展,一些具有优良特性的NVM(nonvolatile memory)为构建高性能存储系统提供了契机,主要包括:相变存储器(PCM)、自旋转移力矩磁存储器(STTRAM)、铁电存储器(FeRAM)等。这类NVM具有内存级存取和持久性存储两大特点,其主要特征表现为:访问延迟低、字节可寻址、集成度高、内部无机械运动等。

目前主要有两类NVM存储设备:替换内存的DIMM接口NVM存储设备和替换外存的PCIe接口NVM存储设备。理想情况下,利用DIMM接口NVM存储设备取代DRAM和硬盘,形成单层存储结构。一方面,CPU能直接通过load/store指令访问数据,避免已有内核IO栈的软件开销\[1,2\]。另一方面,基于DIMM接口的NVM存储设备可以通过CPU的cache提高设备的读写性能。由于DIMM插口数量和NVM集成工艺等限制,难以独立构建大容量SCM系统,因此在未来很长一段时间内,混合使用DIMM和PCIe两类接口的NVM存储设备是必然选择。但是现有内外存管理算法针对单一类型的存储设备而设计,无法有效管理由两类NVM存储设备构建的混合存储系统。同时两类NVM存储设备在接口、性能、容量等存在差异;存储系统中元数据和数据、文件之间的数据、单个文件的不同部分数据,都具有不同的访问特性。这给统一管理两类NVM存储设备增加了难度,同时也提供了思路。

本文基于混合存储结构,针对DIMM和PCIe接口NVM存储设备并存的情况,设计面向NVM的混合粒度文件系统UFS,实现两类NVM存储设备的统一管理NVM存储设备。

1相关研究

在针对NVM构建新型文件系统方面,文献使用已有的OS基础设施优化了文件系统,同时简化了其实现,通过虚拟地址空间存储文件数据,使用内存管理单元管理NVM空间,具有良好的性能;文献、针对NVM设计了新型文件系统,围绕DIMM接口NVM存储设备的字节寻址和持久化特性,优化了文件组织结构和一致性策略,显著提高了性能;文献构建了针对NVM的运行时库,提供给用户程序使用,减少内核交互的软件开销,极大地发挥了NVM性能。

在利用NVM构建混合存储系统方面,文献使用带后备电池的RAM构建文件的缓存,避免频繁将数据写入磁盘,提高文件系统的性能;文献使用NVM存放文件系统中的元数据和小文件,设计了数据迁移算法避免NVM的空间限制;文献分离数据和元数据,仅将元数据存放在NVM中,加速元数据的访问性能,同时使用轻量级事务机制避免了元数据更新的写放大问题;文献使用NVM作为数据的缓存和持久性存储空间,通过缓存SSD的数据并适时调整热点数据到NVM上存储,提高了基于Flash的SSD随机写性能,延长使用寿命。

综上所述,目前针对NVM构建的新型文件系统,主要考虑的是如何避免各种软件开销,最大限度发挥DIMM接口NVM存储设备的性能,但没有考虑到现有单个NVM存储设备容量有限的问题。针对NVM构建混合存储系统方面,大多利用NVM作为缓存,同时研究数据的动态迁移算法,但没有考虑到文件数据之间以及文件与文件之间访问特性的区别。

2混合粒度文件系统结构

两类NVM存储设备在访问接口、访问性能等方面存在差异,主要表现为:①DIMM接口NVM存储设备具有非易失性、低访问延迟和I/O性能高等优点,同时支持字节寻址的方式能够实现更加灵活的管理粒度;②PCIe接口NVM存储设备基于I/O总线,具备良好的向后兼容性,同时其单个设备存储密度更大、价格低,适用于构建基于NVM的大容量存储系统。因此针对DIMM和PCIe两类NVM存储设备特性混合构建的存储系统,本文设计了混合粒度文件系统UFS,其结构如图1所示。

混合粒度文件系统主要包含3个功能模块:①空间管理模块负责存储空间的分配与管理,以及维护文件系统的视图;②元数据管理模块负责两类NVM存储设备的元数据组织和索引;③聚合式文件管理模块负责在两类NVM存储设备上合理分布数据。

3混合粒度文件系统空间管理策略

混合粒度文件系统视图如图2所示。将DIMM和PCIe接口NVM存储设备空间分别划分为字节区和块区,不同于Ext2\[15\]基于整个存储空间的块管理。字节区能利用DIMM接口NVM存储设备特性,能够满足对访问延迟、读写性能有较高要求的数据请求,避免数据因为粗粒度管理方式导致存储效率不高。因此将超级块、索引节点和目录树等元数据存放在字节区,同时将剩余的字节区空间用于存放频繁访问的文件数据以及小文件。块区利用PCIe接口NVM存储设备容量上的优势,同时在以块整数倍访问时也具有较高的I/O性能。因此,将大文件以及最近未访问的文件数据存放在块区。

由于字节区的管理粒度太小容易导致空间分配和回收的复杂性,因此混合粒度设计了一个简单高效的freelist链表结构来组织空闲区。其中链表中每个节点通过如图3所示的node描述符结构来表示已经申请的空闲区。

Flag占用Addr的最高位,用于指示申请的空闲区位于字节区还是块区。Addr长度由63bit的整数表示,用于指示申请的空闲区起始地址,63bit的寻址空间足够支持8EB的存储空间。Len表示连续空闲区的长度。Resvrd为保留字段。混合粒度文件系统利用Len字段能够支持连续块分配,大大减少了空闲块的分配次数和访问数据块时的查找次数,提高I/O效率。

4基于多级索引表的元数据管理策略

混合粒度文件系统中字节区主要存放元数据,包括inode、目录、文件间接块,由于没有传统磁盘寻道操作的访问开销,无需设计类似B+树具有复杂分裂和合并的管理机制。

在混合粒度文件系统中采用类似Ext2中的多级索引表来组织和管理文件和inode表(视为特殊文件),保证数据灵活存储的同时,仍具有较高搜索速度。多级索引表包含有直接寻址字段和间接寻址字段。直接寻址字段直接指向数据块,有助于提高小文件的索引能力;间接寻址字段中每个中间节点存放指向多个子节点的指针数组,通过索引ID与数据块地址的映射实现对文件内容的检索。

5混合式文件数据管理策略

由于受到DIMM接口数量以及单个NVM集成度的限制,混合粒度文件系统的字节区不可能存放所有文件数据。此外,对单个文件而言、各部分数据在访问频率上也存在很大差异,现有通过内存统一缓存数据来减少响应时间的方法,存在管理效率不高,无法适应存储级内存的问题。据此,混合粒度文件系统设计了聚合式文件组织结构,构建文件内缓存提高文件访问性能。聚合式文件inode结构如图4所示。

将文件存储空间划分为缓冲区和数据区两个部分,通过预留部分的直接寻址字段构建Sizep大小的缓冲区。文件可以通过type字段来识别缓冲区存储的数据类型,例如是小文件,还是频繁访问的热数据?数据区则基于多级索引表满足大文件的存储和访问需求。聚合式文件组织结构提高了文件数据的访问性能,同时也避免了字节区空间不足的问题。

6系统原型测试与分析

在fuse用户态文件系统的基础上,实现了面向两类NVM存储设备的混合粒度文件系统UFS。由于当前没有成熟的NVM存储设备,基于内存模拟两类NVM存储设备,具体步骤如下:

(1)使用PMBD模拟器模拟PCIe接口的NVM存储设备,设置80ns的读延迟和1000ns的写延迟模拟PCM类型NVM存储设备特性。PMBD通过挂载点提供块区存储空间。

(2)DIMM接口NVM存储设备的访问特性和访问性能与DRAM类似,因此直接通过预留内核地址空间提供字节区存储空间。

(3)使用fuse建立用户态文件系统,实现相应的组织结构和管理功能,构建面向NVM的混合粒度文件系统。

UFS软硬件环境配置如表1所示,使用postmark和Time测试工具评估原型系统的性能。

首先配置UFS中Sizep的值为4100KB;然后设置postmark数据集包含30 000个大小为1 000~5 000KB的文件和1 000个目录;同时设置读写块大小为4 096KB;最后得到UFS的写性能,如图5所示。

从图5可以看出,由于Ext3是基于块的文件系统,UFS相对于Ext3在写性能上提高了28%。因此基于两类NVM存储设备特性,将DIMM和PCIe接口NVM存储设备空间分别划分为字节区和块区,比单纯使用PCIe接口NVM存储设备具有更高的写性能优势。相对于ramfs,UFS在写性能方面降低了38%,这是由于Sizep大小的限制使得大部分数据必须存放在块区,增加了访问延迟。但相比仅使用DIMM接口NVM存储设备的ramfs,UFS解决了存储空间不足的问题。

为了测试文件缓冲区大小对UFS写性能的影响,将Sizep的值分别设置为3700、4100、4500、4700和4900字节,然后使用上一节postmark相同配置继续测试UFS、Ext3(Ext3 on PMBD)和ramfs。实验结果如图6所示。可以看出,UFS的写性能随着文件缓冲区Sizep的增大而上升,相对于Ext3,UFS的写性能从1.28x增加到了1.66x,这表明不同接口的NVM存储设备对文件系统性能有较大影响,利用字节区存储更多的文件数据,能够显著提高系统的写性能;但写性能的提高与缓冲区大小之间并不是线性关系,UFS的缓冲区增加了32%的存储空间,但写性能仅提高了22%,这说明通过合理利用字节区构建文件内缓存,能够避免过度依赖DIMM接口NVM存储设备的问题。

6.2使用Postmar测试的读性能

使用6.1中相同的方法,首先测试UFS中Sizep为4100Kb时的读性能,如图7所示。可以看出NVMCFS在读性能方面相比Ext3提高了41%,相比ramfs仅降低30%,这表明UFS使用DIMM接口NVM存储设备构建的文件缓冲区降低了读延迟。相比写性能UFS的读性能更接近与ramfs,这是由于模拟PCIe接口的NVM存储设备的读延迟低于写延迟,从而进一步体现了UFS使用DIMM接口NVM存储设备构建文件缓冲区的优势。

类似地,分别设置Sizep的值为3 700、4 100、4 500、4 700和4 900字节,测试缓冲区大小的变化对UFS读性能的影响。从图8可以看出,随着文件缓冲区的增加,UFS的读性能也越来越接近与ramfs,最小差距为22%,这表明通过设计的聚合式文件组织结构,在文件内缓冲文件数据,有效减少了访问PCIe接口NVM存储设备的次数,从而提高了文件系统的性能。同时,由于管理开销以及fuse额外的I/O访问路径,给UFS带来了额外读写开销,因此进一步发挥NVM系统的性能必须考虑软件和接口方面的优化。

6.3使用Fio的测试与分析

为进一步评估UFS的I/O性能,在Linux下使用fio工具,测试随机读写的性能。配置Sizep的值为4 100KB;然后设置fio为随机读写模式,包含1 000个目录和30 000个平均文件大小为6 000KB数据集,设置读写比为3:7,读写块大小为4 096KB,测试结果如图9所示。UFS在随机读和随机写方面的性能均低于ramfs。一方面是因为数据集中大部分文件大于Sizep,使得聚合式文件结构使用I/O性能较差的块区存储数据;另一方面,也表明通过fuse构建的用户态文件系统具有冗余的I/O访问路径,导致额外的内核切换开销,从而降低了文件系统性能。但相比Ext3,UFS在随机读写方面都表现出优势,有效管理了不同特性的两类NVM存储设备。图9使用fio测试随机读写性能

7结语

由于DIMM插槽数量和单个NVM集成度的限制,当前构建大容量SCM通常同时使用DIMM和PCIe接口的NVM存储设备。然而两类NVM存储设备在物理接口和访问性能上存在巨大差异,同时存储系统中文件数据之间以及文件与文件之间也存在不同的访问特性,使得当前针对单一设备设计的内外存管理算法均难以直接应用在面向NVM的混合存储系统中。本文针对两类NVM存储设备的特性,将存储空间划分为字节区和块区;设计了基于多级索引表的元数据和数据管理策略,提高元数据和数据的查找性能;设计了混合式文件数据管理策略,在两类NVM存储设备之间合理分布数据,提高数据的访问效率,解决单一NVM存储设备存储空间不足的问题;最后实现了混合粒度文件系统的原型,使用postmark和相关数据集进行了测试与分析,测试结果表明UFS的数据读写性能相比基于块的Ext3文件系统提高了28%-166%。

本文主要利用DIMM接口的NVM存储设备提高整个存储系统的IO性能,同时利用PCIe接口NVM存储设备提高存储系统容量,下一步将探索如何改变PCIe接口NVM存储设备的内部管理方式,进一步提高文件系统的性能。

参考文献参考文献:

Intel 64 software developers manual[Z].2013.

SWANSON S, CAULFIELD A M. Refactor, reduce, recycle: restructuring the I/O stack for the future of storage [J]. Computer, 2013 (8): 5259.

WU X, REDDY A L. SCMFS: a file system for storage class memory.Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis.ACM,2011.

J CONDIT,E B NIGHTINGALE, C FROST,et al.Better I/O through byte addressable,persistent memory[C].In Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles, SOSP 09,2009:133146.

DULLOOR S R, KUMAR S, KESHAVAMURTHY A,et al.System software for persistent memory.Proceedings of the Ninth European Conference on Computer Systems. ACM, 2014: 15.