大型机思想在现代系统的演化 (中文版)

最后更新于:2025-12-12 14:57:47

本报告探讨的是一个非常本质、而且一旦理解就“再也回不去”的问题。我们将把它讲成一条清晰的思想演化链,旨在揭示:ZFS、WAL、journaling 并不是“新技术”,而是把大型主机的确定性思想,拆解、简化、下放到通用系统中的结果。


ZFS、WAL、journaling 的共同本质,是把“数据正确性”从“程序员的希望”,变成“系统的责任”。 而这,正是 IBM 大型主机 60 多年来一直坚持的设计哲学。


任何时刻,系统都必须能回答:“我现在的数据,是真的还是假的?”

为此,大型机从一开始就做了三件事:


不信任 CPU:正如现代关于静默数据损坏(SDC)的研究指出的,CPU 可能在没有报错的情况下计算错误(例如 1+1=3)1。大型机预见到了这一点。

不信任内存

不信任 I/O 控制器

不信任磁盘:介质老化和“位衰减”是不可避免的物理现实 2。

👉 每一层都要自证正确

每一次状态改变:

都是一个事件

有顺序

可回放

可验证

被检测

被隔离

被恢复

绝不能“悄悄发生”

大型机真正害怕的不是“宕机”,而是“静默错误”。 3

因为代价极高:


所以:

👉 大型机只存在于银行、航空、军工、政府

为了“便宜 + 通用”:

假设硬件基本可靠

错了就:

重启

fsck:事后修补 6

手工修

程序员自己兜底

结果是:

系统便宜了,但“正确性”被下放给了应用和人。

当三个条件同时出现:

数据量巨大 7

7×24 运行

无法人工修账

这时大家才发现:

“便宜 + 不可证明正确” = 灾难

不是一次性引入,而是拆解成模块。

状态改变 ≠ 直接写数据

先写“我打算做什么”

再做

崩了就重放

任何数据页修改前:

先写日志(顺序、可校验) 6

崩溃后:

用日志恢复到一致状态

👉 这就是大型机事务日志的最小实现版本

掉电 → 元数据半写

fsck 扫全盘 6

不确定修复结果

元数据更新变成事务

成功或失败,不存在“半生不熟”

这一步,把“文件系统”变成了“事务系统”。

这是典型的大型机思想迁移。

ZFS 不是“文件系统 + RAID”,而是:

数据从:

应用

到内存

到磁盘

再读回

每一跳都有校验:ZFS 不信任磁盘返回的数据,而是通过独立的校验和(Checksum)来验证数据的完整性 89。

👉 这直接复刻了大型机“不信任任何层”的思想。

不覆盖旧数据 6

新数据完整后再切换指针

这意味着:

永远有一个“已知一致状态”

崩溃 ≠ 损坏

不是等你读错

而是定期扫描、验证 9

这是大型机“主动防错”思想的民用版本。 2

👉 你现在用的 PostgreSQL + ZFS,本质上是在“模拟一个缩小版大型机”。

因为它违反了很多早期工程直觉:

“磁盘不会错”

“ECC 内存够了”

“崩了重启就好”

“概率太低不值得管”

大型机给出的答案是:

概率 × 时间 × 规模 = 必然事件 7

你已经自然地得出了大型机工程师几十年前的结论:

真正可靠的系统,不是“不出错”,

而是“错误发生时,系统知道自己错了”。

ZFS、WAL、journaling 不是为了更快,

而是为了:

在任何时候,都能证明“我现在的数据是对的”。

这,正是大型机思想的核心。

如果你愿意,下一步我们可以继续深入一个更“硬核”的方向之一:

为什么“静默数据损坏”是现代系统最大的隐形敌人

为什么“确定性”比“吞吐量”更难工程化

为什么很多分布式系统最终都会引入“集中裁决点”

What is Silent Data Corruption (SDC)? | Synopsys Blog, accessed December 12, 2025,

checksum - Understanding the error reporting of ZFS (on Linux), accessed December 12, 2025,

Keeping Silent About Silent Data Corruption | Enterprise Storage Forum, accessed December 12, 2025,

Arcati Mainframe Glossary, accessed December 12, 2025,

Introduction to the New Mainframe: z/OS Basics - IBM Redbooks, accessed December 12, 2025,

Transactional Semantics - What Is ZFS?, accessed December 12, 2025,

Identifying Sources Of Silent Data Corruption - Semiconductor Engineering, accessed December 12, 2025,

ZFS scrubbing | The FreeBSD Forums, accessed December 12, 2025,

Checksums and Their Use in ZFS - OpenZFS Documentation, accessed December 12, 2025,