[译] 内容寻址存储(CAS):工作原理、企业应用与部署取舍

译注:本文按用户提供的英文全文翻译,保留原文的章节和论述。CAS 统一译作“内容寻址存储”,首次出现时保留英文全称。原文把内容完整性校验、不可变写入、留存策略与法规合规多次混为一谈,也有依赖具体实现的性能断言;相关位置附有译注,不能将正文中的这些断言直接视为技术保证或合规结论。核对日期为 2026-11-11。 大多数存储系统回答的是“这份数据在哪里”。它们把文件放进目录,分配块地址,再沿着层级结构检索内容。这套模式通常够用,直到同一份文件在备份基础设施里出现了 17 份,直到监管机构要求证明某条记录自 2019 年以来从未被改动,或者直到一次存储审计发现,40% 的容量被无人刻意创建的重复内容占据。 内容寻址存储(Content Addressable Storage,CAS)回答的是另一个问题:“这份数据是什么?”它根据内容本身识别和检索数据,为每个对象生成唯一的密码学指纹,并把这个指纹作为永久地址。这一变化带来了自动去重、内建不可变性,以及验证已存数据未被改动的能力。这些能力源自寻址模型,无须事后另加一套工具。1 本文从架构层面介绍 CAS 的工作方式,并说明它与对象存储的区别,也会介绍企业中的应用场景和大规模部署时需要考虑的问题。 什么是内容寻址存储,它如何工作 内容寻址存储是一种存储架构。每个数据对象都有一个由自身内容生成的唯一标识符,而不是用存储位置来标识。这个标识符是根据数据计算出的密码学哈希,通常使用 SHA-256。哈希值成为对象在系统中的永久地址。读取时提供哈希值;验证时,对取回的内容重新计算哈希,再与保存的标识符比较。一致,说明数据完整;不一致,说明内容发生了变化。2 这种基于内容的寻址方式直接带来两个结果。第一,相同内容总会产生相同哈希。同一份文件即使出现在多个位置,也会映射到同一个标识符,系统只保存一份。去重直接由寻址方式产生,无须管理员单独配置这项功能。第二,内容只要变化,就会产生不同哈希。无法悄悄修改已存对象,再让它以原地址被取回。修改后的内容要么作为新对象写入并获得新地址,要么在校验时因哈希不匹配而被发现。 CAS 架构的三个层次 CAS 系统由三个协同工作的功能层组成。索引引擎负责哈希计算与查找。写入数据时,它先计算哈希,再检查索引中是否已有这个值。如果有,就引用已有对象;如果没有,就写入数据,并把新哈希加入索引。 存储库保存实际的数据对象。对象不可变,写入后就不再修改。文件变化时,新版本作为新对象存储,获得新的哈希。原对象仍可通过原地址访问,因此系统无需额外工具就能跟踪版本。3 元数据层把每个哈希与上下文信息关联起来,包括时间戳、留存策略、访问控制和合规设置。元数据单独存储、独立管理,不影响内容哈希,但决定了对象在整个生命周期中如何被处理。4 数据如何流经 CAS 系统 应用向 CAS 写入数据时,系统按固定顺序处理:计算输入内容的哈希,在索引中查找匹配项,然后创建新记录,或返回对已有对象的引用。读取时,应用提供内容地址,系统在存储库中定位对应对象。如果启用了校验,系统会在返回数据前重新计算哈希,确认内容在存储期间没有被改动。 在分布式部署中,每个节点执行同样的过程。相同内容无论在哪里计算,都会产生同一个哈希。因此,一份文件在芝加哥节点存储,再复制到法兰克福节点,标识符仍然相同。这种全局一致的标识方式,是 CAS 在分布式和多站点环境中的一项实用优势。2 CAS 与对象存储有什么区别 内容寻址存储和对象存储经常被放在一起讨论,因为二者都把数据作为独立对象管理,而不是按目录层级中的文件或卷中的数据块来管理。区别在于如何标识对象,以及系统如何保证对象在长期存储中的完整性。 对象存储在创建对象时分配唯一标识符,通常是 UUID 或系统生成的 key。标识符由系统分配,与对象内容无关。对象内容可以修改,key 保持不变。这使对象存储适合媒体文件、应用资源和配置对象等会变化的数据。内容需要更新,标识符又要在多个版本间保持稳定。5 CAS 根据内容生成标识符。内容变化,标识符也随之变化,每个不同版本因此被保存为独立对象。CAS 对象无法原地更新,只能创建带有新哈希的新版本。这是其不可变性保证的来源,也是主要约束。CAS 适合不应变化的数据,例如合规记录和审计日志,也包括归档文档、医学影像和数字证据。1 两种架构在企业存储中的位置 对象存储适合大规模的活跃数据,以及频繁访问或更新的工作负载。云原生应用、媒体处理流水线和数据湖可以使用 RESTful API 访问数据、进行分层存储,也能更新对象,无须自行管理版本哈希。S3 兼容生态已经成熟,对象存储也容易融入高频读写的应用架构。 CAS 适用于必须保持不可变的工作负载。监管人员或审计人员要求证明文档归档后未被修改时,CAS 可以重新计算内容哈希,与最初的指纹比较,提供验证依据。开启版本控制的对象存储可以展示变更历史,但如果不在存储系统外单独跟踪并校验哈希,就无法保证某个版本从未被改动。5 不少企业同时使用两者。对象存储承载活跃业务和动态内容,CAS 保存归档、合规记录及受法律保全措施约束的数据。数据根据访问模式和留存要求在两层之间迁移。两种架构互为补充。 CAS 中的数据去重与单实例存储 去重是内容寻址最直接的运维收益之一。传统存储需要单独的去重过程:扫描重复数据块,转而引用唯一副本,再移除冗余副本。在 CAS 中,这一步发生在数据写入时。内容到达后,系统计算哈希。如果索引中已有同一哈希,就指向已有对象,不再写入另一份。因此无需单独运行去重任务,无需后处理,也无需管理员配置。6 单实例存储及其容量影响 单实例存储(Single-Instance Storage,SiS)是 CAS 去重带来的存储原则:每份唯一内容在存储库中只保留一个实例。无论引用来自哪个应用、备份任务或用户,都指向同一实例。内容大量重复时,SiS 能显著节省容量。7 备份是最直观的例子。假设数据库每天备份,两次备份之间有 95% 的记录没有变化,那么只有变化的 5% 会作为新对象写入。未变化的记录已按原哈希保存在 CAS 存储库中,备份任务只需引用,无须再次复制。随着时间推移,备份占用增长会比逻辑数据总量增长慢得多,因为存储库积累的是唯一内容,而不是内容大体相同的快照副本。6 ...

2026-11-11 · 3 min · 439 words · 翟志军 Jack Zhai