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 验证业务和数据完整性
虚机完美恢复,并且数据未丢失。注意:此种方案只能用于卷虚机,也就是虚机存储不在本地才可以如此恢复。