文档目录

概述

物理服务器正常运行过程中,若突发机房断电且无备用电源,会造成其上的云主机和物理机的硬盘磁头骤停或写入位置错误,进而导致数据文件乃至系统文件损坏,致使云主机和物理机无法正常启动系统。本文档涵盖云主机系统和物理机系统两类故障场景,并针对不同故障场景提供对应修复方案,供运维工程师手动修复系统时参考使用。

云主机系统修复

物理机异常断电时,不同类型的云主机系统故障的类型和程度均可能不同。本章节主要阐述以下两种类型云主机故障场景和修复方案:

Windows云主机系统修复

Windows云主机无法进入系统

故障场景

若Windows云主机启动时出现The Boot Configuration Data for your PC is missing or contains errors提示,推测故障原因可能为物理机异常断电,造成云主机引导文件丢失,云主机系统保留分区被标记为非活动分区,导致云主机启动时无法进入系统。

图 1所示:
图 1. 报错提示


修复方案

针对上述故障场景,可尝试参考以下步骤排查解决:
  1. 登录云平台,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,进入云主机界面。选择故障云主机,在该云主机详情页的基本信息中,点击编辑平台和操作系统,弹出修改平台和操作系统界面,确认云主机类型为Windows云主机。
    图 2所示:
    图 2. 云主机平台和操作系统


  2. 在故障云主机详情页中,点击配置信息 > 资源配置 > 虚拟光驱,进入虚拟光驱界面。点击操作 > 加载ISO,加载PE系统ISO文件至故障云主机。
    Note: 建议选择主流PE系统或工程师常用型号PE系统。
  3. 点击更多操作 > 系统配置 > 设置启动顺序,弹出设置启动顺序界面。将云主机启动顺序设置为CdRom (光盘)启动,并勾选仅在下一次启动生效,之后将恢复从硬盘启动选项。
    图 3所示:
    图 3. 设置启动顺序


  4. 重启云主机进入PE系统,打开计算机管理界面,点击计算机管理 (本地) > 存储 > 磁盘管理,进入磁盘管理界面。右键点击系统保留分区,选择将分区标记为活动分区,修改后重启云主机,系统恢复。
    图 4所示:
    图 4. 标记活动分区


Windows系统文件损坏

故障场景

相关系统文件正在执行写操作时,突发物理机断电,造成Windows系统盘/windows/system32目录下文件损坏,导致云主机无法正常开机。

修复方案

针对上述故障场景,可尝试参考以下步骤排查解决:
  1. 登录云平台,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,进入云主机界面。选择故障云主机,点击操作 > 快照与镜像 > 创建镜像,弹出创建镜像界面,为云主机创建镜像备份。
    Note: 执行系统修复操作前,需为云主机创建备份,避免因系统修复过程中对云主机系统文件产生不可逆损坏,而造成数据丢失。
    图 5所示:
    图 5. 创建镜像


  2. 在故障云主机详情页中,点击配置信息 > 资源配置 > 虚拟光驱,进入虚拟光驱界面。点击操作 > 加载ISO,加载PE系统ISO文件至故障云主机。
    Note: 建议选择主流PE系统或工程师常用型号PE系统。
  3. 点击更多操作 > 系统配置 > 设置启动顺序,弹出设置启动顺序界面。将云主机启动顺序设置为CdRom (光盘)启动,并勾选仅在下一次启动生效,之后将恢复从硬盘启动选项。
    图 6所示:
    图 6. 设置启动顺序


  4. 重启云主机进入PE系统,打开此电脑界面,选中磁盘后右键点击属性,弹出磁盘属性界面,点击工具 > 检查,启动Windows磁盘修复。
    图 7所示:
    图 7. Windows磁盘修复


  5. 修复完成后,测试能否正常打开/windows/system32目录下config文件夹,并重启云主机测试是否修复成功。若仍未解决,需重新进入PE系统,将/windows/system32/config/Regback目录下所有文件拷贝至/windows/system32/config目录下后,重启恢复。

Windows云主机出现蓝屏

故障场景

物理机断电恢复后,若重启Windows云主机出现蓝屏,无法正常开机。推测故障原因可能为Windows云主机驱动损坏,需要重新安装驱动。

图 8所示:
图 8. Windows云主机蓝屏


修复方案

