CentOS 7 VMWare 到 Hyper-V 迁移-磁盘不可见

CentOS 7 VMWare 到 Hyper-V 迁移-磁盘不可见

我有一个从 VMWare 迁移来的虚拟机,我已经通过启动到 Live CD、安装和检查文件系统确认磁盘符合预期。

系统确实也启动了一定程度,但过了一会儿它就放弃尝试,掉到“dracut”终端,我读了日志/run/initramfs/rdsosreport.txt并看到了以下内容:

Hyper-V Virtual Machine detected, ATA device ignore set

在终端中,我还看到一条错误,提示/dev/disk/by-uuid/{uuid here}不可用。当我在 Ubuntu 中时,我确实检查了错误中列出的 UUID,/etc/fstab所有内容都与 的输出相匹配blkid

我还完成了 CentOS 的全新安装,它启动正常,因此几乎肯定是与迁移安装有关的问题。

抱歉,如果这还不够,如果有人需要任何具体的信息,我会尽力更新问题。

如果有帮助的话,我正在运行 Windows 10,版本 1903,内部版本 10.0.18941.1001(这是 Hyper-V 报告的版本)。

答案1

我相信您需要重建 initramfs 文件/boot/initramfs-(kernel version).img,因为虚拟硬件发生了变化。CentOS 内核用于虚拟磁盘访问的模块可能不同。请按照以下说明操作:

  • 将 CentOS 7 安装 ISO 附加到虚拟机
  • 启动到 Anaconda 救援模式(指示)(替代指令
  • 确保虚拟磁盘内的文件系统已正确安装在/mnt/sysimage
  • 用于dracut重建 initramfs:# chroot /mnt/sysimage dracut --no-hostonly --force --regenerate-all --verbose
  • 编写一个 SELinux 重新标签程序:# touch /mnt/sysimage/.autorelabel
  • 退出 Anaconda 救援模式

Initramfs 是一个文件系统映像,引导加载程序会在加载内核之后、切换执行上下文之前将其提取到内存中。此类映像应包含内核查找包含根文件系统的块设备所需的所有模块。我不知道 Hyper-V 虚拟机需要哪些模块;如果您能够自己找到它们,您可以使用dracut参数将它们添加到重建的 initramfs 中--add-drivers

答案2

此问题是由 ata_piix 中的默认设置引起的。
如果检测到 HyperV 硬盘,驱动程序会认为 IDE 是不必要的,并禁用该端口。要覆盖此问题,您可以设置内核参数:ata_piix.prefer_ms_hyperv=0

来源:https://github.com/torvalds/linux/blob/master/drivers/ata/ata_piix.c#L1572

此后,操作系统应该启动,您可以重建 Linux 映像以包含 HyperV 驱动程序。

相关内容