前言: 因为机房服务器运行不稳定的原因导致计算节点挂掉,然后上面的Centos7虚拟机在迁移之后开机报错。这个解决方法同样适用于其它操作系统的虚拟机。基于镜像创建的虚拟机实例。

I/O error, can't read device /dev/vda 的报错信息

首先做疏散先把虚拟实例从宿主机上面疏散到其它主机,关闭云主机。

1.找到虚拟机的ID可以通过dashboard界面或者使用openstack server list命令,找到虚拟机的ID;然后查看虚拟机的详细信息。

比如:

nova show 8fa3d2eb-2401-48a9-850a-f800314c6950

# 与这个命令相同功能的命令还有
openstack server show ID

连接到所在的计算节点,实例名称确定是哪台主机。

注意要主机是开机状态才能看到

通过ID可以确定该虚拟机实例的数据目录,如果openstack没有对接存储的话那么在这个目录下就会存在数据文件,因为对接了ceph所以信息在libvirt.xml的文件里面。

cat /var/lib/nova/instances/8fa3d2eb-2401-48a9-850a-f800314c6950/libvirt.xml 里面就是它的vda的ID。

2.当找到这个磁盘的ID之后,在ceph集群里面去查看这个设备

rbd ls volumes | grep 8fa3d2eb-2401-48a9-850a-f800314c6950

3.取消它原来有的一些属性

# 查看卷
rbd info volumes/0859147d-27aa-49a5-8373-7c515c4f3a02_disk #取消它原来有的一些属性;根据ceph的提示操作,因为有的属性linux不支持。
rbd feature disable exclusive-lock object-map fast-diff deep-flatten --image 8fa3d2eb-2401-48a9-850a-f800314c6950_disk -p volumes

4.把它映射到本地

rbd map 8fa3d2eb-2401-48a9-850a-f800314c6950_disk -p volumes

# 如果映射不了执行下这个命令。
rbd flatten volumes/8fa3d2eb-2401-48a9-850a-f800314c6950_disk

5.使用命令修复

# 有的可能修复不了就只能做好丢失数据的准备了
xfs_repair -L /dev/rbd0p1 可以ls /dev/rbd* 查看一下,rbd0p1表示的事一个启动分区。

6.取消映射

rbd unmap 8fa3d2eb-2401-48a9-850a-f800314c6950_disk -p volumes

这个时候再重新启动就正常了。

感谢网上上传资料分享的博客,我搜集并处理了故障,终结了出来,希望更多的人看到早日跳出坑!

openstack宿主机故障,虚拟实例恢复的更多相关文章

  1. VMware14 安装CentOS7 实现宿主机ping通虚拟机、虚拟机ping通宿主机、虚拟机能上网且能ping通百度

    本文旨在通过通过虚拟机VMware14来安装CentOS7 系统,并配置固定IP来实现在Windows系统中使用Linux环境. 本文目录: 0.本机环境 1.VMware14 初始化 1.1.安装V ...

  2. Openstack虚机实例状态错误手工恢复vm_state:error

    Openstack虚机实例状态错误手工恢复vm_state:error 1.找到状态为出错状态的VM.在数据库里面表现Status为ERROR而非ACTIVE. 2.找到出错状态VM的UUID. 3. ...

  3. (为容器分配独立IP方法二)通过虚拟IP实现docker宿主机增加对外IP接口

    虚拟IP.何为虚拟IP,就是一个未分配给真实主机的IP,也就是说对外提供数据库服务器的主机除了有一个真实IP外还有一个虚IP,使用这两个IP中的任意一个都可以连接到这台主机,所有项目中数据库链接一项配 ...

  4. 通过桥接虚拟网卡使VMWare和宿主机实现双向通讯

    0.为什么选择虚拟网卡和桥接模式 首先虚拟机网络设置为NAT,虚拟机实现上网是很方便的,但是宿主机访问虚拟机就比较麻烦了(需要单独配置端口转发),桥接就能很好的解决这个问题,桥接模式会把虚拟机当做宿主 ...

  5. quartz2.3.0(十三)数据库持久化定时器job任务和trigger触发器,在多个调度器实例情况下,由其它调度器实例恢复执行调度器宕机的job任务

    一.初始化数据库11张quartz表:qrtz_*   先从官网下载好quartz2.3.0包:http://www.quartz-scheduler.org/downloads/ 解压后进入目录:q ...

  6. Centos7系统kvm虚机忘记密码进不去, 通过宿主机修改/etc/shadow文件改密码,重启后系统起不来故障排错

    问题描述 某天, 因为其他项目组交接问题, kvm里面的堡垒机系统用户root密码登录不上,然后他通过宿主机修改/etc/shadow文件修改密码,但是修改完后重启系统后发现kvm宿主机连接不上虚机了 ...

  7. 在虚拟机上利用宿主机共享目录编译linux程序

    #前提条件: 宿主机:windows7 虚拟机:REDHAT 开发环境 qt4.7.4 +vs2010 . 代码在windows7 上编译成功 ,运行正常 在linux下编译需要的第三方库已经编译成功 ...

  8. 【docker】centOS7上部署的mysql和spring boot服务,要求,mysql的时间、java程序服务的时间和宿主机的时间完全保持一致【修改mysql时区,临时和永久】【修改spring boot配置文件时区】【修改docker启动spring boot实例程序时区】

    要求:centOS7上部署的mysql和spring boot服务,要求,mysql的时间.java程序服务的时间和宿主机的时间完全保持一致: ============================ ...

  9. nova 宿主机重启自动恢复虚拟机运行状态

    1. 宿主机重启自动恢复虚拟机运行状态 1.1 参数描述与默认值 # Whether to start guests that were running before the host reboote ...

随机推荐

  1. 解决跨域问题chrome浏览器插件

    https://www.crx4chrome.com/crx/53489/ 解决chrome浏览器跨域的问题

  2. [Fundamental of Power Electronics]-PART I-5.不连续导电模式-5.4 总结与重点

    5.4 总结与重点 基本的buck,boost以及buck-boost电路的特点总结在表5.2中.其中给出了\(K_{crit}(D)\)的表达式,CCM和DCM下的变换比,以及DCM下二极管导通占空 ...

  3. java面试-JVM内存结构

    一.JVM内存结构 二.类加载(classLoader)机制 java中的ClassLoader详解 java类加载机制面试题 java类加载机制面试题 虚拟机把描述类的数据从Class文件加载到内存 ...

  4. Spring MVC(七篇)

    (一)Spring MVC简介 (二)SpringMVC核心控制器 (三)Spring MVC Controller接口控制器详解(一) (三)Spring MVC Controller接口控制器详解 ...

  5. 善用k8s describe

    使用 kubectl describe 来查看某个东西的详细例如 kubectl describe deployment my-nginx kubectl describe svc my-nginx

  6. 关于nacos在windows系统启动时闪退的问题

    nacos可以用来作为springcloud的配置中心使用,但在windows系统下使用的时候需要注意. nacos下载后解压,可以直接点击文件bin目录下的  startup.cmd  就可以启动. ...

  7. 1049 Counting Ones

    The task is simple: given any positive integer N, you are supposed to count the total number of 1's ...

  8. 【C++】从零开始,只使用FFmpeg,Win32 API,实现一个播放器(一)

    前言 起初只是想做一个直接读取视频文件然后播放字符动画的程序.我的设想很简单,只要有现成的库,帮我把视频文件解析成一帧一帧的原始画面信息,那么我只需要读取里面的每一个像素的RGB数值,计算出亮度,然后 ...

  9. goloader - golang动态加载的实现

    github地址:https://github.com/dearplain/goloader 这里有以前的一些思路:http://www.cnblogs.com/dearplain/p/8145985 ...

  10. 获取中断描述符表IDT的信息

    <pre name="code" class="cpp">//GetIDT.h文件 #ifndef _WIN32_WINNT // Allow us ...