针对上述故障场景,可尝试参考以下步骤排查解决:
  1. 登录云平台,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,进入云主机界面。选择故障云主机,在该云主机详情页的基本信息中,点击编辑平台和操作系统,弹出修改平台和操作系统界面,根据实际情况修改云主机平台和操作系统。
    图 9所示:
    图 9. 修改平台和操作系统


  2. 在故障云主机详情页的高级配置信息中,关闭Virtio开关,修改云主机磁盘类型。
    图 10所示:
    图 10. 关闭Virtio


  3. 安装性能优化工具,重新安装驱动后,Windows云主机恢复。
    图 11所示:
    图 11. 安装性能优化工具


Linux云主机系统修复

Linux云主机grub.cfg文件丢失

故障场景

若Linux云主机系统进入GRUB命令行(grub>)模式,推测故障原因可能为Linux云主机/boot/grub2/grub.cfg文件丢失,导致系统无法正常启动。

修复方案

针对上述故障场景,本章节将针对不同模式的Linux云主机分别介绍对应的修复方案:
UEFI模式云主机可尝试参考以下步骤排查解决:
  1. 打开云主机控制台,执行ls命令查询磁盘分区。可根据命令返回结果判断磁盘分区,其中hd表示云主机磁盘,gpt表示磁盘分区,例如:(hd0, gpt1)表示磁盘0上的分区1。
    图 12所示:
    图 12. 查询磁盘分区


  2. 执行ls (hd0,gpt1)/命令查看分区1中的文件。通过查看分区中的文件,查询grub2grub目录所在分区,即boot分区。本场景中,boot分区为 (hd0, gpt2)。
    图 13所示:
    图 13. 查看分区文件


  3. 执行ls命令找到根分区所在分区。根分区下通常存在/etc/dev/proc等目录。
  4. 执行cat (lvm/centos-root)/etc/fstab命令查看挂载信息,并记录根目录所在分区信息。
    Note: 系统分区方式为LVM时,可尝试通过LVM类型系统根分区路径/dev/mapper/centos-root查看挂载信息。
    图 14所示:
    图 14. 查看挂载信息


  5. 执行set root=(hd0,gpt2)命令设置引导分区,即boot分区,本场景为(hd0, gpt2)。
    图 15所示:
    图 15. 设置引导分区


  6. 执行以下命令,加载内核启动映像,设置根分区:
    grub> linuxefi /vmlinuz-3.10.0-862.e17.x86_64 root=uuid=0404c631-636f-4983-9e7e-7d5375a38611
    • root=后填写步骤4中查看到的根分区UUID信息。
    • 若步骤4中查看到的根目录挂载信息为/dev/vda1形式,则填写root=/dev/vda1
    • 若系统分区类型为LVM,则可以尝试填写root=/dev/mapper/centos-root
    图 16所示:
    图 16. 加载内核启动映像


  7. 设置Linux内核映像的初始ramdisk,输入initrdefi /initramfs-命令后,可按tab键补全命令。
    图 17所示:
    图 17. 设置初始ramdisk


  8. 执行上述操作后,输入执行boot命令,启动并进入系统。
    图 18所示:
    图 18. 启动系统


  9. 执行grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg命令,重新生成grub.cfg文件。文件生成后重启云主机,检查确认grub文件是否正常。至此UEFI模式云主机系统修复已完毕。
    图 19所示:
    图 19. 生成grub.cfg文件


Legacy模式云主机可尝试参考以下步骤排查解决:
  1. 打开云主机控制台,执行ls命令查询磁盘分区。
    图 20所示:
    图 20. 查询磁盘分区


  2. 执行ls (hd0,msdos1)/grub2命令或ls (hd0,msdos2)/grub2命令查询grub2目录所在分区位置,即boot分区。执行上述命令,返回结果为device.map i386-pc/ locale/ fonts/ grubenv的即为boot分区。本场景中,boot分区为 (hd0,msdos1)。
    图 21所示:
    图 21. 查询分区


  3. 执行set root=(hd0,msdos1)命令,设置引导分区,即系统分区。
    图 22所示:
    图 22. 设置引导分区


  4. 执行以下命令,挂载根设备,将boot分区设置为启动分区:
    Note: 需根据实际情况确定系统位置,可查看参考正常物理机。
    grub> linux16 /vmlinuz-3.10.0-957.27.6.da38eal.el7.x86_64 root=/dev/vda1
    图 23所示:
    图 23. 挂载根设备


  5. 执行以下命令,指定初始化镜像:
    grub> initrd16 /initramfs-3.10.0-957.27.6.da38eal.el7.x86_64.img
    图 24所示:
    图 24. 指定初始化镜像


  6. 执行上述操作后,输入执行boot命令,启动并进入系统。
    图 25所示:
    图 25. 启动系统


  7. 执行grub2-mkconfig -o /boot/grub2/grub.cfg命令,重新生成gurb.cfg文件。
    图 26所示:
    图 26. 生成grub.cfg文件


  8. 执行ll /boot/grub2命令,查看grub.cfg文件是否存在。至此Legacy模式云主机系统修复已完毕。
    图 27所示:
    图 27. 查看grub.cfg文件


