TOS 2022 Paper 分布式元数据论文阅读笔记整理

问题

大规模并行文件系统在高性能计算中发挥着重要作用,但对它们的可靠性的研究或理解较少。最近在实际HPC中心发生的故障事件暴露了PFS集群中的潜在缺陷,也迫切需要进行系统分析。

挑战

  • 如何以系统的方式触发PFS的故障恢复和日志记录操作。由于PFS的独特架构和复杂性,现有方法无法直接适用于PFS。主要的PFS被设计为符合POSIX,以透明、高性能地支持丰富的HPC工作负载和中间件(例如,MPI-IO[24])。为此,通常包括操作系统(OS)内核模块,并与操作系统的虚拟文件系统(VFS)层挂钩。这种紧密的交织和对操作系统内核的强烈依赖使得为用户级分布式系统(例如HDFS)设计的现有方法难以在实践中用于研究PFS。例如,CORDS[21]通过定制的FUSE文件系统向云系统注入故障,该文件系统与主要的PFS不兼容

  • PFS不在PFS级别维护数据的冗余副本,也不使用常用的基于共识的协议[23]进行恢复。因此,依赖于常用容错协议(例如,gssip协议[14])规范的现有方法不适用于PFS。

本文工作

本文对PFS的故障恢复和日志记录机制进行了研究。

  • 为了触发目标PFS的故障恢复和日志记录操作,引入了名为PFault的故障注入工具,该工具对PFS透明,易于部署。

    • PFault的设计基于两个观察:(1)外部故障事件可能不同,但只有驱动器上的持续状态会影响重新启动后的PFS恢复。因此,可以将各种外部故障事件的生成归结为每个存储节点上设备状态的仿真。(2) 尽管PFS很复杂,但可以将整个系统划分为跨多个节点的全局层和每个单独节点的局部系统层。此外,目标PFS可以通过远程存储协议(例如,iSCSI[29]、NVMe/Fabric[30])与底层硬件解耦。

    • 基于上述思想,构建了基于iSCSI的PFault原型,涵盖了三个具有代表性的故障模型(即整个设备故障、全局不一致性和网络分区),以支持系统地研究PFS的故障恢复和日志记录。为了解决将iSCSI添加到PFS软件堆栈中的潜在问题,开发了PFault的非iSCSI版本,可用于验证iSCSI对所研究的目标PFS行为的潜在影响。

    • 开源代码:GitHub - data-storage-lab/pfault: Analyzing the fault tolerance of high-performance parallel file systems [TOS'22, HotStorage'21, PDSW'20, ICS'18, PDSW'16]

  • 将PFault应用于Lustre和BeeGFS,将三个故障模型应用于PFS集群中不同类型和子集的节点,以创建不同的故障场景,并检查目标PFS的恢复和日志记录操作。

    • Lustre包括名为LFSCK的恢复组件,用于检测和修复PFS级别的不一致,但LFSCK本身在扫描损坏的Lustre时可能会挂起或触发内核恐慌。在LFSCK恢复之后,应用于Lustre的后续工作负载仍可能表现异常(例如,挂起或I/O错误)。在BeeGFS及其回收组件BeeGFS-FSCK中也观察到了类似的问题。

  • 在日志记录方面,Lustre和BeeGFS都可能在故障处理过程中生成大量日志,但PFS的日志记录方法和模式多样且不规则。Lustre在集群中不同类型的存储节点上报告七种类型的标准Linux错误消息(例如,EIO、EBUSY、EROFS),而BeeGFS在相同故障下只能在有限的节点上记录两种标准消息。BeeGFS可能会生成更多自定义的错误消息,其中一些消息相当于标准的Linux错误。通过根据日志来源、内容、故障类型和位置详细描述PFS日志,发现了多个日志消息不准确或具有误导性的情况,这为日志增强和基于日志的分析提供了新的机会。

  • 深入分析了异常症状的根本原因,提出一个新的补丁集并合并到Lustre中。此外,详细描述了实验中生成的大量日志,并确定了PFS在故障日志方面的独特模式和局限性。

总结

针对并行文件系统的可靠性的研究,主要针对故障恢复和日志记录机制。(1)本文提出PFault,故障注入工具,对PFS透明,易于部署。构建了基于iSCSI的PFault原型,涵盖了三个具有代表性的故障模型(即整个设备故障、全局不一致性和网络分区)。为了解决将iSCSI添加到PFS软件堆栈中的潜在问题,开发了非iSCSI版本,用于验证iSCSI对所研究的目标PFS行为的潜在影响。(2)将PFault用于Lustre和BeeGFS,发现Lustre的恢复组件LFSCK在扫描损坏的Lustre时可能会挂起或触发内核恐慌。在LFSCK恢复之后,应用于Lustre的后续工作负载仍可能挂起或I/O错误。在BeeGFS的回收组件BeeGFS-FSCK中也有类似的问题。(3)日志记录方面,Lustre在集群中不同类型的存储节点上报告七种类型的标准Linux错误消息,而BeeGFS只能在有限的节点上记录两种标准消息,BeeGFS会生成自定义的错误消息,其中一些相当于标准的Linux错误。根据日志来源、内容、故障类型和位置分析PFS日志,发现了多个日志消息不准确或具有误导性的情况。(4)根据以上研究提出了Lustre补丁,修复LFSCK的问题。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