转换磁盘镜像格式之后导入KVM系统无法启动,但是可以进入恢复模式,可能是virtio的内核模块没有加载,把磁盘改为IDE模式后正常。


但是IDE模式效率没有virtio高,这时可以手动加载virtio模块,方法参考腾讯云帮助文档

https://cloud.tencent.com/document/product/213/9929


grep -i virtio /boot/config-$(uname -r)

检查内核模块是否包含virtio

CONFIG_VIRTIO_BLK=m
CONFIG_VIRTIO_NET=m

有这两项,说明有了这个模块,如果后面的m是y,那么说明这个不是作为模块加载的,而是编译到内核中了,编译到内核中的理论上不应该启动不了,所以可能是其他问题,请略过此文,找别的解决方法,如果是m,请继续

lsinitrd /boot/initramfs-$(uname -r).img | grep virtio

initramfs是否包含virtio驱动

Arguments: -f --add-drivers ' virtio_blk virtio_pci'
-rw-r--r--   1 root     root         7752 May  9 14:59 usr/lib/modules/3.10.0-862.2.3.el7.x86_64/kernel/drivers/block/virtio_blk.ko.xz
-rw-r--r--   1 root     root        12960 May  9 14:59 usr/lib/modules/3.10.0-862.2.3.el7.x86_64/kernel/drivers/char/virtio_console.ko.xz
-rw-r--r--   1 root     root        14296 May  9 15:00 usr/lib/modules/3.10.0-862.2.3.el7.x86_64/kernel/drivers/net/virtio_net.ko.xz
-rw-r--r--   1 root     root         8168 May  9 15:01 usr/lib/modules/3.10.0-862.2.3.el7.x86_64/kernel/drivers/scsi/virtio_scsi.ko.xz
drwxr-xr-x   2 root     root            0 Jun  6 20:56 usr/lib/modules/3.10.0-862.2.3.el7.x86_64/kernel/drivers/virtio
-rw-r--r--   1 root     root         4560 May  9 15:01 usr/lib/modules/3.10.0-862.2.3.el7.x86_64/kernel/drivers/virtio/virtio.ko.xz
-rw-r--r--   1 root     root         9696 May  9 15:01 usr/lib/modules/3.10.0-862.2.3.el7.x86_64/kernel/drivers/virtio/virtio_pci.ko.xz
-rw-r--r--   1 root     root         8284 May  9 15:01 usr/lib/modules/3.10.0-862.2.3.el7.x86_64/kernel/drivers/virtio/virtio_ring.ko.xz

如果类似上面的结果,说明不是驱动问题,请略过此文,另外寻找原因,如果没有结果,说明是内核模块没有加载,请执行以下命令

cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak #备份原有的initramfs
mkinitrd -f --with=virtio_blk --with=virtio_pci /boot/initramfs-$(uname -r).img $(uname -r)  #制作新的initramfs

完成之后使用上面的lsinitrd命令查询,应该正常了,关闭guestos,调整磁盘模式为virtio,启动guestos,问题解决

以上方法适用于CentOS或者RedHat RHEL 7 以上版本