acm-header
登录

ACM通信

实践

实现数字永久


石头上的技术图像,插图

图片来源:Andrij Borys Associates / Shutterstock

回到顶部

数字永久性已经成为社会上一个普遍的问题。本文主要关注它背后的力量,以及实现“所读即所写”的理想状态的一些技术。虽然可以作为基础数据存储(例如区块链)之上的层的技术是实现系统信息保证的有效方法,但本文将不讨论它们。

首先,让我们来定义数字永久和更基本的概念数据的完整性。

数据完整性是对存储信息的准确性和一致性的维护。精度表示将数据存储为预期的值集。一致性意味着这些存储的值随着时间的推移保持不变,它们不会随着时间的推移而无意地动摇或变化。

数字持久性指的是用来预测并满足存储在数字媒体中的数据的预期生命周期的技术。数字永久性不仅考虑数据完整性,而且还以保证相关性和可访问性为目标:召回存储数据的能力,并以预测的延迟和需要该信息的应用程序可接受的速率召回数据。

为了说明相关性和可访问性,考虑两个反例:如果将媒体读入当前计算系统所需的硬件不可用,那么安全冗余存储在Zip驱动器或穿孔卡上的日志也可能不存在。把收据和账簿存储在磁带介质上,当你需要在周四进行审计时,需要八天时间才能读取这些信息,这也不是很有用。

回到顶部

数字永恒的多重层面

人类的记忆是最主观的记录。常见的格言和clichés,如“他说,她说”,“IIRC(如果我没记错),”和“你可能记得”承认记忆的真相,它们只是基于对任何客观状态的一次性主观感知的碎片。此外,研究表明,人们的记忆会随着时间的推移而改变。多年来,由于需要为基于过去交易的行动提供一个共同基础,因此也需要对独立的“真实”过去的事实进行客观记录。这些记录必须在合理的程度上是不可变的,并且是持久的。诸如泥板、羊皮纸、摄影版画和缩微胶片等媒介之所以流行,是因为它们满足了社会记录保管人“写一次,读多次”的要求。

数字时代的信息存储已经发展到适应访问的规模(频繁)和容量(高),转移到以几乎无形的状态记录和传递信息的存储媒体。这种介质有明显的优点:电脉冲和磁化铁化合物的极性可以以很高的速度和密度移动。不幸的是,这些媒体在另一项指标上得分也更高:脆弱性。纸张和粘土可以经受住大量的忽视和惩罚,但偶然的电磁放电或微观破裂会使数字图书馆无法访问或无法识别。

按理来说,将永久记录存储在某种不可改变和不可破坏的介质中是理想的,一旦被修改为编码信息,就再也无法通过覆盖或销毁的方式被更改。经验表明,这样的理想很少能实现;只要有足够的力量和意志,最坚硬的石头也能被打碎,最持久的印记也能被破坏。

在考虑和确保数字的持久性时,您需要防止两种不同的失败:存储介质的破坏,以及记录完整性或“真实性”的丧失。

一旦你接受了不存在理想介质的事实,你就可以通过冗余来防止这两种失败。您可以制作许多副本,并将它们隔离在不同的故障域中,以便可以指望其中一些副本在任何可预见的灾难中存活下来。通过频繁的审计和比较来观察足够的副本,您可以依靠这些副本的法定数量来检测和保护记录不受意外或故意更改的影响。

为这些目的而制作的副本有不同的激励因素,可分为两类:

  • 备份:保护操作免受由于自然行为或疏忽造成的失败的副本。
  • 档案:复制是为了保护记录不受变化的影响,无论是有意的还是偶然的。

回到顶部

数字时代的信息持久性

在20世纪70年代之前,除了八卦和吟游诗人的传说外,没有实体的信息存在。几千年来,知识都是通过改变实物文物来保存的:从公元前3000年美索不达米亚啤酒的口粮到1952年罗德岛州的税卷,赋予事实永久的生命意味着在泥板、羊皮纸卷轴或纸质穿孔卡片上做标记。抛开真实性的问题不谈,记录的事实就存在于显而易见的地方,用刻痕或不溶于水的墨水永久性地记录下来,直到文物的生命结束。虽然火灾、洪水或褪色染料可能会挑战记录的持久性,除非遭到破坏或盗窃,但有理由认为记录的文物将保持一致。登记在官方记录上的出生日期或纳税日期在下一个十年的人口普查或审计中被召回时将是相同的。

在后文艺复兴和后工业革命时代,随着人类在数十年或数年的时间跨度内进行越来越多的努力,对社会至关重要的信息数量激增。排版和印刷过程经过优化和自动化,以满足对记录信息日益增加的需要。虽然抄本和缩微胶片比泥板或卷轴更有效地利用空间,但社会无法腾出无限的空间来存储出生记录和公司章程的副本。

然后是信息时代。

突然之间,似乎没有什么东西可以被允许消失:街道地图、银行账户记录、个人时间线、生日派对视频——所有这些都被记录和存储。虽然它们可能会被闲置几十年或几百年,但我们完全希望这些数据可以供以后的研究或阅读。随着历史记录的数量激增,专门储存文物的经典模式——石头、纸或塑料——无法跟上,这完美地体现了那句格言:“它无法缩放。”纸太笨重,写和读都要花太长时间。可以肯定地说,用有形有形的形式记录世界历史不再可行。

巧合的是,制造信息过多问题的技术进步也带来了可用的解决方案。我们现在有能力以“更纯粹的”电子形式存储信息,广义上通常被称为数字媒体。与旧的物理或“模拟”记录技术相比,完成信息的电子数字表示所需要的能量和空间要小得多。用一个非常粗略的标准来做比较:一本书可能重12盎司,包含8万字,而同样数量的信息可以存储为320万比特,这相当于一张普通的micro SD(安全数字)卡的万分之一,而micro SD卡的重量为0.016盎司。与纸质小说相比,SD卡每盎司至少包含750万倍的信息(这忽略了各种提高数字存储空间效率的技术的应用,如压缩和去欺骗)。


数字永久性不仅考虑数据的完整性,还以保证相关性和可访问性为目标。


随着信息密度的增加,记录和阅读率也必然增加了类似的数量级。如果你记录10万倍以上的信息,但以同样的转录速度,你将积累相当多的事实、数据和新闻文章作为永久记录。幸运的是,翻转亚微观比特的状态所花费的精力和时间远远少于在石头上刻痕或在纸上拖笔沉积墨水。

毫不奇怪,虽然这些更快、更流畅的存储媒体在一方面是好事,但在另一方面却是坏事。很容易设置的状态也很容易取消设置,无论是无意的还是恶意的。RAM、闪存和磁盘可能通过偶然的交互而损坏,这些交互比可以清除旧的物理介质的操作要轻得多。要摧毁记录大厅地下室里装满结婚证书的文件柜,可能需要一场猛烈而持久的火灾,但一些零散的电磁发射就能摧毁存储在几个ssd(固态硬盘)上的相同信息。更糟糕的是,很明显您的地下室着火了,但您可能直到几个月或几十年后需要访问它们曾经包含的数据时才知道ssd的内容已经损坏。

对记录信息持久性的担忧在过去很容易解决,比如石头、档案质量的纸张和墨水,防火库提供了易于理解和易于实施的保证,保证记录可以在可预测的时间内保存。编码技术的寿命很少是一个问题,除非你遇到用过时的语言制作的记录(例如埃及象形文字,直到发现罗塞塔石碑的圣谕,现代人才能够破译)。

随着存储技术和介质的快速变化,持久性已经成为一个非常现实的问题。虽然你可以依靠石头或羊皮纸等媒介来证明历史证明的持久性价值,但现代媒介如磁带、cd - rom和闪存的非持久性却令人惊讶。19世纪中期造纸的发展th世纪也许预示了这一趋势。随着对大量印刷材料需求的增加,打印机从以破布为基础的纸转向生产速度更快、成本更低的富含木质素的木浆纸。结果,档案保管员和漫画收藏家对这种廉价媒介的脆弱感到惊讶和失望。

