摘要

分布式系统的可靠性和可用性至关重要.然而,不正确的失效恢复机制及其实现会引发失效恢复缺陷,威胁分布式系统的可靠性和可用性.只有发生在特定时机的节点失效才会触发失效恢复缺陷,因此,检测分布式系统中的失效恢复缺陷具有挑战性.提出了一种新方法 Deminer来自动检测分布式系统中的失效恢复缺陷.在大规模分布式系统中观察到,同一份数据(即共用数据)可能被一组I/O写操作存储到不同位置(如不同的存储路径或节点).而打断这样一组共用数据写操作执行的节点失效更容易触发失效恢复缺陷.因此, Deminer以共用数据的使用为指导,通过自动识别和注入这类容易引发故障的节点失效来检测失效恢复缺陷.首先, Deminer追踪目标系统的一次正确执行中关键数据的使用.然后, Deminer基于执行轨迹识别使用共用数据的I/O写操作对,并预测容易引发错误的节点失效注入点.最后, Deminer通过测试预测的节点失效注入点以及检查故障征兆来暴露和确认失效恢复缺陷.实现了Deminer原型工具,并在4个流行的开源分布式系统ZooKeeper、HBase、YARN和HDFS的最新版本上进行了验证.实验结果表明Deminer方法能够有效检测分布式系统中的失效恢复缺陷. Deminer已经检测到6个失效恢复缺陷.

全文