磁盘格式转换

qemu-img convert -O vmdk -o adapter_type=lsilogic centos7.qcow2 centos7-new.vmdk 
qemu-img convert -O vmdk -o ?
adapter_type     Virtual adapter type, can be one of ide (default), lsilogic, buslogic or legacyESX
subformat        VMDK flat extent format, can be one of {monolithicSparse (default) | monolithicFlat | twoGbMaxExtentSparse | twoGbMaxExtentFlat | streamOptimized} 

根据帮助信息可知,转换后的vmdk磁盘,其subformat的格式是单片稀疏型,不能被ESXi虚拟机直接使用,需要进行二次转换。这里我们可以通过qemu-img convert -O vmdk -o adapter_type=lsilogic,subformat=monolithicFlat一并转换,但是转换后的
centos7-flat.vmdk大小是创建磁盘的大小,可能会很大,不便于传输。

将转换好的vmdk磁盘文件上传到ESXi服务器,然后放开ESXi服务器的SHELL访问权限(启动SSH服务),然后在其上进行二次磁盘转换。

二次磁盘转换

 对于不同版本的ESXi服务器来说,这里转换的格式会有差异,比如ESXi6.7上默认是zeroedthick,通过vsphere web client访问添加磁盘,无法修改:“scsi0:0”的磁盘类型 2 不受支持或无效。请确保磁盘已导入

zeroedthick          :厚置备延迟置零
thin                      :精简置备
eagerzeroedthick:厚置备置零

vmkfstools -i centos7-new.vmdk -d thin centos7-new2.vmdk   ## 或
vmkfstools -i centos7-new.vmdk -d zeroedthick centos7-new2.vmdk
vmkfstools -H
-d --diskformat [zeroedthick|thin|eagerzeroedthick]
-a --adaptertype [buslogic|lsilogic|ide|lsisas|pvscsi]

根据帮助信息可知,我们在使用qemu-img转换时,不带-o options直接转换亦可;在第二次转换的时候使用 -d thin -a lsilogic进行设置。

创建虚机并启动

创建虚拟机,并在磁盘设置环节选择“使用现有磁盘”;然后启动虚拟机。GRUB选择第一行正常启动如果失败,可以选择rescue模式启动。

启动失败问题

正常启动失败报:
dracut-initqueue[286]: Warning: dracut=initqueue timeout - starting timeout scripts
……
Warning:/dev/mapper/centos-root does not exist
Warning: /dev/centos/root does not exist
Warning: /dev/centos/swap does not exist

Generating "/run/initramfs/rdsosreport.txt"
blk_update_request: I/O error, dev fd0, sector 0
Entering emergency mode. Exit the shell to continue.

进入应急模式后,执行exit继续,一直卡死,无法正常启动。

解决:
方法一:重启虚机,GRUB进入救援模式,然后在线升级系统:yum -y upgrade ,然后就能正常启动。
方法二:方法一太粗暴了,且并没有找到问题所在。我们试着分析一下问题出在哪里。之前说了可以进入到rescue模式,说明FileSytem没问题,GRUB配置应该也没大问题。所以,怀疑是initramfs出了问题。再由方法一,我们知道升级kernel之后,对系统并没有大改动,可能是重新生成了新的initramfs。
根据上面的分析,我们加载ISO安装镜像,然后重启,troubleshooting --> 进入救援模式,输入1(continue)。执行下面的命令重新生成initramfs:

chroot /mnt/sysimage 
dracut --regenerate-all -f && grub2-mkconfig -o /boot/grub2/grub.cfg
exit
reboot

到此,成功修复了问题,可以正常启动了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