DFS:A File System for Virtualized Flash Storage

1、现有背景下的问题

相比于磁盘,flash有更好的可靠性、I/O性能和低功耗。然而,传统的研究集中与建立固件和软件来支持传统的抽象层(为了向下兼容)。因磁盘与flash不同,故需设计新的、适合flash设备的抽象层。DFS利用虚拟化flash存储层。Page大小一般为512B到16KB。

Douglis[[i]]研究了不使用特殊软件栈的flash系统,表明flash可将读性能提升一个数量级,并将能耗降低90%,但写性能也降低了一个数量级;擦除块过大会导致写放大。Kawaguchi[[ii]]将flash视为磁盘,提供透明的设备驱动。高性能SSD设备的研究:Birrell[[iii]]通过在RAM中保存一个由逻辑快到物理地址的细粒度映射,来提升随机写性能。eNVy[[iv]]是早期为flash设计的文件系统。YAFFS, JFFS2, and LogFS [[v] [vi]]隐藏了大部分写延迟,且在文件系统中实现磨损均衡。

2、提出的解决方案

传统的文件系统非常复杂,主要因为三个因素:复杂的块分配策略、复杂的缓存设计、复杂的系统恢复方法。DFS简化了这几个方面。它直接使用虚拟的存储空间作为真的单级存储,在虚拟flash存储层提供虚拟到物理块的分配,避免显示的文件块的分配和回收。故DFS到flashmemory的数据路径很短,并且鼓励用户直接访问数据,而不使用复杂的、大的缓存。DFS使用虚拟flash存储的原子更新特点,完成系统恢复。

2.1 方案综述

设计分为三个主要部分:(1)flash存储系统的抽象层,简单且高效;(2)虚拟flash存储层,提供很大的地址空间并执行动态映射和磨损均衡;(3)DFS,充分利用虚拟flash存储层。 如上,传统的抽象层将flash当作磁盘使用,使用SATA或SCIS接口。SSD在控制器中实现FTL,实现动态地址映射和磨损均衡。使用这种方法,上层应用的接口和下层物理存储接口都不用改变。但是过多使用软件,不能充分利用flash的优势。
DFS结构中,在virtualizedflash storage layer上面,有一个大大简化的文件系统,控制器提供flash芯片到 虚拟flash存储层的 直接接口。虚拟flash存储层 在设备驱动级实现,维护一个很大的虚拟块地址空间,并将虚拟块地址映射到物理页。它可管理多个flash设备,使用日志结构分配策略来隐藏擦除延迟,执行磨损均衡和坏页恢复。Virtualizedflash storage layer向后兼容,可以使用现有的文件系统和数据库系统。相比于磁盘设备接口,flash设备可提供更丰富的接口。
DFS利用虚拟flash层 执行文件块的分配和回收,并利用原子页更新实现故障恢复。这种结构支持Virtualized flash storage layer提供对象接口。块分配造成的文件系统的分离问题,使得硬件和块管理算法在文件系统和用户级应用中进化。

2.2 虚拟flash存储层

虚拟flash存储层向上兼容,提供块存储接口。虚拟flash存储层的本质特征是:提供一个非常大的、虚拟的块地址空间。

