根据定义,稳定存储中的信息永远不会丢失。即使磁盘和CPU出现一些错误,它也永远不会丢失任何数据。
稳定的存储实现:
为了实现这种存储,我们需要在具有独立故障模式的多个存储设备上复制所需的信息。更新的编写应协调一致,这样它就不会删除状态的所有副本,并且当我们从故障中恢复时,即使所有其他副本都可以强制所有副本为一致且正确的值,恢复期间发生故障。在本文中,我们讨论了如何满足这些需求。
磁盘写操作导致以下结果之一:
- 成功完成–
数据将正确写入磁盘。 - 部分失败–
在这种情况下,在数据传输的中间会发生故障,因此只有部分扇区被写入了新数据,并且在故障期间写入的扇区可能已损坏。 - 完全失败–
该故障发生在开始写入磁盘之前,因此磁盘上的先前数据值保持不变。
在以某种方式写入块的过程中,如果发生故障,系统的第一项工作是检测故障,然后调用恢复过程以恢复一致状态。为此,系统必须为每个逻辑块包含两个物理块。
输出操作如下执行:
- 将信息写入第一个物理块。
- 当第一次写入成功完成时,将相同的操作写入第二个物理块。
- 当两个操作都成功声明时,将操作声明为完成。
在从故障中恢复期间,将检查每个物理块。如果两者相同并且不存在可检测的错误,则无需采取进一步的措施。如果一个块包含可检测的错误,那么我们将其内容替换为另一块的值。如果两个块均未包含可检测到的错误,但该块的内容不同,则我们将第二个块的内容替换为第一个块的内容。此恢复过程得出的结论是,写入稳定内容成功或成功它不会导致任何变化。
如果我们想要稳定存储的每个块的任意数量的副本,则将扩展此过程。随着大量副本的使用,失败的机会减少了。通常,通常只模拟两个副本的稳定存储是合理的。除非故障破坏了所有副本,否则稳定存储器中存在的数据是安全的。除非故障破坏了所有副本,否则保证稳定存储中存在的数据是安全的。
由于等待磁盘写入完成非常耗时,因此许多存储阵列将NVRAM添加为缓存。由于内存是非易失性的,因此可以信任地将数据存储到磁盘上。这样,它被视为稳定存储的一部分。写入稳定存储的速度比写入磁盘快得多,因此性能得到了极大的提高。