Linux – Can not boot CentOS VM using VirtIO in KVM

centoskvm-virtualizationlinuxvirtualization

I converted qcow2 image to raw and changed I/O bus to VirtIO for a VM. now I can't boot that VM.
I Installed VirtIO driver with following command:

mkinitrd --with virtio_pci --with virtio_blk -f /boot/initrd-$(uname -r).img $(uname -r)

and these are related kernel modules:

virtio_balloon         11329  0
virtio_blk             11593  3
virtio_pci             11845  0
virtio_ring             8513  1 virtio_pci
virtio                  9541  3 virtio_balloon,virtio_blk,virtio_pci

and this is what happens during boot-up.

enter image description here

I also changed /boot/grub/device.map from "(hd0) /dev/sda" to "(hd0) /dev/vda"

but problem still exists. any ideas how to fix this ?

This is my default option to boot:

title CentOS (2.6.18-308.13.1.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-308.13.1.el5 ro root=/dev/VolGroup00/LogVol00
        initrd /initrd-2.6.18-308.13.1.el5.img

Best Answer

The problem here is that the virtual machine can't seem to see its own hard drive.

No volume groups found

You should do only one change at a time, so that if something breaks, you know what it is. Instead, you tried to change two things at the same time, so you can't be sure if it was changing the disk format or trying to get the installed system converted to virtio.

Start over from the beginning (with the original qcow2 image) and change only one thing at a time so that you can be sure of what's going wrong.

Also note that CentOS 5.8 can be installed directly to a virtio disk. You may find it easier to install a new virtual machine and transfer your data from one virtual disk to the other, or better yet use the installation DVD to update your existing virtual machine.