如果说纸令人失望,至少它的持久性除了媒介本身的持久性外没有面临任何挑战:阅读一页纸只需要视觉,自从最早的文字记录出现以来,视觉并没有发生太大的变化。数字媒体带来了新的担忧:例如,你不能直接感知闪存模块上的信息;您需要专门的设备来解释数字存储媒体上留下的印象,这种设备必须可用,并且能够提供与当前信息处理系统相关的接口。简而言之,只有保存完好的磁带是不够的:您还需要一个功能正常的磁带机,并且必须能够将磁带机与计算系统连接起来。

除了比旧的,非电子的(以下,模拟)的存储介质,数字存储的数据受到另一种压力:在这个数据驱动的世界中,对精度的要求越来越高,要求可靠无误。在过去,人们会接受10英亩或3磅的重量,并在一定程度上理解甚至预期到它的误差范围,而今天的期望值越来越精确:13盎司或310欧元肯定就是这个意思。世界既需要越来越多的相关和必要数据,也需要这些数据的“质量”或精度更高。

并非巧合的是,这些需求与从模拟值和媒体到数字对应物的转变一致:一条画出来的线可能被认为跨越了Y轴在10左右,但记录的数字度量要么是10,要么不是。当使用计算尺时,精确度与操作人员的感知和视觉敏锐度有关,而电子计算器显示的是精确的、与观看者无关的数值,精确到数位数。现代社会也期望立即得到结果:查询应该实时回答,事务应该几乎立即完成,这样相关的操作就可以进行。

这一系列力量的总体影响可以简单地总结:我们需要存储更多的信息(更大的广度)、更高的精度或分辨率(更大的深度),同时保持或减少访问延迟(更大的吞吐量)。信息对生活的相关性(更大的影响)的增加要求存储技术提供更高的保真度(更高的可靠性)。我们需要数字永恒。

回到顶部

故障模式分类

任何数量的触发器都可以引入存储技术和媒体的故障模式,但有一些广泛的故障类别可以帮助确定最可能的漏洞和有效的缓解方法:

  • 由于时间的推移而引起的潜在失效。
  • 引入的故障不可抗力典型的现场灾难,如地震,火灾,洪水,电磁脉冲,或小行星撞击。
  • 由恶意或无知引起的失败最常见的是对过程缺陷的利用。
  • 在未预料到的操作顺序或容量中使用所引起的故障通常是计划上的缺陷。
  • 由系统或其组件的缺陷和缺乏隔离或控制其影响的方法而引起的故障。

失败也有明显的时间线或生命周期:

  • 大量数据同时受到影响。一个事件或原子操作会造成系统性伤害。
  • 缓慢而稳定损坏或丢失以可能与正常访问相同的数量级流入数据存储,这可能是正常操作的副作用。

故障的范围也可分为:

  • 广泛的大范围数据受到影响,似乎不考虑数据中的鉴别器。
  • 被存储数据存储的狭窄和定向的特定子集受到影响,可能会有一些领域专家可以识别的可识别模式。

对于这三个方面(类别、时间轴和范围),给定的失败将至少有一个值,因此,潜在的失败可以可视化为一个矩阵,如表1

t1.jpg
表1。故障分类矩阵。

根据这个矩阵,一个全面的风险观点应该花费20 (5)22)考虑不同的失效模式。要想在这个系统中衡量和确保数字持久性,一个有效的计划必须包括一种减轻每种可能故障模式的方法,或者承认未解决的风险。每次失败的可能性和影响也必须以某种方式量化。无论您计划如何全面(或表面)地处理给定的故障,您都应该认识到它是什么以及它可能会给您带来多少损失。此分析将帮助您确定预算的优先级,以确保数字持久性和灾难恢复计划。

回到顶部

降低数字永久化的风险

