Chipmunk: Investigating Crash-Consistency in Persistent-Memory File Systems——论文泛读

EuroSys 2023 Paper 分布式元数据论文汇总

问题

检测PM文件系统关于崩溃一致性的潜在bug。

现有方法局限性

PM文件系统产生了一组具有新的崩溃一致性规范和架构的不同系统,包括内核[17,18,20,31]、内核旁路[21-23]和混合系统[19]。这些系统的一个关键定义特征是,对持久数据的大多数更新都绕过页面缓存,直接写入底层存储介质。与基于磁盘的Linux文件系统不同,这些文件系统使用通用的内核块层来进行写入,PM文件系统直接使用内存加载和存储来访问PM。大多数PM文件系统利用介质的低延迟来保证原子同步操作,而不需要fsync。修改后的存储堆栈和增强的崩溃一致性保证使现有的文件系统测试工具与PM文件系统不兼容,现有工具多数依赖于包含fsync或相关调用来建立崩溃一致性保证。

本文方法

提出了Chipmunk,用于测试实现POSIX接口的持久内存(PM)文件系统是否存在崩溃一致性错误的新框架。Chipmunk在工作负载中模拟在某些应该被持久的数据上发生崩溃。然后,它在得到的崩溃状态上挂载文件系统并检查其是否正确恢复。通过将各种PM文件系统提供的崩溃一致性保证编码到Chipmunk的一致性检查器中,使其能够检测到影响崩溃一致性的低级PM编程错误和高级逻辑错误。

我们在五个PM文件系统中发现了23个新的错误。所发现的错误有严重的后果,包括使文件系统无法挂载或破坏重命名的原子性。通过Chipmunk对找到的错误进行了详细的研究,并讨论了设计和测试PM文件系统时的重要经验教训。

  • 大多数错误(19/23)是由逻辑错误引起的,例如事务中遗漏了元数据项。

  • PM文件系统通过在易失性DRAM中维护一些数据结构并在重新装载文件系统时重建它们来提高性能[17,19,20],在这样的代码中发现了七个错误。

  • 六个错误源于开发人员试图通过更新元数据来提高性能。

  • 原地更新优化是崩溃一致性错误的常见来源。

  • 在崩溃恢复期间重建易失性状态很容易出错。

  • 从介质故障中恢复的弹性机制可能会引入新的崩溃一致性错误。

  • 许多观察到的错误需要在系统调用期间模拟崩溃。

  • 短的工作负载足以暴露许多崩溃一致性错误。

  • 大多数观察到的bug崩溃状态都很少涉及对PM的写入。

开源代码:GitHub - utsaslab/chipmunk: Tool for checking crash-consistency for persistent-memory file systems

总结

本文针对PM文件系统的崩溃一致性进行检测。提出了Chipmunk,用于测试实现POSIX接口的PM文件系统是否存在崩溃一致性错误的新框架。Chipmunk在工作负载中模拟在某些应该被持久的数据上发生崩溃。然后,它在得到的崩溃状态上挂载文件系统并检查其是否正确恢复。通过将各种PM文件系统提供的崩溃一致性保证编码到Chipmunk的一致性检查器中,使其能够检测到影响崩溃一致性的低级PM编程错误和高级逻辑错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

妙BOOK言

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

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

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

打赏作者

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

抵扣说明:

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

余额充值