ESXi上面虚拟机磁盘损坏修复案例

esxi,上面,虚拟机,磁盘,损坏,修复,案例 · 浏览次数 : 332

小编点评

**事故解决步骤总结** **第一个问题:虚拟机磁盘坏块** * 怀疑是虚拟机迁移过程中磁盘出现坏块。 * 解决方法: * 重启系统后,进入grup引导页面,选中第一项然后按“e” 进入编辑模式。 * 通过↓键找到linux16开头行,将ro替换为rw init=/sysroot/bin/sh,然后按ctrl+x 系统重启进入救援模式。 * chroot /sysroot 获取root权限但是发现这种方式也不行解决文件系统损坏-尝试2修改虚拟机的配置 BIOS 设置为 CD-ROM启动修改虚拟机的配置 在设置界面增加上 CentOS的IOS系统影像重启机器。 **第二个问题:应用程序文件系统损坏** * 怀疑是应用程序文件系统损坏导致的。 * 解决方法: * 执行完df -Th 查看磁盘情况,查看最全的文件系统路径执行 umount -lf /dev/mapper/centos-root执行完之后需要 退出到上一层界面exit执行 xfs_repair /dev/mapper/centos-root * 尝试修复文件系统损坏的方法: * 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系统影像重启机器. * 4. 执行完df -Th 查看磁盘情况,查看最全的文件系统路径执行 umount -lf /dev/mapper/centos-root执行完之后需要 退出到上一层界面exit执行 xfs_repair /dev/mapper/centos-root * 5. 尝试修复应用程序文件系统损坏的方法,例如: * 重启系统后,在grub引导界面中选择“回退”选项。 * 通过引导选项中选择“重新安装操作系统”,然后选择“自定义安装”。 * 安装系统时选择“使用手动分区”,选择从“分区表中选择”中选择“ Windows95”。 * 安装完成后,启动计算机,重新安装应用程序。 **其他建议** * 在解决文件系统损坏的情况下,建议备份所有应用程序数据。 * 在修复应用程序文件系统损坏的情况下,建议使用最新版本的操作系统和应用程序。

正文

事故情况

最近同事反馈, 一个文件更新后出现了文件部分不可读的情况
具体现象为: 前端功能打开白屏
后端文件 前面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上面虚拟机磁盘损坏修复案例相似的内容:

ESXi上面虚拟机磁盘损坏修复案例

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

[转帖]ESXi5.5升级到ESXi6.7

之前一直以为ESXi升级必须得 一个版本一个版本升级,不能跨版本,做了个实验结果证实从ESXi5.5可以升级到6.7。该实验是虚拟了一台ESXi上面并没有跑虚机,生产环境进行升级时,能将虚机迁移则迁移(就算升级失败大不了重装,不至于丢失数据)。 1、ESXi的介质分为两类,以6.7为例:VMware

问题记录:VMware vSphere vCenter 7.0 上传文件失败

问题记录:VMware vSphere vCenter 7.0 上传文件失败 环境说明: VC版本:VMware vSphere vCenter 7.0 ESXi版本:VMware vSphere ESXi 7.0 问题现象: 因为新建虚拟机资产前需要先上传iso文件和ova文件,想把文件上传到da

[转帖]VMware ESXi虚拟化平台驱动查询

虚拟化平台升级或者增加服务器时,如果驱动不在官方兼容性列表中,容易导致未知问题。出现问题后,即使有售后服务,官方也不进行支持。所以在正式上线之前将驱动升级到官方兼容性列表中,显得尤为重要。 本文将介绍在VMware ESXi 6.7 U3版本下,查询网卡,HBA及RAID卡驱动版本,以及去官方查看兼

[转帖]VMWare ESXi中,不同的虚拟网卡性能竟然能相差三倍!

https://zhuanlan.zhihu.com/p/525656364 正文共:1024 字 11 图,预估阅读时间:1 分钟 在上个实验中(VPP使用DPDK纳管主机网卡),我们已经初步实现了通过DPDK纳管主机网卡。 不知道大家注意到没有,我们在查看主机网卡的主线信息时,后面的描述信息是不

【转帖】ESXI上安装和使用MegaCli

https://www.diewufeiyang.com/post/964.html 一、第一步获取安装文件,官网目前搜索也找不到了,这里附件提供之前保存的安装文件 点击下载 二、使用VMware vSphere Client连接ESXI在配置里启用ssh服务,然后通过ssh客户端工具连接ESXI,

[转帖]ESXi error: Could not find a trusted signer

24 October 2019河小马VMWareLeave a comment 在ESXi上安装micron 的 msecli vib的时候,有个错误信息显示: Could not find a trusted signer. 解决方案倒是很简单,在你使用的command 后面加上 “–no-sig

[转帖]ESX/ESXi 主机上的每个插槽中安装了多少内存

https://www.cnblogs.com/reachos/p/11242302.html 要确定在 ESX/ESXi 主机上的每个插槽中安装了多少内存,请执行以下操作: 1. 启动ssh服务 2. 登陆esxi主机查看 使用 SSH 客户端登录主机,以 root 用户身份运行以下命令之一:#

VMware vSphere vCenter Server Appliance 7.0安装配置

VMware vSphere vCenter Server Appliance 7.0安装配置 环境说明: 1、将vCenter ServerAppliance部署在ESXi主机上,安装配置好ESXi主机可查看:VMware vSphere ESXi 7.0安装配置 - 张不留行 - 博客园 (cn

更改 ESX 或 ESXi 主机的主机名称

更改 ESX 或 ESXi 主机的主机名称 注意: 如果 ESX/ESXi 主机的管理网络处于 vSphere Distributed Switch 上,请先将网络迁移到 vSphere Standard Switch 然后再继续。有关详细信息,请参见 Disabling vNetwork Dist