这些失败模式就像巧克力和混凝土(实际上是苹果和橘子)一样相似有很多共同点)。由此可见,适当的缓解措施也是广泛的。虽然保留一个完整的离线数据存储副本对于大爆炸(例如,小行星撞击数据中心造成的广泛损失)是一种合理的故障保护措施,但这种策略对于防止删除一个帐户过去一个工作日的交易的用户错误并不理想。您对这种多样性风险的响应可能是使您的平台多样化,避免由特定于一个平台的漏洞引起的失败。通过平台多样性进行防御有它的吸引力,但也有它的缺点——将无数不同的媒体、传输速率和供应商支持水平整合在一起本身就会成为一项压倒性的任务,留给你的日常工作时间很少。

这个问题空间的复杂性需要一个合理的策略来实现给定系统中的数字持久性。本节研究了对系统中数字永久性的两个不同方面的覆盖率进行编纂的方法,大致分为数据完整性而且可访问性。

保持数据完整性。数据完整性的目标很容易表述:如果您存储一些值V在系统中,索引或识别为K,你希望能够打电话K在以后的某个时间,并确定所检索的值实际上是,V.这里的固有问题是诚信:应该依靠这个系统来完成它的工作。如果检索值实际上是V2 V,你怎么知道?如果您的应用程序需要不断地进行校验和并验证存储层的操作,那么您正在经历一个重大的抽象泄漏,并且几乎肯定正在编写一个壮观的程序上帝类。

更好的策略是在任何客户端应用程序操作之外实现一组保证和检查,这些操作在概念上是存储系统的一部分。这些操作的目的是检测和恢复存储系统可能出现的故障,独立于当前或未来的任何客户端系统。表1讨论故障模式和一般的解决方法;具体的实现将由被审查的系统定义。

的例子表2并不意味着是详尽无遗的;相反,它们提供了一个足够大的示例来说明推荐的方法。第1列标识一组故障模式,第2列提供每种故障模式的缓解措施。第2列中的数字确定了过程和机制池中的重叠,以便您可以优化所使用的每种技术的ROI。我们的目标是用最少的投资获得最多的覆盖率。

t2.jpg
表2。故障及其缓解方法的示例集。

要充分利用这个表,您需要能够权衡不同的失败和缓解措施,以便确定解决方案的优先级。表3对每种故障模式的影响进行评估。

t3.jpg
表 3.每种失效模式的影响。

表4显示充分实施每种拟议的缓解技术的相对成本。

t4.jpg
表4。每次缓解的成本。

既然您已经了解了选项、它们的相对成本以及它们的相对价值,那么您就可以进行优化,以找到每成本的最佳覆盖率。最后一套缓解技术是根据下列参数进行优化的:

  • 必须处理影响不是很低的所有故障模式,但是如果没有额外的成本,则应该为所有故障模式提供缓解技术。
  • 首选降低给定故障模式的最低成本选项。
  • 一种缓解技术一旦实施,就适用于它有效的所有失效模式。
  • 采用尽可能少的缓解技术,以尽量减少系统的操作复杂性。

表5结合来自表23.,4.的数据表5可以切片显示为每个故障提供最广泛覆盖和最低成本的缓解措施。注意,列[e]被认为是可选的,因为这一类的故障模式通常影响相对较低。如果您可以通过针对其他故障模式已经实现的缓解措施来覆盖列[e],那么这将是一个受欢迎的额外奖励。

t5.jpg
表5所示。缓解技术的成本与覆盖范围。

广泛的报道。考虑一个完整的数据完整性计划,其中包括来自的任何行集(缓解)表5它们一起在每一列中提供一个值(故障模式)。例如,通过在行[2]、[3]和[4]中实现缓解,您可以实现完全覆盖,因为每个故障模式(列)都得到了处理。

成本最低的缓解。除了覆盖范围之外,您还应该考虑一组缓解措施的总成本。例如,行[1]和[2]的相对成本可能导致您排除行[1],因为它的成本较高,并且不提供额外的覆盖。如果您正在优化以减轻失效模式[e],那么您将选择成本最低的适用缓解技术[3]。

