Назад | Перейти на главную страницу

Перенос виртуальной машины CentOS с помощью LVM в IDE для работы с VirtIO

Я пытаюсь перенести существующие виртуальные машины CentOS 5.2 на базе IDE и LVM на использование virtio. Симптомом является паника ядра при загрузке, когда система не может найти никакие группы томов. Кто-нибудь знает, как заставить это работать?

Я создал установку vm, в которой не использовался LVM, и смог переключить ее на использование virtio. Вот куда я попал при использовании LVM:

Шаги:

  1. Установите CentOS 5.2 в kvm, который использует LVM, на диск ide.
  2. Установите более новое ядро ​​с поддержкой virtio, в моем случае 2.6.18-371.6.1.el5.centos.plus, и измените конфигурации (подробно описано ниже).
  3. Выключите систему. Измените тип диска на virtio в конфигурации virt-manager.
  4. Загрузитесь и выберите новое ядро ​​в приглашении grub. «Группы томов не найдены» и паника ядра.

На втором шаге выше я обновил /boot/grub/device.map, /etc/modprobe.conf и повторно запустил 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

Я распаковал образ initrd, и там оказались модули virtio:

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

Я обновился до mkinitrd-5.1.19.6-80.el5_9, который использует lvm dumpconfig для создания 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="  "
  }

Я проверил CONFIG_SYSFS_DEPRECATED как в этот вопрос, но, похоже, это вариант после версии 2.6.18.

Кто-нибудь знает, чего еще не хватает?

Решение - обновить систему. Red Hat не поставляла гостевые драйверы virtio до 5.3.

На данный момент вы девять сервисные пакеты позади. Простое обновление системы могло бы решить проблему еще до того, как она случилась.