You need to enable JavaScript to run this app.
导航

迁移工具Agent报错“check virtio failed”如何解决?

最近更新时间2023.06.27 17:36:28

首次发布时间2023.06.27 17:36:28

故障现象

迁移失败时,迁移日志smc.log文件存在ERROR信息“check virtio failed”。

问题原因

为避免部分虚拟机、服务器或云主机迁移至火山引擎后无法正常使用,迁移前,SMC迁移工具Agent将检查您的迁移源Virtio驱动是否可以正常运行。

解决方案

步骤一:确认内核是否支持Virtio驱动

  1. 执行如下命令,确认当前虚拟机操作系统是否支持Virtio驱动。

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

    回显示例:

    结果说明:
    请在回显信息中,根据CONFIG_VIRTIO_BLKCONFIG_VIRTIO_NET 参数值,进行后续操作。

    结果说明

    参数值为m

    表示该操作系统内核支持Virtio驱动。
    请执行步骤二,确认临时文件系统initramfs或initrd中是否包含Virtio驱动。

    参数值为y表示该操作系统内核已经包含了Virtio驱动,您可以正常迁移至火山引擎。
    没有这两个参数表示该操作系统内核不支持Virtio驱动,暂不支持直接迁移至火山引擎。您需要为自行编译安装Virtio驱动。

步骤二:确认临时文件系统是否包含Virtio驱动

请根据虚拟机操作系统,执行相应命令。

  • CentOS 6/CentOS 7/CentOS 8/RedHat 6/RedHat 7 操作系统。

    lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
    
  • RedHat 5/CentOS 5 操作系统。

    mkdir -p /tmp/initrd && cd /tmp/initrd
    zcat /boot/initrd-$(uname -r).img | cpio -idmv
    find . -name "virtio*"
    
  • Debian/Ubuntu 操作系统。

    lsinitramfs /boot/initrd.img-$(uname -r) | grep virtio
    

    回显示例:

    结果说明:

    • 若回显如上图所示,表示临时文件系统initramfs已经包含了virtio_blk驱动,及其依赖的virtio.ko、virtio_pci.ko和virtio_ring.ko,您可以正常迁移至火山引擎,操作详情可查看导入迁移源
    • 若回显为空,表示临时文件系统没有包含Virtio驱动,请执行步骤三修复临时文件系统。

步骤三:修复临时文件系统

  • CentOS 6/AlmaLinux 8/Fedora 33及以上版本,且内核版本高于2.6.24。

    1. 执行如下以下命令,打开dracut.conf文件。

      vim /etc/dracut.conf
      
    2. i进入编辑模式,然后添加如下内容。

      add_drivers+="virtio_blk virtio_scsi virtio_net virtio_pci virtio_ring virtio"
      
    3. 修改完成后按Esc键,并输入:wq后按下回车键,保存并退出。

    4. 执行以下命令,重新生成initrd。

      dracut -f
      
  • Debian/Ubuntu系列

    1. 执行如下命令,打开modules文件。

      vim /etc/initramfs-tools/modules
      
    2. i进入编辑模式,然后添加如下内容。

      virtio_blk
      virtio_scsi
      virtio_net
      virtio_pci
      virtio_ring
      virtio
      
    3. 修改完成后按Esc键,并输入:wq后按下回车键,保存并退出。

    4. 执行以下命令,重新生成initrd。

      update-initramfs -u
      

步骤四:验证修复结果

临时文件修复完成后,可再次执行步骤二命令,验证Virtio驱动以成功包含在临时文件系统initramfs或initrd中。