快照与现场保护
快照是在变更前保存可恢复的现场,对象不同手段也不同:配置文件用带时间戳的归档或版本库,虚拟机与存储卷用平台快照,数据库用自身提供的逻辑或物理备份,容器用固定的镜像标签与编排清单。两个很容易被忽视的要点:一致性——运行中写入的快照在文件系统或数据库层面可能不一致,恢复后不可用;可恢复性——保存了但从未验证过恢复流程,等于没有快照。
基本信息
| 快照对象 | 配置文件、虚拟机、存储卷、数据库、容器镜像与编排清单 |
|---|---|
| 一致性要求 | 先静默文件系统或停写,再执行快照 |
| 保留策略 | 明确保留周期与空间占用,避免快照堆积打满存储 |
| 关键要求 | 快照可恢复,并且经过实际验证 |
典型使用场景
- 修改关键服务配置前保存原始文件
- 系统升级前对虚拟机或存储卷做平台快照
- 数据库结构变更前做逻辑备份并记录位点
- 发布前固定当前镜像标签,保证可回滚
- 内核或驱动更新前保留可引导的旧内核
现场保护写法
现场保护写法
ts=$(date +%Y%m%d-%H%M%S) # 时间戳避免覆盖历史备份
cp -a /etc/nginx/nginx.conf "/etc/nginx/nginx.conf.bak.$ts" # 保留权限与属主
tar -czf "/var/backups/etc-$ts.tar.gz" -C / etc/nginx etc/systemd/system
sync # 确认数据落盘
virsh snapshot-create-as web01 "before-upgrade-$ts" # 平台快照示例
docker image inspect app:1.4.2 >/dev/null || docker pull app:1.4.2 # 确认回滚镜像可用快照对象与一致性
| 对象 | 常用手段 | 一致性注意 |
|---|---|---|
| 配置文件 | 带时间戳归档或版本库 | 归档前确认文件未被写入 |
| 虚拟机 | 平台快照 | 内存快照与磁盘快照语义不同 |
| 存储卷 | 卷快照 | 需确认应用层已刷盘 |
| 数据库 | 逻辑或物理备份 | 备份期间的数据变化需记录位点 |
| 容器 | 固定镜像标签与清单 | 镜像仓库可能已删除旧标签 |
快照不能替代备份:快照与源数据通常位于同一存储,存储故障时两者一起丢失,长期保留还会明显占用空间并影响性能。关键数据仍需独立备份并定期验证恢复。
对运行中的数据库直接做卷快照并按快照恢复,数据文件内部可能不一致。数据库应使用自身提供的备份方式,恢复时按流程应用日志,而不是把卷快照当成数据库备份。