libvirt虚拟机存储路径与Destroy方法影响
libvirt虚拟机存储路径与Destroy方法影响
本文探讨在没有将虚拟机的存储路径保存到libvirt的存储池中的情况下,如果使用Destroy方法强制关机,libvirt中的ListAllDomain方法是否会找不到这个虚拟机。
StoragePoolCreateFlags解析
以下代码段定义了libvirt中用于创建存储池的标志位 StoragePoolCreateFlags:gotype StoragePoolCreateFlags uint
const ( STORAGE_POOL_CREATE_NORMAL = StoragePoolCreateFlags(C.VIR_STORAGE_POOL_CREATE_NORMAL) STORAGE_POOL_CREATE_WITH_BUILD = StoragePoolCreateFlags(C.VIR_STORAGE_POOL_CREATE_WITH_BUILD) STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE = StoragePoolCreateFlags(C.VIR_STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE) STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE = StoragePoolCreateFlags(C.VIR_STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE))
这些标志位用于指定存储池的创建方式,具体含义如下:
STORAGE_POOL_CREATE_NORMAL:正常创建存储池。-STORAGE_POOL_CREATE_WITH_BUILD:创建存储池时,使用存储池定义文件中的构建操作。-STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE:创建存储池时,使用存储池定义文件中的构建操作,并覆盖已存在的存储池。-STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE:创建存储池时,使用存储池定义文件中的构建操作,但不覆盖已存在的存储池。
选择哪个标志位取决于你的需求:
- 如果你想使用存储池定义文件中的构建操作创建存储池,可以选择其中一个带有
WITH_BUILD标志的选项。- 如果你希望覆盖已存在的存储池,可以选择带有WITH_BUILD_OVERWRITE标志的选项。- 如果你不希望覆盖已存在的存储池,可以选择带有WITH_BUILD_NO_OVERWRITE标志的选项。- 如果你只是想正常创建存储池,可以选择STORAGE_POOL_CREATE_NORMAL标志。
结论
回到最初的问题,即使没有将虚拟机的存储路径保存到libvirt的存储池中,只要虚拟机磁盘镜像文件仍然存在于宿主机上,使用ListAllDomain方法就能找到这个虚拟机,因为 ListAllDomain 方法会扫描所有已定义的虚拟机,而不仅仅是存储池中的虚拟机。 需要注意的是, Destroy 方法只会关闭虚拟机,并不会删除虚拟机磁盘镜像文件。
原文地址: https://www.cveoy.top/t/topic/f3Kn 著作权归作者所有。请勿转载和采集!