将Linux机器从XenServer转换为Hyper-V

我正在将我的XenServer VM上的最后几个转换为Hyper-V。

他们中的大多数是Windows机器,我已经使用Windows备份完成备份和恢复。 对于一些使用XenServer导出过程创buildXVA文件的窗口框,然后将其转换为VHD,然后在Hyper-V中使用。

两种方式都完美的工作,但当我试图导出和转换一些Linux的过程中,它不工作。

我创build了XVA,我使用Xenconvert来转换和创buildVHD,但是当我将它们连接到Hyper-V VM时,我只是得到了一个闪烁的光标。 经过一番研究,我相信这是因为硬盘的命名方式不同。 例如,在/dev/的原始机器将显示xvda, xvda1.....但在Hyper-V中,我相信这些将是sda, sda1......

这是我有点失落….我启动了一台机器到转换机器上的启动菜单,看着菜单和争论的选项,但我看不到一个XVDA的引用。 所以,无论我的假设是错误的上面,或者我在错误的地方或两者?

任何帮助将不胜感激,即使build议是以完全不同的方式做到这一点。

编辑1 🙁添加启动菜单信息)
如果我select启动菜单上的第一个项目,然后按e ,则显示以下内容

 root (hd0,0) kernel /vmlinuz-2.6.32-573.12.1.e16.x86_64 ro root=dev/mapper/VolGroup-lv_root rd_NOLUKS LANG=en_US.UTF-8 rd_NO_MD console=hvc0 KEYTABLE=us rd_LVM_LV=VolGroup/lv_swap SYSFONT=latacyrheb-sun16 rhgb crashkernel=auto quiet rd_LVM_LV=VolGroup/lv_root rd_NO_DM initrd /initramfs-2.6.32-573.12.1.e16.x86_64.img 

编辑2: (Linux版本和fstab)

Linux版本是Centos 6.7

