从 RAMDISK 损坏恢复 RHEL 6 或 CentOS 6 客户机操作系统
search cancel

从 RAMDISK 损坏恢复 RHEL 6 或 CentOS 6 客户机操作系统

book

Article ID: 340009

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

Symptoms:
免责声明:本文为 Recovering RHEL 6 or CentOS 6 guest operating system from RAMDISK corruption (2086520) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。


在 Linux 环境(RHEL 或 CentOS 6)中安装、升级或卸载 VMware Tools 之后,如果在未从操作系统关闭虚拟机的情况下突然关闭 RHEL 6 或 CentOS 6 虚拟机电源,由于向磁盘写入不完整的 RAMDISK 映像而导致 RAMDISK 映像文件损坏,客户机操作系统可能会在下次重新引导期间发生故障。在下次引导客户机操作系统时,控制台中会报告类似以下内容的错误:

RAMDISK: 不完整写入 (31522 != 32768) (RAMDISK: incomplete write (31522 != 32768))
写入错误 (write error)
内核不稳定 - 未同步: VFS: 无法在未知块 (0,0) 上挂载根 fs (Kernel panic - not syncing : VFS: Unable to mount root fs on unknown-block(0,0))


Environment

VMware vSphere ESXi 5.1
VMware vSphere ESXi 5.0
VMware vSphere ESXi 5.5

Resolution

这不是 VMware 问题。有关详细信息,请咨询客户机操作系统供应商。

要解决此问题,需要通过在 Linux 修复模式下创建新的 initramfs 映像将具有已损坏 RAMDISK 映像文件的 Linux 客户机操作系统修复为完整的引导状态。

要创建新的 initramfs 映像并从已损坏的 RAMDISK 映像文件修复 RHEL/CentOS 6 客户机操作系统,请执行以下步骤:

  1. 使用从其安装 CentOS 或 RHEL 客户机的 ISO 映像引导虚拟机。Installing guest operating systems from ISO images (1002) 中介绍了 ISO 安装过程。要从 ISO 引导现有虚拟机,请使用该过程中的步骤 8 和 9。

    注意:截至 2015 年 1 月 30 日,上述链接正确无误。如果您发现该链接已损坏,请提供反馈,VMware 员工将会更新该链接。

  2. 选择修复已安装系统

  3. 为此修复选择一种语言和键盘类型,然后单击本地 CD/DVD 作为修复方法。

  4. 选择作为网络连接选项,然后选择继续作为恢复选项以在读/写模式下挂载实际的根文件系统。

  5. 将需要修复的根文件系统挂载到 /mnt/sysimage 位置,然后启动 shell。

  6. 要将该根文件系统更改为实际的根文件系统,请运行以下命令:

    # chroot /mnt/sysimage

  7. 要标识默认的内核版本和 /boot/grub/grub.conf 中的 initramfs 映像,请运行以下命令:

    # cat /boot/grub/grub.conf例如,如果内核版本为 2.6.32-431.23.3.el6.x86_64,则显示的输出如下:

    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title Red Hat Enterprise Linux Server(2.6.32-431.23.3.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-431.23.3.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS
    LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=128M
    rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-431.23.3.el6.x86_64.img
    title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS
    LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=128M
    rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-358.el6.x86_64.img

    在以上示例中,default0 将要使用的第一个 title 选项标识为默认值,将 title 选项行中的对应内核版本标识为 2.6.32-431.23.3.el6.x86_64,将 initramfs 映像文件标识为 /boot/initramfs-2.6.32-431.23.3.el6.x86_64.img

  8. 标识 initramfs 映像之后,通过运行以下命令在创建新的 initramfs 映像之前备份原始 initramfs 映像:

    # cp /boot/initramfs-2.6.32-431.23.3.el6.x86_64.img /boot/initramfs-2.6.32-431.23.3.el6.x86_64.img.ori

  9. 要创建新的 initramfs 映像,请运行 dracut 命令:

    # /sbin/dracut -f /boot/initramfs-`uname -r`.img `uname -r`

    例如,要为内核版本 2.6.32-431.23.3.el6.x86_64 创建新的 initramfs 映像文件 /boot/initramfs-2.6.32-431.23.3.el6.x86_64.img,请运行 dracut 命令:

    # /sbin/dracut -f /boot/initramfs-2.6.32-431.23.3.el6.x86_64.img 2.6.32-431.23.3.el6.x86_64

  10. 要重新引导系统并验证客户机是否从 RAMDISK 映像文件成功引导,请运行以下命令:

    # reboot

此问题在下列版本中已解决:

ESXi 版本状态
5.0在 VMware ESXi 5.0, Patch ESXi500-201408402-BG:Updates tools-light (2080819) 中已修复
5.1

在 VMware ESXi 5.1, Patch ESXi510-201503402-BG:Updates tools-light (2099295) 中已修复

5.5

VMware ESXi 5.5, Patch ESXi550-201509202-UG:Updates tools-light (2110233) 中已修复



Additional Information

Recovering RHEL 6 or CentOS 6 guest operating system from RAMDISK corruption