事故情况

最近同事反馈, 一个文件更新后出现了文件部分不可读的情况
具体现象为: 前端功能打开白屏
后端文件 前面93行不显示, notepad++打开都是 NULL 黑框.
然后重新覆盖文件, 有概率成功, 有概率失败.
遇到问题之后进行了紧急处理. 但是一开始的路线不太正确.
所以本次想总结一下问题解决过程.

遇到的第一个问题

最开始怀疑是宿主机的磁盘出现了坏块
然后迁移了虚拟机的宿主机.
因为时间较久, 只能第二天早上进行处理 第二天机器处理完成之后进行了启动等处理发现没有问题.
但是为了保险起见, 就准备复制整个应用目录, 进行备份
但是发现复制过程中 会出现
bash input/output error
然后所有的功能都会出现这个提示信息 , 系统几乎不可用
只能硬重启.

遇到的第二个问题

因为第一个问题时进行了虚拟机迁移
可以排除是物理机器磁盘损坏的问题.
怀疑是否是 文件 损坏导致的 当然这个怀疑比较幼稚, 我删除了复制失败的目录
然后从其他环境复制复制失败的目录(前端文件, 无状态,可以复制)
本以为复制完成就可以万事大吉
但是基于测试要全面的考虑, 我再次进行了整个应用程序目录的复制
很不幸, 整个环境再次出现 input/output error
此时基本确定是 linux 虚拟机的文件系统出现了损坏.

解决文件系统损坏-尝试1

文件系统损坏,可能无法在一个使用着的系统进行, 需要进入rescue 救援模式进行.
1. 重启系统后,进入grup引导页面,选中第一项然后按“e” 进入编辑模式:
2. 通过↓键找到linux16开头行,如所示“ro”处(ro表示只读),
将ro替换为rw init=/sysroot/bin/sh,然后按ctrl+x 系统重启进入救援模式
3. chroot /sysroot 获取root权限 但是发现这种方式也不行

解决文件系统损坏-尝试2

修改虚拟机的配置 BIOS 设置为 CD-ROM启动
修改虚拟机的配置 在设置界面增加上 CentOS的IOS系统影像
重启机器.进入第一个界面, 选择troubleshooting
然后选择rescue a CentOS system
进入一个选择 输入 1 continue
执行命令 chroot /mnt/sysimage
执行df -Th 查看磁盘情况
查看最全的文件系统路径
执行 umount -lf /dev/mapper/centos-root
执行完之后需要 退出到上一层界面
exit
执行 xfs_repair /dev/mapper/centos-root
注意这一步可能会比较旧. 需要修复.
执行完成之后 关机机器. 卸载 iso 重新启动.

验证文件系统问题是否解决

time scp -r /app /appback
验证是否还会出现严重问题. 很早之前Oracle数据库取动失败曾经使用过这个方法.
这是第一次遇到文件系统导致应用出问题的.
感觉必须要有足够的技术储备.不然容易临时抓瞎. 这个方法还有一个很大的缺点, 其实不明确到底哪里有坏块
我使用badblocks 检查时 最开始的确是被interrupted的了.
但是没有一个明确的说法来进行验证, 是方案的一个缺憾. 但是我不明确badblocks的问题.

badblocks的简单查看坏块

方式和结果也比较简单

[root@centos76oracle19c ~]# badblocks -v /dev/sda1
正在检查从 0 到 1048575的块
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors) [root@centos76oracle19c ~]# badblocks -v /dev/sda2
正在检查从 0 到 301865983的块
Checking for bad blocks (read-only test):
done
Pass completed, 0 bad blocks found. (0/0/0 errors)

关于badblocks 的检查时间

fdisk -l
磁盘 /dev/sdb:536.9 GB, 536870912000 字节,1048576000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x89eb351b 设备 Boot Start End Blocks Id System
/dev/sdb1 2048 1048575999 524286976 83 Linux 上面是磁盘大小
下面是检查时间 [root@centos76oracle19c ~]# time badblocks -v /dev/sdb1
正在检查从 0 到 524286975的块
Checking for bad blocks (read-only test):
done
Pass completed, 0 bad blocks found. (0/0/0 errors) real 11m10.007s
user 0m15.531s
sys 1m24.419s

