暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

迁移实战|从VMware和Hyper-V迁移到OpenStack

新钛云服 2020-06-11
576

介绍 

当前我们有一整套运行长达5年之久的VMware
,因服务器逐步报废的原因,我们决定将所有的VMware
虚拟主机迁移至OpenStack
OpenStack
是采用Kolla
部署的Train版本的高可用环境,Ceph为独立部署的Nautilus版本。

当前我们需要从VMware ESXi
 迁移超过220个VMware
虚拟机(Linux
Windows
)到OpenStack
。除了VMware
主机外,还有少部分的Hyper-V
虚拟主机也要进行迁移。本文将为大家演示用于迁移虚拟机的步骤和命令。通过这些步骤和命令,可以轻松创建自动进行迁移的脚本。

本次迁移仅仅涉及V2V
,不涉及任何的P2V

比较新版本的libguestfs-tools
qemu-img convert
可以很好地处理VMDK
文件(旧版本的工具存在一些问题),因此迁移效率更高。迁移过程中去除了从VMDK
VMDK
(单个文件)以及从VMDK
RAW
 的转换步骤。通过减少这些步骤,使迁移速度将加倍。

迁移过程中需要注意本文涉及到的命令,因为一些命令非常强大,并且可以破坏Ceph
OpenStack
中的配置和数据。因此,请谨慎的使用相关的命令

全局步骤

  1. 安装VirtIO
    驱动程序

  2. 扩展分区(可选)

  3. 自定义虚拟机(可选)

  4. 创建Cinder

  5. VMDK
    转换为Ceph

  6. 创建Neutron
    端口(可选)

  7. OpenStack
    中创建和启动实例

技术指标

以下是用于迁移的基础结构的规范:

  • 云平台:OpenStack Train

  • 云存储:Ceph

  • Windows
    实例:Windows Server 2012R2
    2016

  • Linux
    实例:RHEL5/6/7
    SLES
    Debian
    Ubuntu

  • 只能转换来自ESXi
    VMDK
    文件,无法使用qemu-img
    VMware Player
    转换VMDK
    文件

  • 不涉及加密磁盘的迁移

  • OpenStack
    为实例提供VirtIO
    半虚拟化硬件

需求

Linux
“迁移服务器”(可以使用Ubuntu 14.04/16.04/18.04
CentOS6/CentOS7
Redhat6/Redhat7
Fedora19-22
),同时需满足以下需求:

  • 服务器操作系统(已成功通过以下测试):

  • RHEL6
    RHEL7
    没有“ libguestfs-winsupport
    ”)

  • Fedora 19、20、21
    22

  • Ubuntu 14.04,16.04
    18.04

  • 与正在运行的OpenStack
    环境的网络连接。最好不要通过公网Internet
    ,因为我们需要“超级管理员”权限。本地网络连接通常比Internet连接更快。如果能保证是万兆网络的话将会更好。

  • 足够的硬件性能与功能来转换磁盘并能在KVM
    中运行实例(大小取决于您要在一定时间内迁移的实例,如有SSD
    最佳)。

我们使用的服务器配置为,8核Intel Xeon E3-1230@3.3 GHz
64 GB RAM
,8块1TB SSD
,并且每小时能够迁移超过500 GB 。但是,这实际上取决于实例磁盘空间的使用情况。我的旧公司笔记本电脑(Core i5
8GB RAM
和一个旧的4500rmp HDD
)也可以工作,但是显然性能很差。

在迁移之前还要满足如下需求:

  • 拥有Linux
    迁移主机上的本地sudo(root)
    权限

  • QEMU/KVM
    主机

  • OpenStack
    的权限(通过Keystone
    获取)

  • Ceph
    的相应的操作权限

  • OpenStack API
    Ceph
    的不受限制网络访问

  • VirtIO
    驱动程序(可从Red Hat,Fedora
    等主站下载)

  • 软件包(所有软件包都应位于默认的发行版存储库中):

    • “ python-cinderclient
      ”(用于云盘)

    • “ python-keystoneclient”
      (用于向OpenStack进行身份验证)

    • “ python-novaclient
      ”(控制实例)

    • “ python-neutronclient
      ”(用于控制网络)

    • “ python-httplib2
      ”(以便能够与Web服务通信)

    • “ libguestfs-tools
      ”(用于访问磁盘文件)

    • “ libguestfs-winsupport
      ”(应该仅在基于RHEL的系统上单独安装)

    • “ libvirt-client
      ”(控制KVM

    • “ qemu-img
      ”(转换磁盘文件)

    • “ ceph
      ”(将虚拟磁盘导入Ceph

    • “ vmware-vdiskmanager
      ”(用于扩展VMDK
      磁盘,可从VMware
      站点下载)

步骤

1.注入VirtIO驱动程序

1.1 Windows Server 2012

Windows Server 2012
Windows 8.0
开始,驱动程序受Windows
 保护。在脱机Windows
磁盘中注入驱动程序非常困难。Windows Server 2012
默认无法从VirtIO
硬盘启动。因此,我采取了以下后续步骤将VirtIO
驱动程序安装到Windows
中。请注意,这些步骤应适用于所有经过测试的Windows
版本(2008/2012/2016
)。

  1. 创建一个新的KVM
    实例。确保将Windows vmdk
    磁盘创建为IDE
    磁盘!网卡应该是VirtIO
    设备。

  2. 添加额外的VirtIO
    磁盘,以便Windows
    可以安装VirtIO
    驱动程序。

  3. 当然,您应该添加包含驱动程序的VirtIO ISO
    或软盘驱动器。您还可以使用virt-copy-in
     注入驱动程序文件,并注入必要的注册表设置以自动安装驱动程序。

  4. 启动虚拟机,并给Windows
    大约两分钟时间,以找到新的VirtIO
    硬件。为所有新发现的硬件安装驱动程序。确认没有设备没有安装驱动程序。

  5. 关闭系统并卸下额外的VirtIO
    磁盘。

  6. Windows vmdk
    磁盘重新定义为VirtIO
    磁盘(这是IDE
    )并启动实例。现在应该可以正常启动了。关闭 虚拟机。

1.2 Linux(内核2.6.25及更高版本)

Linux 2.6.25
及更高版本的内核已经内置了对VirtIO
硬件的支持。因此,无需注入VirtIO驱动程序。 使用VirtIO
硬件创建并启动新的KVM虚拟机。如果LVM
分区没有自动安装,请运行以下命令进行修复:

mount -o remount,rw /
pvscan
vgscan
reboot
文章转载自新钛云服,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论