1、问题现象

生产环境上,对计算节点文件系统修复,导致某些虚机的镜像文件数据丢失,出现异常,最终造成虚机无法启动,查看对应计算节点的nova日志,报如下错误

nova-compute: File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 2560, in power_on
nova-compute: self._hard_reboot(context, instance, network_info, block_device_info)
nova-compute: File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 2449, in _hard_reboot
nova-compute: vifs_already_plugged=True)
nova-compute: File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5191, in _create_domain_and_network
nova-compute: destroy_disks_on_failure)
nova-compute: File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
nova-compute: self.force_reraise()
nova-compute: File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
nova-compute: six.reraise(self.type_, self.value, self.tb)
nova-compute: File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5163, in _create_domain_and_network
nova-compute: post_xml_callback=post_xml_callback)
nova-compute: File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5081, in _create_domain
nova-compute: guest.launch(pause=pause)
nova-compute: File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 145, in launch
nova-compute: self._encoded_xml, errors='ignore')
nova-compute: File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
nova-compute: self.force_reraise()
nova-compute: File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
nova-compute: six.reraise(self.type_, self.value, self.tb)
nova-compute: File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 140, in launch
nova-compute: return self._domain.createWithFlags(flags)
nova-compute: File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 186, in doit
nova-compute: result = proxy_call(self._autowrap, f, *args, **kwargs)
nova-compute: File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 144, in proxy_call
nova-compute: rv = execute(f, *args, **kwargs)
nova-compute: File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 125, in execute
nova-compute: six.reraise(c, e, tb)
nova-compute: File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 83, in tworker
nova-compute: rv = meth(*args, **kwargs)
nova-compute: File "/usr/lib64/python2.7/site-packages/libvirt.py", line 1065, in createWithFlags
nova-compute: if ret == -1: raise libvirtError ('virDomainCreateWithFlags() failed', dom=self)
nova-compute: libvirtError: internal error: process exited while connecting to monitor: 2020-03-16T01:44:43.128499Z
qemu-kvm: -drive file=/os_instance/3dc75704-f729-4c33-865b-313f0e8a8df8/disk,format=qcow2,if=none,id=drive-virtio-disk0,cache=none:
qcow2: Image is corrupt; cannot be opened read/write

2、修复方法

进入到虚机disk的目录下,执行qemu-img check disk,检查镜像数据的一致性,发现很多error,执行qemu-img check -r all disk命令,对磁盘镜像进行修复,最后重启虚机即可

3、qemu-img check命令详解

qemu-img check [-f fmt]  [--output=ofmt]  [-r [leaks | all]]  filename

对磁盘镜像文件进行一致性检查,查找镜像文件中的错误,目前仅支持对“qcow2”、“qed”、“vdi”格式文件的检查。其中,qcow2是QEMU 0.8.3版本引入的镜像文件格式,也是目前使用最广泛的格式。qed(QEMU enhanced disk)是从QEMU 0.14版开始加入的增强磁盘文件格式,为了避免qcow2格式的一些缺点,也为了提高性能,不过目前还不够成熟。而vdi(Virtual Disk Image)是Oracle的VirtualBox虚拟机中的存储格式。

参数-f fmt是指定文件的格式,如果不指定格式qemu-img会自动检测,filename是磁盘镜像文件的名称(包括路径)。

如果指定了“-r”,qemu-img将尝试修复在检查时发现的任何非一致性。在使用qemu-img check -r 命令执行,最好对磁盘文件进行备份,-r leaks 仅修复集群损坏。

-r all修复各种类型的错误,该命令执行后,会有一个退出码,不同的数字,表示不同的检测结果

0 检查完成,镜像(现在)是一致的

1 检查由于内部错误而未完成

2 检查完成,镜像已损坏

3 检查完成,镜像已泄漏集群,但没有损坏

63 镜像格式不支持检查

qemu-img check命令详解的更多相关文章

  1. bat批处理文件命令详解

    bat批处理文件命令详解 echo.@.call.pause.rem(小技巧:用::代替rem)是批处理文件最常用的几个命令 echo 表示显示此命令后的字符  echo off 表示在此语句后所有运 ...

  2. [r]Ubuntu Linux系统下apt-get命令详解

    Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package ...

  3. apt-get 命令详解(中文),以及实例

    apt-get 命令详解(中文),以及实例 一,什么的是apt-get 高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubunt ...

  4. shell-----sed命令详解

    Table of Contents 1. Sed简介  2. 定址  3. Sed命令  4. 选项  5. 元字符集  6. 实例  7. 脚本 1. Sed简介 sed是一种在线编辑器,它一次处理 ...

  5. linux shell 脚本攻略学习14--head命令详解,tail命令详解

    当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十行和后十行),我们也有可能需要打印出来前n行或后n行,也有可能打印除 ...

  6. head和tail命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/amosli/p/3496027.html 当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相 ...

  7. Uboot mmc命令解析&NAND flash uboot命令详解

    转载:http://blog.csdn.net/simonjay2007/article/details/43198353 一:mmc的命令如下: 1:对mmc读操作 mmc read addr bl ...

  8. linux shell 脚本攻略学习 -- head命令详解, tail命令详解

    当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十行和后十行),我们也有可能需要打印出来前n行或后n行,也有可能打印除 ...

  9. (转)tune2fs命令详解

    tune2fs命令详解(原创) 原文:http://czmmiao.iteye.com/blog/1749232 tune2fs简介 tune2fs是调整和查看ext2/ext3文件系统的文件系统参数 ...

随机推荐

  1. 关闭,centos yum的自动更新

    今天我虚拟机提示我满了,,,打开磁盘分析器一看,yum的更新目录满了,本地虚拟跟生产环境的版本完全一致,所以我也不打算更新,找一下命令,得先安装yum-cron ,然后再禁止更新 [root@loca ...

  2. 《数据可视化之美》高清PDF全彩版|百度网盘免费下载|Python数据可视化

    <数据可视化之美>高清PDF全彩版|百度网盘免费下载|Python数据可视化 提取码:i0il 内容简介 <数据可视化之美>内容简介:可视化是数据描述的图形表示,旨在一目了然地 ...

  3. 安装fiddler 谷歌插件

    移动 .crx 插件无法安装问题 解决方案: 修改后缀名为 .zip 文件 进行解压后,使用浏览器扩展程序加载已解压的文件进行扩展 添加插件 2020-06-20

  4. PHP pathinfo() 函数

    定义和用法 pathinfo() 函数以数组的形式返回关于文件路径的信息. 返回的数组元素如下: [dirname]: 目录路径 [basename]: 文件名 [extension]: 文件后缀名 ...

  5. PHP get_html_translation_table() 函数

    实例 输出 htmlspecialchars 函数使用的翻译表: <?php高佣联盟 www.cgewang.comprint_r (get_html_translation_table()); ...

  6. mysql安装和配置详解以及Navicat连接失败问题

    好久没安装过MySQL了,今天安装了下竟然碰壁了, 就来做个笔记吧.安装步骤如下: 记住:一定要看到最后!!!!!!!!! 一. 安装  1.安装 (https://dev.mysql.com/dow ...

  7. source命令用法:source FileName

    转自https://zhidao.baidu.com/question/59790034.html  写得很清楚,就直接搬过来了备忘 作用:在当前bash环境下读取并执行FileName中的命令. 注 ...

  8. 当Django模型迁移时,报No migrations to apply 问题时

    前言:当更改model时在次迁移是不是经常报此类错误,解决以下两点便可以更新成功 1. 删除修改模型对应的app应用下的migrations中的生成文件 2. 进入数据库,找到django_migra ...

  9. NOI Online#1 小记

    虽然只是一个普通的模拟赛,但是毕竟是我第一次参加官方组织的比赛,所以还是写一篇小记纪念一下吧(毕竟经验少,太菜了. 上午一直颓着,随便看了两眼文化课,补了补昨天的化学作业,就当是对明天月考的复习吧(月 ...

  10. 【Python 实例】面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母

    [Python 实例]面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母 题目: 解答: 运行结果: 题目: 请输入一周中某天的名称的第一个字母 ...