【问题现象】:

Redhat 5.3虚拟机在使用一段时间后进行重启,当再次启动时无法正常进入系统,出现如图1所示错误。

图1无法进入系统

13ac3e8ca469fcda8f50660a11de2150.png

【告警信息】:无

【问题分析】:

(1)通过抓取虚拟机串口日志,虚拟机在启动过程出现如下报错信息。

echo sitescope-command-begin; /bin/df -k /; echo sitescope-command-end

Memory for crash kernel (0x0 to 0x0) notwithin permissible range

WARNING calibrate_APIC_clock: the APIC timer calibration may be wrong.

PCI: PIIX3: Enabling Passive Release on 0000:00:01.0

Red Hat nash version 5.1.19.6 starting

read_urandom: /dev/urandom: open failed: No such file or directory

read_urandom: /dev/urandom: open failed: No such file or directory

Unable to access resume device (/dev/mapper/VolGroup00-LogVol01)

mount: could not find filesystem '/dev/root'

setuproot: moving /dev failed: No such file or directory

setuproot: error mounting /proc: No such file or directory

setuproot: error mounting /sys: No such file or directory

switchroot: mount failed: No such file or directory

Kernel panic - not syncing: Attempted to kill init!

根据串口日志(红色部分)初步判断是系统在启动过程中找不到磁盘导致虚拟机启动失败。

(2)在虚拟机重启前,虚拟机内部有升级PV Driver的操作,怀疑和升级PV Driver相关。

(3)尝试通过挂载Redhat5.3版本的ISO的方式来修复镜像,具体操作步骤如下所示。

a、通过VNC挂载光驱方式挂载ISO(如图2所示),并设置虚拟机从光驱启动(如图3所示)。

图2挂载ISO

5b9a5f656650052f14adcaa08356434e.png

图3从光驱启动

2081ddded4fd3fccbaf30788d9c62d60.png

b、当虚拟机启动出现如图4所示界面时,输入“linux rescue”,然后按回车。

图4界面1

b9c129e044d7b8bba83ca052f3e8e4ce.png

c、选择“OK”。

图5界面2

69e36cac71360158e01f8debfd03f519.png

d、选择“OK”。

图6界面3

323cf6d248350085d26f6f97d56f69a2.png

e、选择“NO”。

图7界面4

e59072ee4346639258670f9ae165087f.png

f、选择“Continue”。

图8界面5

4d1753ae40c5f6a11ded321ad3026d34.png

g、选择“OK”。

图9界面6

4ac95a4bb01acf8476a41c285d200bb1.png

h、按照如下所示操作步骤依次执行完成卸载PV Driver操作。

umount /mnt/sysimage/boot/

mount /dev/mapper/VolGroup00-LogV0l00 /mnt/sysimage/

mount /dev/hda1 /mnt/sysimage/boot/

mount /proc/ /mnt/sysimage/proc/

mount /sys/ /mnt/sysimage/sys/

mount /dev/ /mnt/sysimage/dev/

cd /mnt/sysimage/

chroot ./

cd /etc/.uvp-monitor/

./uninstall

命令执行如图10所示。

图10卸载PV Driver

114cdabc7ac5a517aaf6fb83030c862b.png

i、按照图11所示操作替换系统initrd文件为redhat5.3原始的initrd文件。

cd /boot/

cp –f initrd-2.6.18-128.el5.img.uvpbak initrd-2.6.18-128.el5.img

图11替换系统initrd文件

509f80ec89f4b874c47c78b2a37405b9.png

j、执行“vi /boot/grub/menu.lst”命令打开menu.lst文件,修改default值为1。

图12修改menu.lst

93ea1eb815042e791ca06f3674732d2d.png

同时删除图13中红框的字符串。

图13删除字符串

30b91faf0b2fcf318ea5847e11f9a785.png

修改完成后,保存退出,然后重启虚拟机即可正常进入系统。

(4)在安装PV Driver的过程中会调用系统的mkinitrd命令重新生成的新的initrd文件,通过对比没有问题的initrd包和PV Driver生成的有问题的initrd包,包内部有一个lvm文件大小有差异,进一步查看系统messages日志发现,用户在2014年12月11号更新LVM包版本号到2.02.56-8版本,而官方发布的的Redhat5.3版本的LVM包版本号为2.02.40-6。如图14所示。

图14查看messages日志

b59f712014fb6a3902ca7589c1e533ad.png

在升级PVDriver过程中调用mkinitrd命令(该命令会依赖LVM包)重新生成initrd文件,由于高版本LVM命令跟系统不兼容,导致生成的initrd文件有异常,当虚拟机重启时即会出现反复重启现象。

(5)在不安装PVDriver的情况下,单纯的通过mkinitrd命令重新生成initrd文件,结果虚拟机也同样会出现反复重启现象。使用物理机安装Redhat5.3版本,然后将LVM包单独升级到2.02.40-6版本,使用mkinitrd命令重新生成initrd文件,重启服务器也会出现跟本案例相同的现象。

综上所述,该问题是由于虚拟机内部安装了一个不兼容Redhat5.3系统的LVM包,生成的initrd文件有异常,最终导致虚拟机无法启动。

【解决方法】:

卸载2.02.56-8版本的LVM包,然后重新安装Redhat5.3自带的2.02.40-6版本LVM包。

操作步骤如下:

(1)使用root账号登录虚拟机,执行“rpm -qa | grep lvm2”命令查询系统上LVM版本号是否为2.02.56-8版本。如图15所示。

图15查询LVM版本号

a12d6648c4f3f8b641a2e6bc32d388a8.png

(2)当LVM版本号为2.02.56-8时,使用“rpm -e --nodeps lvm2-2.02.56-8.el5”命令卸载该rpm包。如图16所示。

图16卸载rpm包

edb24209ac795d6d94c54e211135ace9.png

(3)从官方的Redhat5.3版本的ISO文件中获取LVM包lvm2-2.02.40-6.el5.x86_64.rpm,并使用“rpm -Uvh lvm2-2.02.40-6.el5.x86_64.rpm”命令安装该rpm包。

图17安装rpm包

41814d98ea5b11d9fa06442feb59d835.png

(4)使用“mkinitrd -v -f /boot/initrd-2.6.18-128.el5.img 2.6.18-128.el5”命令重新生成新的initrd文件。

图18重新生成新initrd文件

e6a9444125f895a3312e2ef417d98ca8.png

【总结&建议】:

同版本的RPM包需要匹配相应版本的OS系统,不然可能会出现系统不兼容的异常情况。如果需要安装或者升级RPM包,尽量使用跟所使用OS版本匹配的RPM包。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