pause/unpause
短时间暂停instance,通过Pause操作将instance的状态保存到宿主机的内存中。当需要恢复的时候,执行unpause操作,从内存中读回instance的状态,然后继续运行instance。
对虚机进行pause操作后,通过`ps -ef | grep qemu`查看,依然有该虚机的qemu进程存在,资源并没有得到释放,同时也可以通过查看nova-compute的日志,资源上报的自动任务中的资源使用状况并没有减少。
suspend/resume
如果需要长时间暂停instance,可以通过Suspend操作将instance的状态保存到宿主机的磁盘上。需要恢复的时候,执行Resume操作,从磁盘读回instance的状态,然后继续运行。
执行suspend操作后,同样的通过ps -ef | grep qemu查看,虚机的qemu进程已经消失了,释放了宿主机的资源,但是通过nova-compute日志,资源上报中的资源使用情况依然没有发生改变。虽然pause和suspend都是暂停虚机,然后保存虚机的状态,但是二者还是有明显的区别:
- suspend操作将虚机的状态保存在内存中,而pause保存在磁盘中,所以虚机状态恢复的时间是不同的;
- suspend操作后会释放虚机使用的资源,但是对于OpenStack平台来说该虚机依然占有资源(通过nova-compute的资源上报可以查看),而pause操作不会。
- 虽然都是通过Resume操作恢复,Pause对应的 Resume在OpenStack内部被叫作“Unpause”;Suspend 对应的Resume才是真正的“Resume”。
shelve/unshelve
虚机执行shelve操作可以将虚机的资源彻底的释放出来,并且shelve会将instance作为image保存到glance中,然后再删除该虚机释放资源。可以通过unshelve操作恢复虚机,并且在恢复成功之后删除基于该虚机创建的镜像。需要注意的是,通过unshelve操作之后的虚机可能和shelve之前的虚机不在一个计算节点上,因为unshelve操作是基于shelve操作创建的镜像重新创建虚机,所以会重新选择计算节点。
rescue/unrescue
当虚机出现故障时(操作系统无法启动),我们可以通过rescue操作,暂时的使用一张系统盘将系统启动起来,然后进行一些补救措施。
rescue操作会使用一张系统盘将系统引导起来,然后将虚机原先的系统盘作为第二块磁盘挂在到操作系统上。使用rescue恢复虚机。soft reboot/hard reboot
soft reboot 与 hard reboot 的区别在于:
- soft reboot 只是重启操作系统,整个过程中,instance 依然处于运行状态。相当于在 linux 中执行 reboot 命令
- hard reboot 是重启 instance,相当于关机之后再开机
snapshot/rebuild
snapshot是对instance的镜像文件(系统盘)进行全量备份,生成一个类型为 snapshot的image,然后将其保存到Glance上。
如果 instance 损坏了,可以通过snapshot恢复,这个恢复的操作就是 Rebuild。Rebuild 会用 snapshot 替换 instance 当前的镜像文件,同时保持 instance 的其他诸如网络,资源分配属性不变。