拯救实例

实例拯救提供了一种访问机制,即使镜像导致实例无法访问。目前提供了两种拯救模式。

实例拯救

默认情况下,实例从提供的拯救镜像或原始实例镜像的全新副本启动(如果未提供拯救镜像)。根磁盘和可选的重新生成的 config drive 也附加到实例以便恢复数据。

注意

使用此模式不支持拯救基于卷的实例。

稳定设备实例拯救

从 21.0.0 (Ussuri) 开始,提供了一种额外的稳定设备拯救模式。此模式现在支持拯救基于卷的实例。

此模式在拯救期间将所有设备(本地和远程)都以其原始顺序附加到实例,同时从提供的拯救镜像启动。此模式通过提供的拯救镜像上的 hw_rescue_devicehw_rescue_bus 镜像属性的存在来启用和控制。

顾名思义,这些属性控制拯救设备类型 (cdromdiskfloppy) 和总线类型 (scsivirtioideusb),这些类型在将拯救镜像附加到实例时使用。

hw_rescue_devicehw_rescue_bus 镜像属性的每种组合的支持取决于所使用的底层 hypervisor 和平台。例如,IDE 总线在基于 POWER KVM 的计算主机上不可用。

注意

只有在使用 Libvirt virt 驱动程序时才支持此模式。

当在计算节点上启用了 libvirt.virt_type 时,使用 LXC hypervisor 时不支持此模式。

用法

注意

当实例在拯救模式下运行时,不允许暂停、挂起和停止操作,因为触发这些操作会导致原始实例状态丢失,并使取消拯救实例变得不可能。

要执行实例拯救,请使用 openstack server rescue 命令

$ openstack server rescue SERVER

注意

在运行 openstack server rescue 命令时,实例首先执行软关机。这意味着客户操作系统有机会在实例被关闭之前执行受控关机。关机行为由 shutdown_timeout 参数配置,该参数可以在 nova.conf 文件中设置。其值代表客户操作系统完成关机允许的总体时间(以秒为单位)。

可以通过 os_shutdown_timeout 来覆盖每个镜像的超时值,这是一个镜像元数据设置,允许不同类型的操作系统指定完成干净关机所需的时间。

要拯救从卷启动的实例,需要使用 2.87 微版本或更高版本

$ openstack --os-compute-api-version 2.87 server rescue SERVER

如果您想使用特定的镜像来拯救实例,而不是默认镜像,请使用 --image 参数

$ openstack server rescue --image IMAGE_ID SERVER

要从正常的启动磁盘重新启动实例,请运行以下命令

$ openstack server unrescue SERVER