虚拟flash存储层支持三种操作:read、write、trim(deallocate)。三种操作都是以块(512B为单位。写操作触发虚拟(块)到物理页的动态映射。Trim操作重分配一个虚拟地址范围,它回收一个地址范围内的所有物理页的映射,在此范围执行垃圾回收。

虚拟flash存储层的实施使用了linux驱动和FusionIO的ioDriver的专用硬件。ioDrive使用PCIE卡和160GB/320GB的SLC NAND flash。Virtualized flash storage layer的软件作为主机端的设备驱动,由ioDrive本身支持。

总体设计理念是:分割数据和控制通路,在设备驱动中实现控制通路,在硬件中实现数据通路。在ioDrive卡上的数据通路,包含大量并行的独特的flash memory packages,并通过PCIE与主机连接。I/O请求流的并行使得设备达到最高的吞吐量。

设备硬件可提供检验和的生成、检查,以便检查和纠正flash chip中的错误。元数据在设备中以物理地址的形式存储,而不是虚拟地址,故可简化硬件并以较低的经济成本获得较大的吞吐量。Individual flash pages相对较小,而擦除的块有几兆字节。

设备驱动核维护虚拟地址到物理地址的映射,64 bit的虚拟地址到物理地址的映射在内存中由B树管理,每个地址指针指向512 B的flash page,且虚拟地址空间为273 B。设备驱动也执行垃圾回收,Bulk erasure策略和磨损均衡集成在设备驱动的垃圾回收组件中。

之所以在设备驱动中执行地址映射和垃圾回收,而不再ioDrive本身的嵌入式处理器中,是因为设备驱动可以充分利用处理器和内存硬件,不需要设计专用的嵌入式平台。这种方法也有缺点:需要处理器性能较高,并消耗主机内存资源。


2.3 DFS

DFS是一个Unix文件系统的全面实现,它的设计是为了充分利用Virtualized flash storage layer的几个特性,包括大的虚拟地址空间、直接的flash访问、故障恢复。

运行环境:Linux 2.6内核。DFS内核模块:Unix文件系统API,Linux VFS层。支持的操作:open、close、read、write、pread、write、lseek、mmap。

两种方案:

第一种:虚拟flash存储层使用对象接口。优点:提供文件系统所需的信息(高度匹配);缺点:基于对象的接口提供向上兼容的块接口很复杂。

第二种:virtualized storage layer提供大的、稀疏的逻辑地址空间。故每个文件系统对象都可以分配到一个连续的逻辑地址空间。优点:简洁且可提供向上的块接口。缺点:潜在的虚拟地址空间的浪费。DFS使用这种方案。

在ioDrive中提供稀疏的64 bit的逻辑块地址空间,每个块为512 B,故逻辑地址空间为273 B。

DFS分配连续的虚拟地址空间(chunk),这些空间大小可配置,默认为232块或者2TB。用户文件或目录分为两类:大文件、小文件。小文件变为大文件后,重新分配连续的地址空间(chunk),当前只能通过复制文件内容来实现重分配,但预计以后的virtualized storage layer可完成虚拟地址到物理地址的转换,而不进行数据复制。当前不支持大文件重映射为小文件。

2.3.1 Leveraging VirtualizedFlash Storage

文件系统被初始化时,有两个参数:(1)小文件的最大大小;(2)大文件的最大大小。不同环境中,文件大小定义不同,如在Tannenbaum et al. [[i]],Docuer and Bolosky [[ii]]

当前的DFS用一个32 bit的I-node判断单个文件或目录,并使用一个32 bit的块偏移。故DFS可支持232-1个文件和目录,第一个I-node预留给系统;支持最大的文件大小为2TB(512 B个块,每个块偏移32 bit)。2TB = 241 B = 512 B*232 = 29*232B。I-node记录虚拟地址的基址。下图显示了文件描述符和偏移到逻辑块地址的转换。文件描述符fd(file descriptor)。

一个single logical extent可代表一个文件,故DFS可讲小的I/O请求与相邻的请求合并为一个较大的I/O请求。
DFS支持三种操作:从一逻辑块读取数据、向一逻辑块写数据、消除一个逻辑块(discard a logical block range:即垃圾回收,全零)。

2.3.2 DFS Layout and Objects

如下图:DFS中有三种文件。

第一种:系统文件,包含bootblock、superblock、所有的I-nodes。这个文件很大,占据裸设备的最低的地址块。




[[i]] TANENBAUM, A. S., H ERDER, J. N., AND BOS, H. File sizedistribution in UNIX systems: Then and now. ACMSIGOPS Operating Systems Review 40,1 (January 2006), 100–104.

[[ii]] DOUCEUR, J. R., AND BOLOSKY, W. J. A large scale study of file-system contents.In Proceedings of the 1999 ACM SIGMETRICS International Conference onMeasurement and Modeling of Computer Systems (1999).






[[i]] DOUGLIS, F., CACERES, R., KAASHOEK, M.F., LI , K., MARSH, B., AND TAUBER, J. A. Storage alternatives for mobilecomputers. In Operating Systems Design and Implementation (1994), pp. 25–37.

[[ii]] KAWAGUCHI, A., N ISHIOKA , S., AND MOTODA, H. A flash-memory based file system.In In Proceedings of the Winter 1995 USENIX Technical Conference (1995).

[[iii]] BIRRELL , A., I SARD, M., T HACKER, C., AND WOBBER, T. A design forhigh-performance flash disks. ACM Operating Systems Review 41, 2 (April 2007).

[[iv]] W U,M., AND ZWAENEPOEL, W. eNVy: A non-volatile, main memory storage system. In Proceedingsof the 6th International Conference on Architectural Support for ProgrammingLanguages and Operating Systems (1994).

[[v]] MANNING, C. YAFFS: The NAND-specific flash file system. LinuxDevices.Org(September 2002).

[[vi]]WOODHOUSE, D. JFFS: The journalling flash file system. In Ottowa LinuxSymposium (2001).

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值