ROCKY LINUX服务器P2V迁移后虚拟机无法启动

发布时间:  2016-02-26 浏览次数:  313 下载次数:  0
问题描述
某局,使用Rainbow工具做P2V迁移,源端操作系统版本为ROCKY LINUX 6.0.42.41,迁移后的虚拟机无法启动,提示找不到根分区。
处理过程

经分析定位,问题原因是initrd镜像中无磁盘控制器驱动模块,解决步骤如下:

步骤1.加载操作系统安装光盘到目的虚拟机,从光盘启动,进入救援模式;

步骤2.执行如下命令,挂载根分区 ;
mkdir /mnt/root
mount /dev/xda1 /mnt/root

步骤3.执行如下命令,确认initrd镜像中是否包含IDE驱动模块;
zcat /mnt/root/boot/initrd.gz|cpio -t|grep -iE "ata_piix.ko|sd_mod.ko"

步骤4.查询结果显示initrd镜像中不包含IDE驱动模块,执行如下命令,尝试重新生成initrd.gz,发现mkinitrd命令缺失;
mount -o bind /proc /mnt/root/proc
mount -o bind /dev /mnt/root/dev
mount -o bind /sys /mnt/root/sys
chroot /mnt/root
mkinitrd –with ata_piix –with sd_mod /boot/initrd.gz kerver-name

步骤5.尝试采用手工加入的方式重新生成initrd.gz,将initrd.gz解压,把驱动模块拷贝到对应目录,命令如下;
chroot /mnt/root
mkdir /tmp/initrd
cd /tmp/initrd
zcat /boot/initrd.gz |cpio -idm

root@localhost initrd]# ls
drwxr-xr-x  2 root root 4096  9月 25 14:34 bin
drwxr-xr-x  2 root root 4096  9月 25 14:34 dev
drwxr-xr-x  4 root root 4096  9月 25 14:34 etc
-rwxr-xr-x  1 root root 1607 2015-03-06  init
drwxr-xr-x  2 root root 4096  9月 25 14:34 lib
drwxr-xr-x  2 root root 4096 2015-03-06  loopfs
drwxr-xr-x  2 root root 4096 2015-03-06  proc
lrwxrwxrwx  1 root root    3  9月 25 14:34 sbin -> bin
drwxr-xr-x  2 root root 4096 2015-03-06  sys
drwxr-xr-x  2 root root 4096 2015-03-06  sysroot

cp /lib/modules/kernel-version/kernel/drivers/ata/ata_piix.ko  ./lib
cp /lib/modules/kernel-version/kernel/drivers/scsi/sd_mod.ko  ./lib

步骤6.修改init文件,添加如下内容,加载对应的模块,命令如下;
root@localhost initrd]# vi init
echo "Loading dm-snapshot.ko module"
insmod /lib/dm-snapshot.ko

echo "Loading sd_mod.ko module"
insmod /lib/sd_mod.ko

echo "Loading ata_piix.ko module"
insmod /lib/ata_piix.ko

步骤7.执行如下命令,重新生成initrd.gz;
cd /tmp/initrd
find . |cpio --quiet -c -o|gzip >/boot/initrd.gz

步骤8.修改menu.lst,内核是3.0,IDE硬盘控制器上的设备识别为/dev/sdx,并且内核默认会模拟XEN PCI总线,而/boot/initrd.gz不带有任何xen的驱动模块,所以
需要添加xen_emul_unplug=never,让xen pci总线不工作;
vi /boot/grub/menu.lst
kernel /vmlinuz-3.0  ro root=/dev/sda1 xen_emul_unplug=never


END