Linux云主机grub.cfg文件损坏

故障场景

若Linux云主机无法进入系统,推测原因可能为物理机异常断电造成系统/boot/grub文件损坏,导致云主机无法执行系统命令,进入系统失败。

修复方案

针对上述故障场景,可尝试参考以下步骤排查解决:
Note: 需根据环境具体报错信息进行对应修复。
  1. 登录云平台,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,进入云主机界面。选择故障云主机,点击操作 > 电源 > 关闭电源,关闭云主机电源。
  2. 在故障云主机详情页中,点击配置信息 > 资源配置 > 虚拟光驱,进入虚拟光驱界面。点击操作 > 加载ISO,为云主机加载CentOS ISO文件。
    Note: 若虚拟光驱已加载ISO文件,需创建一个新的光驱后加载CentOS ISO文件。
    图 28所示:
    图 28. 加载ISO


  3. 点击更多操作 > 系统配置 > 设置启动顺序,进入设置启动顺序界面,修改云主机启动顺序为CdRom (光盘)启动。
    图 29所示:
    图 29. 设置启动顺序


  4. 重启该云主机,打开控制台,选择Troubleshooting
    图 30所示:
    图 30. 选择Troubleshooting


  5. 选择Rescue a CentOS system进入救援模式。
    图 31所示:
    图 31. 救援CentOS系统


  6. 在救援模式界面,输入1以继续操作。
    图 32所示:
    图 32. 输入1以继续操作


  7. 根据系统提示,执行chroot /mnt/sysimage命令,将根目录切换至硬盘系统的根目录中。
    图 33所示:
    图 33. 切换根目录


  8. 执行ls /boot/grub命令,检查/boot/grub文件,发现grub目录已丢失。
    图 34所示:
    图 34. 检查/boot/grub文件


  9. 执行lsblk命令,查看磁盘信息。
    图 35所示:
    图 35. 查看磁盘信息


  10. 执行grub2-install --boot-directory=/boot /dev/vda命令,重新安装grub2文件。
    图 36所示:
    图 36. 安装grub2文件


  11. 执行grub2-mkconfig -o /boot/grub2/grub.cfg命令,重新生成grub.cfg文件。
    图 37所示:
    图 37. 生成grub.cfg文件


  12. 重启云主机后,可正常进入系统。

Linux云主机MBR损坏

故障场景

物理机断电恢复后,若Linux云主机无法正常启动,此时推测原因可能为云主机硬盘主引导记录(Master Boot Record)损坏导致云主机启动失败。

修复方案

针对上述故障场景,可尝试参考以下步骤排查解决:
Note: 需根据环境具体报错信息进行对应修复。
  1. 登录云平台,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,进入云主机界面。选择故障云主机,点击操作 > 电源 > 关闭电源,关闭云主机电源。
  2. 在故障云主机详情页中,点击配置信息 > 资源配置 > 虚拟光驱,进入虚拟光驱界面。点击操作 > 加载ISO,为云主机加载CentOS ISO文件。
    Note: 若虚拟光驱已加载ISO文件,需创建一个新的光驱后加载CentOS ISO文件。
    图 38所示:
    图 38. 加载ISO


  3. 点击更多操作 > 系统配置 > 设置启动顺序,进入设置启动顺序界面,修改云主机启动顺序为CdRom (光盘)启动。
    图 39所示:
    图 39. 设置启动顺序


  4. 重启该云主机,打开控制台,选择Troubleshooting
    图 40所示:
    图 40. 选择Troubleshooting


  5. 选择Rescue a CentOS system进入救援模式。
    图 41所示:
    图 41. 救援CentOS系统


  6. 在救援模式界面,输入1以继续操作。
    图 42所示:
    图 42. 输入1以继续操作


  7. 根据系统提示,执行chroot /mnt/sysimage命令,将根目录切换至硬盘系统的根目录中。
    图 43所示:
    图 43. 切换根目录


  8. 执行hexdump -C /dev/vda -n 521 -v命令,检查根云盘前521字节信息,发现MBR区域已损坏。
    图 44所示:
    图 44. 检查MBR区域


  9. 执行grub2-install /dev/vda命令,修复磁盘MBR。
    图 45所示:
    图 45. 修复磁盘MBR


  10. 执行hexdump -C /dev/vda -n 416 -v命令,再次检查根云盘MBR区域信息,发现返回结果非全0,MBR区域已修复。
    图 46所示:
    图 46. 检查MBR区域


  11. 返回云平台,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,进入云主机界面。选择问题云主机,点击操作 > 系统配置 > 设置启动顺序,进入设置启动顺序界面,修改云主机启动顺序为HardDisk (硬盘)启动。
    图 47所示:
    图 47. 设置启动顺序


  12. 重启云主机后,可正常进入系统。

