崩溃一致性是什么
崩溃一致性(crash-consistent)副本等价于系统在某一瞬间突然断电时的磁盘状态:文件系统元数据基本一致、能正常挂载,但应用内存里尚未落盘的写入丢失,事务可能停在中间。多数存储快照与虚拟机快照默认给到的就是这一级别,它实现简单,但对运行中的数据库往往不够。
基本信息
| 特点 | 无需应用配合,实现简单,几乎所有快照能力都能提供 |
|---|---|
| 适用 | 纯文件数据、无持续写入的服务、可直接重建的缓存与静态内容 |
| 不适用 | 运行中的数据库与消息队列:恢复后还需应用自身做崩溃恢复 |
| 恢复动作 | 起库时执行应用的崩溃恢复流程,时间开销取决于未落盘事务量 |
典型使用场景
- 静态站点与图片目录:内容变化少,抓一个时间点即可
- 操作系统与补丁前的系统盘:镜像回滚用崩溃一致副本足够
- 大规模批量场景:业务停写窗口内打快照,代价低、覆盖面广
- 作为二层保护:应用一致备份成本高时,用崩溃一致副本覆盖更多系统
- 开发测试环境:对一致性要求低,恢复后重建索引即可
取崩溃一致副本与只读验证
取崩溃一致副本与只读验证
# 直接对卷打快照(示例:LVM),无需停应用
lvcreate -L 10G -s -n data_snap /dev/vg0/lv_data
# 验证时只读挂载:挂载写操作会重放日志并改写副本内容
mkdir -p /mnt/snap && mount -o ro,noload /dev/vg0/data_snap /mnt/snap
# 检查文件系统与关键目录是否完整
ls -l /mnt/snap/app/ && df -h /mnt/snap
# 确认无误后卸载并清理快照
umount /mnt/snap && lvremove -f /dev/vg0/data_snap一致性级别对照
| 级别 | 快照时点状态 | 恢复后要做的事 |
|---|---|---|
| 崩溃一致 | 文件系统一致,应用内存数据丢失 | 执行应用自身的崩溃恢复,耗时不确定 |
| 应用一致 | 事务边界上的完整状态 | 多数场景可直接启动,无需长恢复 |
| 不一致副本 | 文件在拷贝过程中被改写 | 常见页损坏与索引异常,往往不可用 |
对运行中的数据库做块级克隆得到的多为崩溃一致副本,起库前通常要走一遍数据库恢复逻辑,时间开销不可忽略,RTO 评估要把它算进去。
验证崩溃一致副本时必须以只读方式挂载:文件系统日志重放会修改副本内容,一旦写挂载,这份副本就不再是原始时间点状态。