esxi上XXX-falt.vmdk文件拷贝到KVM上创建虚拟机、EFI+GPT启动问题的示例分析

发布时间:2021-12-17 11:51:43 作者:小新
来源:亿速云 阅读:233
# ESXi上XXX-flat.vmdk文件拷贝到KVM上创建虚拟机、EFI+GPT启动问题的示例分析

## 背景说明
在虚拟化平台迁移过程中,常需将VMware ESXi的虚拟机磁盘文件(如`XXX-flat.vmdk`)迁移至KVM环境。本文通过实际案例,分析迁移后因**EFI+GPT引导配置**导致的启动问题及解决方案。

---

## 问题现象
1. **迁移步骤**  
   - 从ESXi导出`XXX.vmdk`和`XXX-flat.vmdk`文件  
   - 使用`qemu-img convert`转换为qcow2格式:  
     ```bash
     qemu-img convert -f vmdk -O qcow2 XXX-flat.vmdk XXX.qcow2
     ```
   - 在KVM中创建虚拟机并挂载转换后的磁盘。

2. **故障表现**  
   虚拟机启动时卡在EFI Shell界面,提示:  

Boot Failed. EFI Hard Drive. Not Found.


---

## 原因分析

### 1. 磁盘分区表差异
- **ESXi默认配置**:  
  若原虚拟机采用EFI+GPT引导,`XXX-flat.vmdk`的磁盘布局包含:
  - 512B的GPT头部
  - EFI系统分区(ESP,通常FAT32格式)
  - 主系统分区

- **KVM兼容性问题**:  
  - 转换后的qcow2文件可能丢失GPT元数据或ESP分区标志。
  - KVM的虚拟EFI固件(如OVMF)未正确识别ESP分区。

### 2. 引导加载程序缺失
EFI启动依赖ESP分区中的`.efi`文件(如`/EFI/BOOT/BOOTX64.EFI`),若分区未挂载或文件损坏,则无法启动。

---

## 解决方案

### 方法一:修复GPT和ESP分区
1. **使用`gdisk`检查分区表**  
   ```bash
   gdisk -l XXX.qcow2
  1. 挂载ESP分区验证内容
    
    sudo mount -o offset=$((512*2048)) XXX.qcow2 /mnt  # 假设ESP起始于2048扇区
    ls /mnt/EFI/BOOT/
    

方法二:重建EFI引导

  1. 使用virt-rescue进入救援模式

    virt-rescue --rw XXX.qcow2
    
    • 重新安装GRUB:
      
      mkdir /esp
      mount /dev/sda1 /esp  # 假设ESP为sda1
      grub-install --target=x86_64-efi --efi-directory=/esp --bootloader-id=ubuntu
      
  2. 手动添加EFI条目
    在KVM的OVMF界面中,使用EFI Shell手动指定启动路径:

    fs0:
    cd \EFI\BOOT
    BOOTX64.EFI
    

预防建议

  1. 迁移前检查源磁盘
    • 确认ESXi虚拟机为EFI+GPT时,使用vmkfstools导出完整描述文件。
  2. 转换时保留元数据
    
    qemu-img convert -p -f vmdk -O qcow2 -o cluster_size=2M XXX.vmdk XXX.qcow2
    
  3. 创建KVM虚拟机时显式指定EFI
    
    <os>
     <type arch='x86_64' machine='pc-q35-6.2'>hvm</type>
     <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
    </os>
    

总结

ESXi到KVM的磁盘迁移需注意EFI+GPT引导链的完整性。通过修复分区表、重建ESP内容或手动配置EFI,可解决此类启动问题。建议在迁移前备份数据并验证目标平台兼容性。 “`

注:实际案例中需根据具体分区布局调整命令参数(如offset值)。若问题持续,可结合dmesgvirt-manager日志进一步排查。

推荐阅读:
  1. vMware vSphere ESXI上安装 Windows
  2. VMWare Workstation 14 和 vsphere esxi 5.5遇到的几个问题- 上

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

esxi kvm

上一篇:Spark Streaming+Spark SQL的数据倾斜示例分析

下一篇:python匿名函数怎么创建

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》