ZoFS:用户态PM文件系统的性能提升和保护

ZoFS:Performance and Protection in the ZoFS User-spaceNVM File System

Introduction

NVM的低延迟、高容量、高吞吐量以及字节可访问的特性吸引了很多研究工作,包括数据结构、键值存储等。当然还有利用NVM的高性能设计的文件系统,如PMFS、Nova等。

字节可寻址可以让CPU通过load和store命令直接访问NVM,这给用户态的文件系统带来了可能,之前的研究中文件系统都不能控制用户态的数据和元数据。

challenge

让用户态的文件系统库完全控制数据和元数据也会带来一些挑战

  • 用户态文件系统库拥有所有文件的访问权限会带来安全问题,应用程序可以绕过权限检查攻击文件系统
  • 应用程序往往是有bug的,bug会损坏用户态的文件系统元数据

Design

coffer abstraction(如何组织数据)

对于权限管理问题,ZoFS将NVM页面分为不同的coffer,每个coffer中所有的NVM页面都是相同的权限。

image

上图介绍了coffer的详细组织结构,每个coffer都有一个root file,root file分为两种。如果root file是一个文件,那么这个coffer只存储这个root file。如果root file是一个目录项,那么它的子文件可以都被一个coffer存储。如果子文件在不同的coffer中,那么可以使用跨coffer的引用去寻找目标文件。

这样NVM就被划分为coffer粒度,只有当用户态文件系统初次访问coffer时,需要进行权限检查,然后coffer中所有的数据和元数据都可以被映射到进程的地址空间,进程的文件系统库就可以使用这些数据。

Treasury(文件系统设计)

image

如上图所示,Treasury分为两个部分,KernFS和FSlib。一方面,KernFS负责全局的地址空间管理,管理着path和coffer之间的映射关系和coffer有关的元数据。另一方面,FSlib就是文件系统库的集合,负责管理coffer内部的数据和元数据以及和操作系统的交互。

evaluation

image

与之前的PM文件系统相比,因为ZoFS降低了内核态的文件系统开销,所以在可扩展性上提高了很多。