首先看一下虚拟机有多少种状态:(/nova/compute/vmstates.py)
1 ACTIVE = \'active\' # VM is running 2 BUILDING = \'building\' # VM only exists in DB 3 PAUSED = \'paused\' 4 SUSPENDED = \'suspended\' # VM is suspended to disk. 5 STOPPED = \'stopped\' # VM is powered off, the disk image is still there. 6 RESCUED = \'rescued\' # A rescue image is running with the original VM image 7 # attached. 8 RESIZED = \'resized\' # a VM with the new size is active. The user is expected 9 # to manually confirm or revert. 10 11 SOFT_DELETED = \'soft-delete\' # VM is marked as deleted but the disk images are 12 # still available to restore. 13 DELETED = \'deleted\' # VM is permanently deleted. 14 15 ERROR = \'error\' 16 17 SHELVED = \'shelved\' # VM is powered off, resources still on hypervisor 18 SHELVED_OFFLOADED = \'shelved_offloaded\' # VM and associated resources are 19 # not on hypervisor 20 21 ALLOW_SOFT_REBOOT = [ACTIVE] # states we can soft reboot from 22 ALLOW_HARD_REBOOT = ALLOW_SOFT_REBOOT + [STOPPED, PAUSED, SUSPENDED, ERROR] 23 # states we allow hard reboot from 24 25 ALLOW_TRIGGER_CRASH_DUMP = [ACTIVE, PAUSED, RESCUED, RESIZED, ERROR] 26 # states we allow to trigger crash dump 27 28 ALLOW_RESOURCE_REMOVAL = [DELETED, SHELVED_OFFLOADED] 29 # states we allow resources to be freed in
在删除虚拟机时,会根据虚拟机状态来进行不同的操作。可以看出deleted和shelved_offloaded两种状态下虚拟机资源完全释放,而shelved