云迁移实操疑难案例分享-VMware Converter standalone迁移ubuntu18填坑

      VMware Converter Standalone是Vsphere私有云中非常有效率的迁移工具,前两天用它来迁移一台Ubuntu18.04物理机到云上出现了故障,首先是转换到了97%就出错退出,出错原因是

FAILED: An error occurred during the conversion: 'GrubInstaller::InstallGrub: /usr/lib/vmware-converter/installGrub.sh failed with return code: 127, and message: FATAL: kernel too old Error running vmware-updateGrub.sh through chroot into /mnt/p2v-src-root Command:
chroot "/mnt/p2v-src-root" /vmware-updateGrub.sh "GRUB2" "(hd0)" "(hd0,1)" /vmware-device.map "grub2-install" '

       查看原因是目标VM上的VMware vCenter Converter未正确设置GRUB引导加载程序。如果您尝试在转换后启动Linux虚拟机,则会收到错误消息:加载操作系统错误

VMware P2V Linux转换–加载操作系统时出错

       到VMware官网查看Converter支持的系统列表如下,不支持ubuntu18,所以这个问题要么放弃,要么折腾一下看看是否可以搞好,因为数据复制了2个多小数,所以决定再抢救一下。

      converter迁移步骤梳理: 

       一、converter在资源池中创建目标VM,开启电源,启动目标虚拟机,以将其作为Converter助手服务器运行;

       二、将Converter助手ISO映像连接到目标虚拟机。等待目标虚拟机作为Converter Helper服务器启动。

       三、连接到目标虚拟机上的Converter助手服务器,分区目标虚拟机磁盘并执行格式化操作。

       四、ssh连接到源物理主机,开始从源主机克隆数据挂载在“ /”上的卷,这个过程最耗时间就是复制与网络传输,也是最关键的一步,一般完成这一步源主机的数据就已经完整复制过来了;

       五、重新配置目标虚拟机,安装GRUB引导加载程序,完成引导设置

       六、将目标虚拟机修改引导从助手iso修改回硬盘/boot,复制完成后配置目的虚拟机允许的虚拟机中引导,关闭助手系统,再次启动目标虚拟机完成迁移.

我已经过了关键的第四步,数据已经都复制到目标虚拟机上,需要手工完成第五、六步操作,所以理清一下修复思路:

一、在目标虚拟机修改配置,通过CDROM链接Ubuntu18.04的安装镜像文件通过修改启动项,实现CDROM引导Ubuntu;

二、打开Ubuntu控制台并获得root特权,列出可用磁盘,找到用于分区引导Linux的分区

三、在RAM磁盘上创建目录,并挂载Ubuntu使用的分区

四、检查每个磁盘分区的磁盘标识符。您需要知道包含/ boot目录的分区(或挂载到/ boot目录的分区)的UUID,记住这个新的UUID

五、编辑/ etc / fstab文件,更改/ etc / fstab中每个分区的UUID,以使可以在Linux启动时自动挂载该分区

六、编辑GRUB配置文件,该文件通常位于/ boot / grub /目录中。用新的UUID替换旧的UUID

七、将GRUB重新安装到引导加载程序中,并安装到之前安装引导加载程序的目录中

八、卸载以下所有已挂载的分区,关闭虚拟机重新启动完成修复。

下面给出关键修复步骤:

一、挂载Ubuntu18.04安装iso文件到CDROM

二、设置下次引导至BIOS

 

三、在bios中修改引导顺序,将CDROM放到第一位

四、从CDROM引导后选择try Ubuntu

五、打开Ubuntu控制台并获得root特权

sudo -i

列出可用磁盘

ls -al / dev / sd *

fdisk -l

 

找到用于分区引导Linux的分区

parted /dev/sda

unit MB

p free

 

六、在RAM磁盘上创建目录,并挂载Ubuntu使用的分区

mkdir /mnt/ubuntu

mount /dev/sda1 /mnt/ubuntu

七、查找/dev/sda1的uuid信息并记录下来,这是当前虚拟机真实的uuid

 blkid

 八、编辑GRUB配置文件,该文件通常位于/ boot / grub /目录中。用新的UUID替换旧的UUID

vim /mnt/ubuntu/etc/fstab

原来文件中的uuid是物理机上的uuid,到虚拟机上这个uuid已经发生了变化,需要根据blkid的实际情况进行修正。

 九、编辑GRUB配置文件,该文件通常位于/ boot / grub /目录中。用新的UUID替换旧的UUID

用新的UUID替换旧的UUID。UUID在配置文件中多次出现,手动编辑此值不方便。文本编辑器vim允许您使用以下命令自动用目标文本替换源文本:

:%s / source_text / target_text / g

其中%s表示必须替换整个文本文件中的所有匹配值。

实际上这个文件中出现uuid的位置有七八处之多,还是建议使用上面给的命令自动更换,避免出错。

十、将GRUB重新安装到引导加载程序中,并安装到之前安装引导加载程序的目录中

grub-install --boot-directory = /mnt/ubuntu/boot /dev/sda

十一、卸载以下所有已挂载的分区,关闭虚拟机重新启动完成修复

umount /dev/sda1

init 0

重新配置引导设置以从虚拟硬盘引导,而不是从VM设置中的CD-ROM引导。

再次开启虚拟机,VM可以使用ESXi主机上的GRUB从其虚拟硬盘启动。修复完成。

修复完成后引导成功如下图: