Enabling High-Performance and Secure Userspace NVM File Systems with the Trio Architecture——论文泛读

SOSP 2023 Paper 分布式元数据论文阅读笔记整理

问题

新兴的非易失性存储器(NVM)技术允许使用无特权的load/store指令进行直接访问。此外,硬件存储器管理单元(MMU)强制执行对不同NVM区域的访问权限,从而不需要特权实体来协调每次NVM访问。因此用户空间NVM文件系统将大部分文件系统功能从内核转移到应用程序链接库文件系统(LibFS)[20,23,32,35,38,46],带来了两个关键的性能优势。

  • 应用程序可以通过LibFS直接访问NVM以执行文件系统操作,从而最大限度地减少存储堆栈中的软件开销。

  • 应用程序可以定制其LibFS,以弥合语义差距并进一步提高其性能[46]。此外,为一种工作负载进行定制往往会对另一种工作负担产生负面影响。用户空间NVM文件系统可以通过为每个应用程序分配私有LibFS来有效地避免这个问题。

但这些好处对确保元数据完整性构成了重大挑战。例如,通过直接访问,恶意应用程序可以绕过强制执行,并通过破坏文件系统元数据。解决此问题需要一个受信任的实体来验证元数据的完整性,但由于定制,每个LibFS的数据结构可能不同,受信任的实体无法理解,从而阻止了验证。

现有方法局限性

现有的工作要么没有充分利用NVM的性能,要么放弃了关键的文件系统安全保证。

  • 传统设计[20,32,35,46,48]采用可信实体来调解和执行元数据更新(图1a),会验证每个操作的元数据完整性。因此为元数据更新带来昂贵的开销(如[23]所述,高达68%),且将文件系统设计加入受信任的实体中需要特殊的定制权限,大大损害了上述性能优势。

  • ZoFS[23]支持直接元数据更新,但放弃了元数据完整性,通过将元数据损坏限制在一组NVM页面内来提供保护(图1b)。但由于应用程序共享NVM页面,恶意应用程序仍然可以通过破坏NVM页面内的元数据来执行攻击。

本文方法

本文提出了Trio,一种用户空间NVM文件系统架构,将文件系统设计、访问控制和元数据完整性之间的解耦。同时支持三个关键属性来提供性能和安全性:(1)直接访问:LibFS可以直接访问NVM,对常规文件和目录进行数据和元数据操作。(2) 无特权私人定制:应用程序可以灵活地定制其LibFS,而无需特权(无特权)或影响他人(私人)。(3) 元数据完整性:使恶意应用程序不能通过破坏元数据状态来攻击其他应用程序。

关键思路是,文件系统状态可以分为核心状态和辅助状态。核心状态是文件系统用作基础的基本状态(例如,索引节点、数据页),辅助状态由核心状态决定,并可以从核心状态重建(例如,内存缓存、块位图)。

  • 定义了单个核心状态的布局和数据结构,状态在组件之间共享,而每个组件都保持其私有辅助状态。包括两种类型组件:内核内访问控制器、每个应用程序的LibFS。内核内控制器决定LibFS可以访问哪些共享文件系统资源(即NVM页面和索引节点)。每个LibFS实现了完整的文件系统设计,直接访问文件的核心状态进行数据和元数据操作,并使用其私有辅助状态执行无特权的私有定制。

  • 为了安全共享,设计了受信任的用户空间完整性验证器,防止LibFS同时更新文件。在LibFS访问由另一个LibFS修改的文件之前,完整性验证器会检查文件的核心状态是否有效。完整性验证器只检查单个文件的核心状态,使其开销可接受(中型文件的开销范围从几微秒到几百微秒)。然后,LibFS从有效的核心状态重建文件的辅助状态,并可以安全地访问该文件。

  • 设计了通用的类POSIX文件系统ArckFS来展示Trio的优势。为了充分利用直接访问的优势,精心设计了高效数据结构、可扩展NVM数据访问引擎、细粒度并行性,为数据和元数据操作实现了低延迟、高带宽和出色的可扩展性。并基于ArckFS的核心状态进一步设计了两个定制的文件系统:KVFS[46],它针对小文件访问进行了优化,FPFS[45,53],它针对深度目录访问进行了最优化。

开源代码:GitHub - vmexit/trio-sosp23-ae

评估表明,ArckFS在LevelDB上的性能比其他文件系统高出3.1倍至17倍,并且在可扩展性微基准测试方面有两个数量级的改进。KVFS和FPFS的表现进一步超过ArckFS 1.3倍。

总结

针对NVM上文件系统无法同时实现利用字节寻址和安全保证。本文提出Trio,一种用户空间NVM文件系统架构,同时实现:直接访问,无特权私人定制,元数据完整性。核心思想是,文件系统可以分为核心状态(索引节点、数据页)和辅助状态(索引节点、数据页),辅助状态由核心状态决定,并可以重建,因此将文件系统状态分离为共享核心状态和私有辅助状态。包括3个组件:(1)每个应用程序可以定制化设计应用程序链接库文件系统(LibFS),直接访问NVM,并使用其私有辅助状态执行无特权的私有定制。(2)内核内控制器,决定LibFS可以访问哪些共享文件系统资源(即NVM页面和索引节点)。(3)受信任的用户空间完整性验证器,检查文件核心状态,从而在多个LibFS间共享文件同时实现安全保证。

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙BOOK言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值