这个练习没有考虑到给定故障模式的可能性。根据给定类别的具体失败,这个因素是高度可变的:例如,“小行星撞击”作为失败模式的实例[a]或“糟糕的软件发布”作为失败模式的实例[d]。系统可能经历的具体故障及其可能性取决于被评估系统的细节。在为给定系统规划数据完整性、确定相关工作的优先级和分配资源时,应列举每种类别中的个别故障及其发生的可能性,并对其进行平均或求和,以说明故障的可能性。

现在已经建立了一个框架来保存数据存储的完整性,让我们转向数字持久性的第二个方面,称为相关性可访问性。

保持可访问性。无论你把自己的信息副本锁得多么严密,采取了任何可能的保护措施,都有两种令人惊讶的常见故障会导致最周密的计划出错:

  • 您无法再以保存的形式读取数据。
  • 恢复数据的成本太高,不可行。

第一个问题是过时的问题,已经有一个例子很好地说明了这一点:古埃及人非常重视宗教文本的真实性,并把它们记录在石头上,这是现有的最永久的信息存储方式。他们没有预料到他们所选择的编码方案象形文字会在公元4世纪被淘汰。因此,他们的信息,尽管保存得非常完整,却会像消失了几千年一样,直到1799年以罗塞塔石碑的形式被承认为翻译功能,才得以破译。在离家较近的地方,可以考虑将家庭照片存储在几个Zip磁盘上,以及一个备用Zip驱动器和EISA(扩展工业标准体系结构)卡放在防火盒中。虽然这在1995年似乎是一个彻底的存档策略,但它还不够彻底,无法使用2018年的技术方便地访问这些照片。

您可以非常简单地通过实践保持对所有数据的所有访问方法的相关性:采用完整的端到端测试,或通过不同的数据存储轮换活动或影子服务来验证它们。经常这样做,以便在完全不可访问或无用之前,有足够的时间来处理废弃的存储介质或紧张的网络路由。

第二个影响可访问性的问题是规模问题。显然,在给定操作中必须处理的信息越多,处理所需的资源就越多。虽然事务是一次写一个,每次存储操作可能会产生几千字节的信息,但是从存储用户的角度来看,恢复一个累积了几个月的数据快照可能只需要一个存储“操作”—恢复必须处理tb或pb的信息。

这可不便宜。在常用总线如USB 3.0的传输速率下,该理论每拍字节数据的最小传输时间接近56小时。如果您要恢复面向客户的在线服务的数据,您不太可能有超过两天的不可用的奢侈。

在某些情况下,您将不得不利用空间与时间的经典权衡,在数据完整性过程中设计并行性,以确保在可接受的时间阈值内,信息仍然是可访问的和相关的。虽然您可能无法避免需要传输拍字节的最坏情况,但您可以在100个并发工作人员的情况下执行该传输,将56小时减少到不到1小时的挂墙时间,从而挽救您的用户和业务。

当然,这个策略说起来容易做起来难。最后,您需要检查恢复的总成本和业务成本,以找到最佳平衡点。为一系列场景建模是一个好主意,它可以指导您确定用于数据完整性操作的资源。这个过程在电子表格中得到了很好的建模。回到前面的例子:在这个范围的一端,您建模100个供应工人的成本加上一个小时停机的总成本;另一种情况是,雇佣一名员工的成本相对较低,加上56小时的停机可能会给企业带来很高的成本。您应该在分析中包含中间点,例如10个工作人员和一次接近6小时的停机,以帮助找到供应、通信计划和剧本的最佳参数。

纵深防御。“祸不单行”、“麻烦三三两两”、“Le disgrazie non vengono mai sole”;很多习语警告人们,面对数字永恒的威胁时,不要喘不过气来。这些威胁永远不会消失。这种悲观的预测有无数种表现方式。故障保护系统中的多次故障是一种常见的、尤其反复无常的命运:就像您在灾难恢复过程中松了一口气,因为您已经勤奋地将数据备份到磁带,磁带在驱动器中中断了一样。或者,您可能会经历一场完美的故障风暴:网络中断导致访问西欧应用程序服务器的用户的写操作出现间歇性超时,同时,存储事务日志的系统在蓝鹭飞入数据中心的开放变压器面板时脱机。

