openstack 卷虚机丢失恢复 (云硬盘存在,但虚机丢失或无法启动)

openstack中有很多虚机在物理机重启或服务重启,资源不足,被人误删等原因导致在计算节点运行好好的虚机变成了

ERROR状态或者shutoff 更可悲的是无法重启,那样如果机器中跑着业务,损失就大了。

现基于卷虚机跟大家分享一个解决方案 

1. 为了测试对比,现在已有的卷虚机上写东西,证明数据完整性

 

可以看到,写了个111.txt的文件,内容为12345 

从kvm上将虚机文件删掉,

 

 

可以看到这台虚机000379 被我手动删除,也就是多数环境中 虚机丢失的现象

 

而此时,虚机也变为shutoff的状态

尝试手动重启,请求被接受但是没有反应,虚机依旧是shutoff状态。

查看compute日志,报错为

OSError: [Errno 2] No such file or directory: '/var/lib/nova/instances/2c0e4c9c-257e-48c1-9b61-13d9ca4bb441/disk.config' 

 

到此,虚机丢失,业务中断 

 

恢复方法 

由于是卷虚机,先从open stack 中查看此虚机所用的卷

# cinder list --all |grep $vm_id 

# cinder show $volume_id 

找到如图用的image id 

最后一步进行虚机重建,此种重建相当于将云硬盘重新挂给一个虚机 因为存储都用的是cinder 所以重建nova虚机不会影响数据 

# nova rebuild --image $image_id $vm_id

 

 

 

 至此,虚机又变回了active 验证业务和数据完整性

 

 

虚机完美恢复,并且数据未丢失。注意:此种方案只能用于卷虚机,也就是虚机存储不在本地才可以如此恢复。 

posted @ 2019-08-16 15:42  jimmy阳  阅读(1279)  评论(0编辑  收藏  举报