virsh managedsave 是什么
managedsave 把运行中的域保存为托管状态并停止其进程:内存内容与设备状态写到 libvirt 管理的位置,下次用 start 启动时自动恢复到保存时的运行现场,包括运行中的进程与已建立的连接。它常用于宿主需要重启或维护时快速下线业务,比关机再开机省去应用预热时间。代价是这份保存文件承载着虚机的运行现场,必须和磁盘镜像一起看待。
基本信息
| 适用平台 | 使用 libvirt 与 QEMU 的 Linux 宿主 |
|---|---|
| 保存命令 | virsh managedsave <域>,执行后域变为关闭状态但保留保存文件 |
| 恢复方式 | virsh start <域>,自动进入恢复流程 |
| 查看状态 | virsh list --all --managed-save |
| 清理命令 | virsh managedsave-remove <域> 删除保存文件 |
| 前置条件 | 需要对域有管理权限,且保存目录有足够空间容纳内存内容 |
| 时间成本 | 保存与恢复耗时与内存大小和存储速度相关 |
典型使用场景
- 宿主维护重启:把业务先托管保存,维护完成后再恢复运行现场
- 临时释放资源:需要把 CPU 与内存让给其他任务时保存并停掉虚机
- 阶段性实验:保存当前状态,验证另一条路径后再恢复回来
- 避免长时间冷启动:应用启动慢的业务用托管保存替代关机开机
- 应急处理:需要快速腾出宿主内存,比迁移更直接
保存、恢复与清理
保存、恢复与清理
virsh list # 确认域正在运行
sudo virsh managedsave vm1 # 保存运行现场并停止域
virsh list --all --managed-save # 查看哪些域处于托管保存状态
sudo virsh start vm1 # 从托管保存恢复,观察是否回到原现场
virsh screenshot vm1 /tmp/after-restore.ppm # 有图形时抓一张图确认界面状态
virsh managedsave-remove vm1 # 确认不再需要后清理保存文件释放空间
# 注意:保存文件通常不在常规备份范围内,需单独确认是否要纳入备份状态与验证
| 查询对象 | 结果含义 | 异常处理 |
|---|---|---|
| list --all | 域显示为关闭状态 | 确认是托管保存而不是异常宕机 |
| list --managed-save | 列出存在保存文件的域 | 列表为空说明没有可恢复的现场 |
| start 恢复 | 进程回到保存时状态 | 配置变更后可能失败,需按提示走干净启动 |
| screenshot | 图形虚机的当前画面 | 画面为空时改看串口日志 |
| 保存文件占用 | 保存文件大小接近内存配置 | 空间不足会导致保存失败 |
| 备份覆盖 | 确认保存文件是否被备份 | 未覆盖时宿主故障后现场不可恢复 |
托管保存的恢复对配置变更敏感:保存后若修改了 CPU 型号或设备配置,恢复可能失败,此时通常只能放弃现场按干净启动处理。
保存文件不纳入常规备份:宿主本身故障时运行现场丢失,业务只能冷启动,重要系统应评估是否需要额外保护。