Linux云主机启动进入紧急模式

故障场景

若Linux云主机启动后,系统进入紧急模式,此时推测原因可能为物理机意外断电导致/etc/fstab/文件挂载分区所在的磁盘损坏。

修复方案

针对上述故障场景,可尝试参考以下步骤排查解决:
  1. 在紧急模式界面中,输入操作系统密码,进入紧急模式进行修复。
    图 48所示:
    图 48. 输入操作系统密码


  2. 修改对应配置文件。
    Note:
    • 若存储设备正常,需将/etc/fstab配置文件中的错误挂载信息修改正确。
    • 若存储设备异常,需将异常设备的挂载信息进行删除或注释。
    图 49所示:
    图 49. 修改配置文件




  3. 执行mount -a命令,重新挂载/etc/fstab配置文件分区信息。
    图 50所示:
    图 50. 重新挂载分区信息


  4. 重启云主机,即可正常进入系统。

Linux云主机启动出现Attempted to kill init报错

故障场景

本地存储环境下物理机异常断电恢复后,启动Linux云主机时,出现Attempted to kill init报错。

修复方案

针对上述故障场景,可尝试参考以下步骤排查解决:
  1. 登录云平台,点击资源中心 > 云资源池 > 虚拟资源 > 云主机,进入云主机界面。选择故障云主机,点击操作 > 电源 > 关闭电源,关闭云主机电源。
  2. 在故障云主机详情页中,点击配置信息 > 资源配置 > 虚拟光驱,进入虚拟光驱界面。点击操作 > 加载ISO,为云主机虚拟光驱加载CentOS 6.9的ISO文件。
    Note: 若虚拟光驱已加载ISO文件,需创建一个新的光驱再加载CentOS 6.9 ISO文件。
    图 51所示:
    图 51. 加载ISO文件


  3. 点击更多操作 > 系统配置 > 设置启动顺序,进入设置启动顺序界面,修改云主机启动顺序为CdRom (光盘)启动,并勾选仅在下一次启动生效,之后将恢复从硬盘启动选项。
    图 52所示:
    图 52. 设置启动顺序


  4. 重启云主机,进入安装启动菜单,选择Rescue installed system进入救援模式。
    图 53所示:
    图 53. 进入救援模式


  5. 选择语言和键盘,语言默认为English,键盘默认为us
    图 54图 55所示:
    图 54. 选择语言


    图 55. 选择键盘


  6. 按需设置网络,若需要设置网络选择Yes,若不需要则选择No
    图 56所示:
    图 56. 设置网络


  7. 若选择设置网络,进入以下界面选择网卡。
    图 57所示:
    图 57. 选择网卡


  8. 进入以下界面设置IP。
    Note: IP设置需与云主机原IP地址保持一致。
    图 58所示:
    图 58. 设置IP


  9. 进入选择Rescue选项界面,选择Continue
    图 59所示:
    图 59. 选择Rescue






  10. 原系统挂载于/mnt/sysimage路径下,若需切换至root环境下,执行chroot /mnt/sysimage命令即可。
  11. 选择shell Start shell进入shell命令行模式。
    图 60所示:
    图 60. 进入shell命令行模式


  12. 在shell命令行模式界面中,输入执行chroot /mnt/sysimage命令,将/mnt/sysimage目录下文件切换至根目录下,出现error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory报错。
    图 61所示:
    图 61. 执行chroot命令


  13. 在一台正常的配置相同的云主机中,执行ls -l libc.so.6命令,查找libc.so.6文件所在目录及文件类型。
    图 62所示:
    图 62. 查找libc.so.6文件


    1. 在故障云主机系统中,执行cd /mnt/sysimage/lib64命令进入该目录。
    2. 执行ls libc.so.6命令,查看libc.so.6文件是否存在,发现无此文件。
    3. 执行ls libc-2.12.so命令,查看libc-2.12.so文件,发现存在此文件。
    4. 执行ln -s libc-2.12.so libc.so.6命令,创建软链接。
    5. 执行ls -l libc.so.6命令查看文件,发现创建成功。
    6. 重新执行chroot /mnt/sysimage命令,成功切换至系统根目录。
    图 63所示:
    图 63. 切换系统根目录


  14. 输入执行exit命令退出后,重启云主机,成功进入系统。

