大型机思想在现代系统的演化 (中文版)
本报告探讨的是一个非常本质、而且一旦理解就“再也回不去”的问题。我们将把它讲成一条清晰的思想演化链,旨在揭示: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,