使用 IDE 上的 LVM 迁移 CentOS VM 以使用 VirtIO 运行

使用 IDE 上的 LVM 迁移 CentOS VM 以使用 VirtIO 运行

我正在尝试将现有的使用 IDE、基于 LVM 的 CentOS 5.2 VM 迁移到使用 virtio。症状是当系统找不到任何卷组时,启动时出现内核崩溃。有人知道如何做到这一点吗?

我创建了一个不使用 LVM 的虚拟机安装,并能够将其切换到使用 virtio。这是我使用 LVM 时遇到的情况:

脚步:

  1. 在 ide 磁盘上,使用 LVM 的 kvm 中安装 CentOS 5.2。
  2. 安装一个支持 virtio 的较新内核,在我的情况下是 2.6.18-371.6.1.el5.centos.plus,并修改配置(详见下文)。
  3. 关闭系统。在 virt-manager 配置中将磁盘类型更改为 virtio。
  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 之后的选项。

有谁知道还缺少什么吗?

答案1

解决方案是更新系统。Red Hat 没有提供 virtio 客户机驱动程序直到 5.3

此时你服务包落后。只需保持系统更新即可在问题发生之前将其解决。

相关内容