在nova中支持设置删除的虚拟机保留时间,如果设置了
reclaim_instance_interval > 0 则在删除虚拟机时调用soft_delete方法,虚拟机状态置为 SOFT_DELETED
在调用软删除时,如果对应的virt driver(如 libvirt)未实现soft_delete 方法,则将虚拟机进行下电关机,同时把虚拟机状态改为SOFT_DELETED。
nova定时任务检查状态为SOFT_DELETED且instance.deleted_at满足保留时间的虚拟机进行删除,这里会真正删除掉虚拟机。
对于“回收站”里的恢复和清理操作,可以通过nova的restore和forceDelete接口来实现。
对于libvirt driver restore实际就是上电开机,修改虚拟机状态为ACTIVE
如上,通过原生的nova 延迟删除机制,可以实现虚拟机删除的“回收站”功能。