现在你可以翻白眼笑一笑,但可能发生的事情总会发生,所以你的计划应该采用纵深防御的原则来保护你的系统不受复合或重叠故障的影响。请记住,这些故障点彼此不知道,它们可能同时发生,也可能在不同时间发生。

Bitrot:腐烂和忽视的力量。缓解计划的某些关键功能或组成部分过时是灾难恢复失败最常见的根本原因。当你努力想出一个计划来解决一个不愉快的,恼人的,甚至是痛苦的问题时,自然和合理的想法是想把它从你的日程中抛出去。不幸的是,这样做很危险。任何运行中的系统都在变化和发展,因此制定相应的灵活计划是很重要的。如果您的计划与它们所要处理的情况的弹性不匹配,这种不匹配将导致计划的相关性下降,因为系统与以前的状态越来越不一致。

Bitrot可以表现在许多方面:访问控制列表过期、资源预订过时或不可用,或者新员工不熟悉剧本。有一个简单的检测和对抗bitrot的指导方针:练习,练习,练习。

练习你的恢复计划。备份不应该被视为理所当然,也不应该被视为最终目标:试着从备份中恢复;定期重放事务日志;在备用站点之间进行故障转移。这些是您应该关心的操作,因此要确保它们仍然按照设计工作。根据所处理的故障确定执行缓解练习的频率。例如,站点之间的故障转移用于减轻大爆炸故障,因此应该在非连续的基础上执行,可能每周或每月执行一次。日志重播用于从稳态故障中恢复。因此,对该操作进行更频繁、持续或O(天)次的端到端测试是合适的。

除了确定执行数据完整性操作的频率以确保预期的数字持久性之外,您还需要定义这些测试练习的适当范围。您的练习越接近一个完整的端到端操作,您对它的信心就越大。对于备用站点之间的故障转移,请考虑在备用站点之间定期进行实际切换,而不是将一个站点视为主站点,将其他站点视为故障转移或备份站点。对测试帐户或定期选择的帐户集运行日志恢复,可以向您保证日志重放当前是一个值得信任的操作,或者指出它的缺点,以便您可以修复任何问题,或者至少知道在发生故障时不要依赖此策略。

回到顶部

让爱持久,让爱真实

每个时代在发展和应对技术进步时都会带来新的社会挑战。在工业时代,机械加工方法不断发展,生产出更多、更好、以前做梦也想不到的机器和工具。当今的信息时代正在为管理世界所依赖的数据创造新的用途和新方法。这个世界正在从熟悉的物理工件转向更接近信息本质的新表现方式。

既然我们不能再依靠媒介的性质来赋予持久性,我们就必须设计出像我们将我们的信息和我们生活中日益增加的方面托付给的媒介一样灵活和灵活的机制。我们需要程序来确保知识的完整性和可获取性,以确保历史被了解和真实。

ACM队列的q戳相关文章
queue.acm.org

如何模拟状态?让我细数一下
伊恩·福斯特等人。
https://queue.acm.org/detail.cfm?id=1516638

保持比特安全:能有多难?
大卫·罗森塔尔
https://queue.acm.org/detail.cfm?id=1866298

META II:数字手稿中的数字皮纸
戴夫长
https://queue.acm.org/detail.cfm?id=2724586

回到顶部

作者

雷蒙德·布卢姆在谷歌的开发人员基础设施中领导一个工程团队,负责保持数千名谷歌工程师的生产力。他之前是谷歌的一名站点可靠性工程师。

贝琪拜尔是纽约谷歌站点可靠性工程的技术作家,也是站点可靠性工程:谷歌如何运行生产系统。她为谷歌的数据中心和硬件运营团队撰写文档。


©2019 acm 0001-0782/19/05

允许为个人或课堂使用部分或全部作品制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有信用的文摘。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,都需要事先获得特定的许可和/或费用。请求发布的权限permissions@acm.org传真(212)869-0481。

数字图书馆是由计算机协会出版的。版权所有©2019 ACM, Inc.

Baidu
map