【OpenStack】源码级深入了解删除虚拟机操作

时间:2021-02-09 17:34:08

首先看一下虚拟机有多少种状态:(/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