物理机系统修复

物理机系统盘硬盘故障

修复方案

针对物理机系统硬盘故障场景,可尝试参考以下步骤排查解决:
  1. 准备新硬盘,新硬盘需满足以下条件:
    • 置换的硬盘应是同型号、同系列、同容量的硬盘。
    • 硬盘需是全新硬盘或者为未分区、未格式化的硬盘。
    • 硬盘需插回原RAID通道,即原故障硬盘的插槽。
  2. 确认故障硬盘所在服务器的位置,避免拔除正常硬盘。
  3. 确认硬盘是否支持热插拔。若故障硬盘所在物理机上运行着较为重要的云主机,建议先将云主机热迁移至其它物理机,避免云主机因物理机更换硬盘期间异常重启而受到影响。
以下为物理机系统盘硬盘故障修复的详细步骤,可供参考:
  1. 登录云平台,点击资源中心 > 硬件设施 > 计算设施 > 物理机,进入物理机界面。选择故障硬盘所在的物理机,在该物理机详情页的关联资源子页面中,点击云主机,查看该物理机上运行的云主机。
    图 64所示:
    图 64. 查看云主机


  2. 选中待迁移的云主机,点击操作 > 更改物理机,进入更改物理机界面,选择目标物理机进行迁移。
    Note:
    • 建议勾选启用自动收敛模式以确保云主机热迁移成功。
    • 为保证迁移任务效率,建议云主机并发迁移任务数量不超过三个。
    图 65所示:
    图 65. 更改物理机


  3. 云主机迁移完成后,返回至物理机界面。选择故障硬盘所在的物理机,点击操作 > 进入维护模式,等待物理机启用状态更新为进入维护模式
    图 66所示:
    图 66. 物理机进入维护模式


  4. SSH登录至待变更服务器系统,执行sync && sync && poweroff命令,安全关闭待变更服务器。
  5. 待服务器完全停止后,更换服务器上的故障硬盘,插入新硬盘。
  6. 查看新硬盘状态,可参考以下两种方式查看:
    • 启动服务器,进入阵列卡配置界面,查看确认新硬盘状态为Rebuild,表示硬盘数据正在同步中。
      图 67所示:
      图 67. 查看硬盘状态


    • 登录服务器带外管理页面,查看新硬盘状态和数据同步进度。
      图 68所示:
      图 68. 查看硬盘状态和数据同步进度


  7. 重启服务器,并引导至操作系统,检查确认对应的管理网络和存储网络均可正常通信。执行zs-show-network命令,检查节点网卡状态。
  8. 登录云平台,点击资源中心 > 硬件设施 > 计算设施 > 物理机,进入物理机界面。选择进入维护模式的物理机,点击操作 > 启用,启用物理机。等待物理机连接成功后,可将云主机迁移回该物理机。

物理机底层系统故障

故障场景

若物理机系统提示无法正常开机,推测原因可能为物理机异常断电造成系统或引导文件损坏,由此可能出现以下故障场景:
  • 物理机grub.cfg文件丢失
  • 物理机grub.cfg文件损坏
  • 物理机MBR损坏
  • 物理机进入紧急模式
  • 物理机启动出现Attempted to kill init报错

修复方案

针对上述故障场景,可参考本文档Linux云主机系统修复具体章节,对物理机底层系统故障进行相应修复。

操作系统修复指南 | 4.8.38 | ZStack Cloud · ZCF | ZStack 资源中心