是什么
挂起与保存是两种不同的暂停方式。挂起只把虚机执行暂停,内存内容仍留在宿主的物理内存里,恢复瞬间完成,但资源一直占着。保存则把完整内存状态写进文件、虚机进程退出,资源释放出来,之后可以从文件恢复到暂停前的运行状态。宿主需要重启或需要腾出内存时,用保存更合适。
基本信息
| 暂停 | 暂停虚机执行,内存留在宿主内存中,恢复很快 |
|---|---|
| 恢复 | 让暂停的虚机继续运行 |
| 保存 | 把内存状态写入指定的状态文件,虚机进程退出 |
| 从文件恢复 | 读取状态文件,把虚机恢复到保存时刻的运行状态 |
| 托管保存 | 由虚拟化管理程序托管的保存方式,随管理操作自动触发 |
典型使用场景
- 宿主维护前腾出内存:把批次虚机保存到文件,维护完成再恢复
- 临时让出资源:把非关键虚机挂起,给关键业务留出余量
- 状态定格:保留问题现场的运行状态,便于后续分析
- 版本切换准备:保存当前状态作为可回退点,再执行变更
- 成本控制:把长期不用的测试虚机保存下来释放内存
暂停与保存
暂停与保存
virsh suspend vm1 && virsh resume vm1 # 暂停后立即恢复,验证可用性
state_dir=/var/lib/libvirt/save
virsh save vm1 $state_dir/vm1-$(date +%F).save # 保存内存状态并释放资源
virsh list --all # 保存后虚机状态应显示为已保存
virsh restore $state_dir/vm1-2026-10-13.save # 从状态文件恢复运行
ls -lh $state_dir && chmod 600 $state_dir/*.save # 状态文件含内存数据,限制权限两种方式对比
| 维度 | 挂起 | 保存 |
|---|---|---|
| 内存占用 | 继续占用宿主内存 | 写入文件,内存释放 |
| 恢复速度 | 瞬间恢复 | 需要读回状态文件,时间取决于文件大小 |
| 跨宿主 | 不能迁移,绑定当前宿主 | 文件可搬移,但目标宿主版本与配置需兼容 |
| 适用场景 | 短时间让出处理器 | 长时间让出内存或宿主维护 |
| 风险点 | 长期挂起占用内存,影响其他虚机 | 状态文件含内存快照,权限与存放位置要受控 |
保存与恢复最好在同一宿主、同一版本上使用:状态文件包含设备与内存布局信息,跨大版本恢复可能失败,跨宿主恢复要确认配置兼容。
状态文件包含虚机内存的全部内容,可能含口令与会话密钥,要按敏感数据处理:限制文件权限、放在受控目录,并纳入清理策略。