/ etc / fstab的副本(我采取了刺,并尝试将UUID更改为新磁盘的UUID,但似乎没有工作 / etc / fstab的副本

编辑答案:我一直在考虑你的问题,我认为rsync或dd备份/恢复可能是你最好的select。 如果你使用dynamic增长的vhdds,那么rsync可能是你最好的select,如果你使用静态定义的磁盘,那么dd可能是你最好的select。

选项1:首先,您必须创build一个samba或cfs共享,或通过其他方式连接物理驱动器来备份数据。 一旦连接了备份目标,就必须运行rsync或dd命令来备份驱动器。

Rsync示例(使用Arch): https : //wiki.archlinux.org/index.php/full_system_backup_with_rsync

DD示例: http : //www.thegeekstuff.com/2010/10/dd-command-examples/

我敢肯定你可以pipersync到gzip如果你想创build一个可移植的文件。

然后,您必须在新的hyper-v机器上安装Centos。 然后,您必须完成恢复备份映像的任务(根据您用来创build备份映像的命令,这将有所不同)。

选项2:或者,您可以先创build新的CentOS VM,然后将其他导出的VHD文件安装到Hyper-V下的同一个虚拟机中。 由于您将两个驱动器都安装到同一台计算机上,因此您可以在此处完成迁移过程。 安装完备份驱动器并将引导加载程序迁移到该驱动器后,即可卸载replace的VM驱动器。 然后,您可以重新使用同一个驱动器来迁移其他机器(对于每个需要迁移的虚拟机进行冲洗和重复)。 如果你有很多机器,你可以尝试编写这个过程的脚本,或者你可能已经find了一个备份脚本。

选项3:使用hyper-V创build新的VHD / VHDX文件,然后将其附加并挂载到您希望复制的Xenserver guest虚拟机上,然后直接进行备份。

我知道有很多的障碍要跳过,有三个固定的选项,可能会没有太多的大惊小怪。 我对Linux有一种新鲜感,但是我之前用DD很容易地把高清图像移到了前面,我不明白为什么它在这里不能很好地工作。

原文答案:

如果你正在使用LVM,那么硬盘不应该造成问题,转换后HD链接应该是完整的,但我不是专家。 在Hyper-V下,我有相当多的Linux经验,但是不能将XenServer机器转换成Hyper-V。 这就是说,你所看到的错误暗示了这可能是Linux内核的一个问题。 知道你正在使用哪个Linux发行版会有帮助。

XenServer有两种VMtypes:

HVM虚拟机 – 这些与Hyper-V虚拟机相同,不需要更改。 这些虚拟机可以通过常规方式转换为Hyper-V机器(复制VHD或使用Microsoft推荐的System Center 2012虚拟机pipe理器(VMM))。

PV虚拟机 – 这些是“虚拟化的”虚拟机,没有完整的启动内核。 它们绑定到VM的操作系统,并共享一些引导程序来引导机器。 您需要用虚拟机内核(kernel-pae)replace虚拟机内的虚拟机内核(kernel-xen)。

我不知道你使用的是什么linux发行版,这可能会对实际的解决scheme有一定的影响,但是假设这些虚拟机是PV虚拟机,下面的链接提供了关于在Linux机器上安装PV内核的指导,所以你想做相反的这些说明,适应你的Linux发行版。 那么出口过程应该工作:

http://itproctology.blogspot.ca/2009/06/pv-enabling-hvm-from-vmware-on.html

这个答案假定您在XenServer vms上使用PV内核,并假定这是导致启动失败的问题。 它还假定您已经尝试使用System Center 2012虚拟机pipe理器(VMM)转换虚拟机(按照Microsoft最佳实践,步骤如下所示):

https://technet.microsoft.com/en-ca/library/gg610672.aspx

最后说明:

  • 我可能会尝试禁用安全启动,看看是否有所作为。
  • 确保遵循适用于Linux VM的Microsoft最佳实践(取决于您使用的发行版)。 这些可以在以下链接中find,并且可以在执行导出过程之前尝试对VM 进行更改(请务必先备份虚拟机):

Hyper-V最佳实践下的通用Linux VM: https : //technet.microsoft.com/en-ca/library/dn720239.aspx

Hyper-V最佳实践下分发特定的Linux VM: https : //technet.microsoft.com/en-ca/library/dn531030.aspx

最后,这里是我的Linux内核参数对于我的虚拟机(Ubuntu / Debian)(在/ etc / default / grub中,确保以后运行sudo update-grub):

 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=hyperv_fb:1366x768 elevator=noop numa=off" 

video = hyperv_fb选项只有在虚拟机上安装了hyper-v集成工具(分发特定)后才能使用。

我知道这个答案来得晚,但我想我会分享我如何解决这个问题。 我还在寻找从XenServer 6.5迁移到Hyper-V 2016的CentOS7虚拟机的答案。我尝试了一切,从Starwind到XVA设备的导出以及使用XenConvert 2.3.1转换,都没有用处。

这个解决scheme其实很简单,并且第一次工作:下载这个ISO – https://sourceforge.net/projects/boot-repair-cd/

我采取的高级步骤:

  1. 将XEN VM导出到OVA(或使用Starwind之类的任何工具转换.xva XEN设备)
  2. 在Hyper-V中创build新的虚拟机并附加以前导出的VHD
  3. 在新的Hyper-V虚拟机的DVD / CDROM驱动器中挂载上面的ISO链接,并从中启动。
  4. 按照提示进行操作(注意:确保虚拟机有一个连接到外部networking的NIC,用于发出DHCP和Internet访问)
  5. select自动修复(重新安装GRUB的步骤NB !!),您可能需要修改yum命令,在我的情况下我必须使用 – “yum erase grub *”而不是“yum erase grub * -common”
  6. 重新启动并享受在Hyper-V上运行的Linux VM

参考xvda是在你的xenconfiguration。

例如:

 # Created Mon Oct 12 08:38:43 CEST 2015 name='clone0' kernel='/etc/xen/vm-kernels/vmlinuz-3.2.0-4-amd64' ramdisk='/etc/xen/vm-kernels/initrd.img-3.2.0-4-amd64' memory=256 # Networking nics = 1 vif = [ 'bridge=xenbr0' ] disk = [ 'phy:/dev/vg0/clone0.root,xvda1,w', # there you can rename device name 'phy:/dev/vg0/clone0.swap,xvda2,w' # in you VM ] root = '/dev/xvda1 ro' #this tell boot device on_reboot = 'restart' on_crash = 'restart' vcpus = 1 

假设这是一个GRUB问题,你有没有尝试启动修复磁盘? https://sourceforge.net/projects/boot-repair-cd/

这个项目是一个可启动的.iso,可以自动修复大量的启动问题。 要使用该工具,请下载.iso,将其安装到Hyper-V虚拟机中,并将其选作引导设备。 如果内存服务,你基本上有三个步骤。

  1. 点击“分析系统”button
  2. 点击“应用修复”button
  3. 重启虚拟机

如果你还没有的话,我强烈build议你试试这个工具!

另一个select是通过从CentOS 6.7 .iso启动并从启动菜单中select“Rescue Installed System”来手动修复GRUB。 一旦进入救援控制台,您将采取以下步骤:

  1. 将所有文件系统挂载到RW模式。
  2. 改变你的活动根目录: chroot /mnt/sysimage
  3. 重新安装GRUB: grub-install /dev/sda