ESXi上面虚拟机磁盘损坏修复案例的更多相关文章

  1. esxi 改变虚拟机磁盘格式为精简存储

    最近在部署虚拟机,导入几个之前保存的ovf模板,发现存储已经被耗费的差不多了.检查了下磁盘存储格式 存储类型是 后置备延迟置零 占用空间 简单了解下 三种存储类型 1.厚置备延迟置零: 默认的创建格式 ...

  2. XenServer 5.5 断电重启虚拟机磁盘丢失的修复

    1.现象 公司云平台使用的是XenServer 5.5,版本比较老了.最近几天因为机房改造,导致云环境断电,重启之后发现有2台机器无法ping到,所以再次重启,登录修复网卡,最后发现无法用XenCen ...

  3. 阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例

    阿里云ECS(linux)磁盘满触发的mysql的表异常修复案例 阿里云技术支持:完颜镇江 问题现象: 磁盘空间满了,第一想到的就是删除无用的服务日志或者升级数据盘. 通常是使用du –sh去分析目录 ...

  4. ESXI虚拟机磁盘管理(精简-厚置-精简)

    VMwareESX/ESXi 精简置备(thin)与厚置备(thick)虚拟机磁盘之间转换 VMwareESX/ESXi 虚拟机磁盘thin与thick之间转换 注意:转换前请先关闭虚拟机!!! 一. ...

  5. V7000数据恢复(存储文件系统损坏)案例_北亚数据恢复

    我们今天介绍的数据恢复案例是一起 v7000存储文件系统损坏导致的数据丢失,首先简单介绍一下设备基本情况:发生文件系统损坏的是一台挂载在Windows2003服务器上的v7000存储,划分了一个容量为 ...

  6. SQL Server 损坏修复

    目录: 一. 常见错误解读 二. DBCC CHECKDB 三 .不同部位损坏的应对 四. Database Mirroring和AlwaysOn的页面自动修复功能 一 常见错误解读 SQL Serv ...

  7. SQL Server一致性错误修复案例总结

    今天遇到了一个关于数据库一致性错误的案例.海外工厂的一台SQL Server 2005(9.00.5069.00 Standard Edition)数据库在做DBCC CHECKDB的时候出现了一致性 ...

  8. linux虚拟机磁盘扩展与分区大小调整

    有段时间觉得linux虚拟机上的磁盘不太够用,研究了下其磁盘扩展 1.linux虚拟机磁盘扩展 step1. 先关机在编辑虚拟机中,找到硬盘选项增加空间,进行扩展step2. 进入root fdisk ...

  9. 搭建RAID5(5块硬盘)过程并模拟一块磁盘损坏情况

    首先:在配置RAID5之前我们先来了解一下它.RAID5,RAID是指独立磁盘冗余阵列,是把相同的数据存储在多个硬盘的不同地方的方法.通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能 ...

  10. vmware 因误删Linux 虚拟机磁盘,无法启动处理方法

    有可能我们在做了以下误操作,导致Linux系统无法启动: 1). 磁盘损坏或虚拟机磁盘被我们删除了,而fstab文件没有更新: 2). 由于误操作或其它原因使动态库错误. 1. 首先准备好系统安装盘, ...

随机推荐

  1. 容器中域名解析流程以及不同dnsPolicy对域名解析影响

    本文分享自华为云社区<容器中域名解析流程以及不同dnsPolicy对域名解析影响>,作者:可以交个朋友 . 一.coreDNS背景 部署在kubernetes集群中的容器业务通过coreD ...

  2. 全量通过,华为云GaussDB首批完成信通院全密态数据库评测

    摘要:100%全量通过!基于全栈创新计算架构的全密态数据库华为云GaussDB,完成了中国信通院组织的首批"全密态数据库"产品能力评测. 本文分享自华为云社区<全量通过!华为 ...

  3. 探究Python源码,终于弄懂了字符串驻留技术

    摘要:在本文中,我们将深入研究 Python 的内部实现,并了解 Python 如何使用一种名为字符串驻留(String Interning)的技术,实现解释器的高性能. 每种编程语言为了表现出色,并 ...

  4. 初学开发必看:何为Git,何为SVN

    摘要:在和客户交流代码开发的过程中,时常会先入为主的交流起Git:但在和很多中小型企业交流的过程,发现SVN的模式也被使用得很频繁.那么两者的具体差异有哪些呢? 本文分享自华为云社区<Git V ...

  5. 总结vue3 的一些知识点:​Vue.js 条件语句​

    Vue.js 条件语句 条件判断 v-if 条件判断使用 v-if 指令: v-if 指令 在元素 和 template 中使用 v-if 指令: <div id="app" ...

  6. 火山引擎 DataLeap 助你拥有 Notebook 交互式的开发体验

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   Notebook 是一种支持 REPL 模式的开发环境.所谓「REPL」,即「读取-求值-输出」循环:输入一段 ...

  7. 【Vue】阶段练习

    目录 需求 参考汽车之家 首页 登录功能 展示所有汽车页面 项目 登录页面 跨域请求 一 同源策略 二 CORS(跨域资源共享)简介 三 CORS基本流程 四 CORS两种请求详解 五 Django项 ...

  8. Docker--镜像&&容器基本操作

    1 基础镜像 BusyBox 一个极简版的Linux系统 集成了100多种常用Linux命令 大小不到2MB 适用于简单测试场景 Alpine 一个面向安全的轻型Linux发行版系统 比BusyBox ...

  9. SuperSocket 简单示例

    这是一个SuperSocket 简单示例,包括服务端和客户端. 一.首先使用NuGet安装SuperSocket和SuperSocket.Engine 二.实现IRequestInfo(数据包): 数 ...

  10. 2017年第八届 蓝桥杯C组 C/C++决赛题解

    蓝桥杯历年国赛真题汇总:Here 1.哥德巴赫分解 哥德巴赫猜想认为:不小于4的偶数都可以表示为两个素数的和. 你不需要去证明这个定理,但可以通过计算机对有限数量的偶数进行分解,验证是否可行. 实际上 ...