---
title: 物理机下电再上电后OpenStack虚拟机启动失败
description: "在OpenStack集成Ceph场景下，遭遇物理机强制下电或异常下电再重新上电后，虚拟机无法正常启动。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengcpfs/troubleshooting/trouble/kunpengopenstackstein_09_0004.html
sourcePath: /source/zh/kunpengcpfs/troubleshooting/trouble/kunpengopenstackstein_09_0004.html
indexId: fd05d5b3f4861683c233c43d3fe15a072140c00e95baa7fcfdad683ba011101081
---
# 物理机下电再上电后OpenStack虚拟机启动失败

#### 问题现象描述

在OpenStack集成Ceph场景下，遭遇物理机强制下电或异常下电再重新上电后，虚拟机无法正常启动。


#### 关键过程、根本原因分析

1. 虚拟机启动时查看console日志，发现报错如下：
  图1 虚拟机启动报错

2. 在“/var/log/libvirt/qemu/”目录下查看对应虚拟机的日志信息，看到报错如下：
  图2 libvirt报错日志

  此时OpenStack运行正常，新下发虚拟机正常使用。结合日志分析判断为异常断电的虚拟机连接后端块存储异常。


#### 结论、解决方案及效果

OpenStack运营维护过程中需要避免异常下电的严重情况发生，在不得不下电的情况下应该及时与租户和虚拟机使用人沟通，提前关闭虚拟机然后再下电。

异常下电后，虚拟机恢复措施如下：


1. 查找对应虚拟机实例名称。

```
nova show
$vm_id
```


  vm_id为虚拟机ID，由nova list命令查询获取。

  图3 虚拟机信息

2. 记录虚拟机实例名称instance_name。
3. 获取虚拟机后端存储信息。

```
virsh dumpxml
$instance_name
|grep -w source
```


  图4 虚拟机后端存储信息

  记录标签属性protocol为rbd的source标签中的name属性的值为rbd_name。

  instance_name为虚拟机实例名称。

4. 对后端存储的卷进行挂载操作。

```
rbd map
$rbd_name
rbd unmap
$rbd_name
```


  rbd_name为步骤3中获取的。

5. 重启恢复虚拟机。

```
nova reboot
$vm_id
```


  等待虚拟机重启完成即可正常使用。
