3.1 故障容错

3.1.1 管理故障

我们定义管理故障为拜占庭故障,是由在管理协议中的参与者造成的故障。一个DSN体系依赖于它的基础管理协议的故障容错。违反故障容错的管理故障假设会影响系统的活力和安全。

例如,考虑一个DSN体系Π,其中管理协议要求使用拜占庭协议来审核存储提供者。在这样的协议中,网络收集到来自存储提供商的存储证明,并运行拜占庭协议对这些证明的有效性达成共识。如果在总共n个节点中,拜占庭协议最多容忍f个故障节点。那么我们的DSN可以容忍f< n/2 个故障节点。在违反了这些假设的情况下,审核将会出现问题。

3.1.2 存储故障

我们将存储故障定义为拜占庭故障,它会阻止客户检索数据。例如存储矿工丢失了他们的数据碎片,或者检索矿工停止了他们的服务。一个成功的Put操作是:在(f,m)容错情况下,m个独立的存储提供者已经成功的存储了输入的数据,并且能够容忍最多f个拜占庭存储提供者。参数f和m取决于协议的实现。协议设计者可以修改f和m的值,或者留给用户自己修改。将Put(data) 扩展为Put(data,f,m)。如果有小于f个故障存储提供者,则对存储数据的Get操作是成功的。

例如,考虑一个简单的方案。它的Put协议设计为每个存储提供者存储所有的数据。在这个方案里,m=n,并且f=m-1。但总是f=m-1吗,不一定的,有些方案可能采用可擦除式设计(erasure coding),其中每个存储提供者存储数据的特定部分,这样使得m个存储供应商中的x个需要检索数据,在这种场景下f=m-x。