Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm trying to migrate existing IDE-using, LVM-based CentOS 5.2 VMs to use virtio. The symptom is a kernel panic upon boot when the system can't find any volume groups. Does anyone know how to make this work?

I created a vm install that didn't use LVM and was able to switch it over to use virtio. This is the where I've gotten to when using LVM:

Steps:

  1. Install CentOS 5.2 in kvm, which uses LVM, on an ide disk.
  2. Install a newer kernel with virtio support, in my case, 2.6.18-371.6.1.el5.centos.plus and modify configs (detailed below).
  3. Shut down the system. Change the disk type to virtio in the virt-manager config.
  4. Boot and select the new kernel at the grub prompt. "No volume groups found" and a kernel panic.

In the second step above, I updated /boot/grub/device.map, /etc/modprobe.conf, and re-ran mkinitrd.

/boot/grub/device.map:

# this device map was generated by anaconda
(hd0)     /dev/vda

/etc/modprobe.conf:

alias eth0 virtio_net
alias scsi_hostadapter virtio_blk
alias snd-card-0 snd-hda-intel
options snd-card-0 index=0
options snd-hda-intel index=0
remove snd-hda-intel { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-hda-intel

/boot/grub/grub.conf:

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-371.6.1.el5.centos.plus)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-371.6.1.el5.centos.plus ro root=/dev/VolGroup00/LogVol00
    initrd /initrd-2.6.18-371.6.1.el5.centos.plus.img

I uncompressed the initrd image and the virtio modules appear to be there:

[root@localhost initrd]# ls -1 /tmp/initrd/lib/ | grep virt
virtio_blk.ko
virtio.ko
virtio_pci.ko
virtio_ring.ko

I upgraded to mkinitrd-5.1.19.6-80.el5_9 that uses lvm dumpconfig to generate lvm.conf:

[root@localhost initrd]# cat /tmp/initrd/etc/lvm/lvm.conf 
  devices {
    dir="/dev"
    scan="/dev"
    preferred_names=[]
    filter="a/.*/"
    cache_dir="/etc/lvm/cache"
    cache_file_prefix=""
    write_cache_state=1
    sysfs_scan=1
    md_component_detection=1
    ignore_suspended_devices=0
  }
  activation {
    missing_stripe_filler="/dev/ioerror"
    reserved_stack=256
    reserved_memory=8192
    process_priority=-18
    mirror_region_size=512
    readahead="auto"
    mirror_log_fault_policy="allocate"
    mirror_device_fault_policy="remove"
  }
  global {
    umask=63
    test=0
    units="h"
    activation=1
    proc="/proc"
    locking_type=1
    fallback_to_clustered_locking=1
    fallback_to_local_locking=1
    locking_dir="/var/lock/lvm"
  }
  shell {
    history_size=100
  }
  backup {
    backup=1
    backup_dir="/etc/lvm/backup"
    archive=1
    archive_dir="/etc/lvm/archive"
    retain_min=10
    retain_days=30
  }
  log {
    verbose=0
    syslog=1
    overwrite=0
    level=0
    indent=1
    command_names=0
    prefix="  "
  }

I checked for CONFIG_SYSFS_DEPRECATED like in this question, but that appears to be a post-2.6.18 option.

Does anyone know what is still missing?

share|improve this question
    
Why are you starting with 5.2? That's over four years out of date. Try starting with 5.10. –  Michael Hampton Mar 31 at 0:45
    
Sorry, I have CentOS 5.2 VM's that I need to convert. I am using test VMs to try and get it working. –  Jerry Seutter Mar 31 at 1:11
    
Why not simply backup the old VMs, and restore to new, working VMs (running 5.10)? –  dyasny Mar 31 at 3:16

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.