AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 754680
Accepted
Drifter104
Drifter104
Asked: 2016-02-09 02:08:18 +0800 CST2016-02-09 02:08:18 +0800 CST 2016-02-09 02:08:18 +0800 CST

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

  • 772

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

其中大多数是 Windows 机器,我使用 Windows Backup 完成了备份和恢复。对于某些 Windows 框,我使用 XenServer 导出过程来创建 XVA 文件,然后我将其转换为可以在 Hyper-V 中使用的 VHD。

两种方法都运行良好,但是当我尝试为几个 linux 机器导出和转换过程时,它并没有很好地工作。

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

这就是我有点迷茫的地方......我将其中一台机器引导到转换机器上的引导菜单并查看菜单和争论选项,但我看不到对xvda. 所以要么我的假设在上面是错误的,要么我在错误的地方寻找,或者两者兼而有之?

任何帮助都将不胜感激,即使建议是以完全不同的方式执行此操作。

EDIT1:(添加启动菜单信息)
如果我选择启动菜单上的第一项并按下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

EDIT2:(Linux版本和fstab)

Linux 版本是 Centos 6.7

/etc/fstab 的副本(我试了一下并尝试将 UUID 更改为新磁盘的 UUID,但这似乎不起作用 /etc/fstab 的副本

linux
  • 3 3 个回答
  • 7509 Views

3 个回答

  • Voted
  1. Best Answer
    Aubrey Robertson
    2016-02-11T23:22:35+08:002016-02-11T23:22:35+08:00

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

    选项 1: 首先,您必须创建 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/

    如果你想创建一个可移植的文件,我很确定你可以通过管道将 rsync 导入 gzip。

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

    选项 2: 或者,您可以先创建新的 CentOS VM,然后将另一个导出的 VHD 文件挂载到 Hyper-V 下的同一虚拟机上。由于您将两个驱动器都安装到同一台机器上,因此您可以在此时完成迁移过程。安装备份驱动器并将引导加载程序迁移到该驱动器后,您可以卸载替换的 VM 驱动器。然后,您可以重新使用同一个驱动器来迁移您的其他机器(冲洗并重复您需要迁移的每个 VM)。如果您有很多机器,您可以尝试编写此过程的脚本,或者您可以找到已经存在的备份脚本。

    选项 3: 使用 hyper-V 创建新的 VHD/VHDX 文件,然后将其附加并挂载到您要复制的 Xenserver 来宾,并以这种方式直接进行备份。

    我知道有很多箍要跳过,有三个可靠的选择可能会在没有太多大惊小怪的情况下工作。我是 Linux 的新手,但我以前用 DD 很容易地移动高清图像,我不明白为什么它在这里不能很好地工作。

    原始答案:

    如果您使用的是 LVM,那么 HDD 应该不会导致问题,并且 HD 链接在转换后应该是完整的,但我不是专家。我在 Hyper-V 下使用 Linux 有相当多的经验,但没有将 XenServer 机器转换为 Hyper-V。话虽如此,您看到的错误向我表明这可能是 linux 内核的问题。了解您使用的是哪个 Linux 发行版会很有帮助。

    XenServer 有两种 VM 类型:

    HVM VM - 这些等同于 Hyper-V VM,无需更改。这些 VM 可以通过常规方式转换为 Hyper-V 机器(复制 VHD 或使用 Microsoft 推荐的 System Center 2012 Virtual Machine Manager (VMM))。

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

    我不知道您使用的是什么 linux 发行版,这可能对实际解决方案有一些影响,但是,假设 VM 是 PV VM,以下链接有在 Linux 机器上安装 PV 内核的说明,所以你想要执行这些说明的相反操作,以适应您的 Linux 发行版。然后导出过程应该起作用:

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

    此答案假定您在 Xenserver 虚拟机上使用 PV 内核,并假定这是导致引导失败的问题。它还假设您已经尝试使用 System Center 2012 Virtual Machine Manager (VMM) 来转换 vm(根据 Microsoft 最佳实践,以下链接中显示的步骤):

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

    最后说明:

    • 我可能会尝试禁用安全启动,看看是否有所作为。
    • 确保遵循 Microsoft 针对 Linux VM 的最佳实践(取决于您使用的发行版)。这些可以在以下链接中找到,您可以在执行导出过程之前尝试对 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 集成工具后才有效(特定于发行版)。

    • 4
  2. user440188
    2017-10-18T23:38:08+08:002017-10-18T23:38:08+08:00

    我知道这个答案来晚了,但我想我会分享我是如何解决这个问题的。我还在寻找将 CentOS7 VM 从 XenServer 6.5 迁移到 Hyper-V 2016 的答案。我尝试了从 Starwind 到导出为 XVA 设备并使用 XenConvert 2.3.1 进行转换的所有方法,但无济于事。

    该解决方案实际上非常简单,并且第一次就成功了:下载这个 ISO - https://sourceforge.net/projects/boot-repair-cd/

    我采取的高级步骤:

    1. 将 XEN VM 导出为 OVA(或使用任何工具(如 Starwind)转换 .xva XEN 设备)
    2. 在 Hyper-V 中创建新 VM 并附加以前导出的 VHD
    3. 在新的 Hyper-V VM 的 DVD/CDROM 驱动器中从上面的链接挂载 ISO,然后从它启动。
    4. 按照提示进行操作(注意!!!确保 VM 已连接一个 NIC,该 NIC 连接到分配 DHCP 和 Internet 访问权限的外部网络)
    5. 选择自动修复(注意!!在重新安装 GRUB 的步骤中,您可能需要修改 yum 命令,在我的情况下,我必须使用 -“yum erase grub*”而不是“yum erase grub*-common”
    6. 重新启动并享受在 Hyper-V 上运行的 Linux VM :)
    • 2
  3. Maxiko
    2016-02-09T02:30:26+08:002016-02-09T02:30:26+08:00

    对 xvda 的引用在您的 xen 配置中。

    例如:

    # 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
    
    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve