作者:祝祥 2020-06-11 08:02:38
云计算
虚拟化
OpenStack 当前我们有一整套运行长达5年之久的VMware,因服务器逐步报废的原因,我们决定将所有的VMware虚拟主机迁移至OpenStack。OpenStack是采用Kolla部署的Train版本的高可用环境,Ceph为独立部署的Nautilus版本。
从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供成都网站设计、网站制作、网站策划、网页设计、申请域名、虚拟空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。
介绍
当前我们有一整套运行长达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中的配置和数据。因此,请谨慎的使用相关的命令
全局步骤
技术指标
以下是用于迁移的基础结构的规范:
需求
Linux“迁移服务器”(可以使用Ubuntu 14.04/16.04/18.04,CentOS6/CentOS7,Redhat6/Redhat7,Fedora19-22),同时需满足以下需求:
我们使用的服务器配置为,8核Intel Xeon E3-1230@3.3 GHz,64 GB RAM,8块1TB SSD,并且每小时能够迁移超过500 GB 。但是,这实际上取决于实例磁盘空间的使用情况。我的旧公司笔记本电脑(Core i5和8GB RAM和一个旧的4500rmp HDD)也可以工作,但是显然性能很差。
在迁移之前还要满足如下需求:
步骤
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.2 Linux(内核2.6.25及更高版本)
Linux 2.6.25及更高版本的内核已经内置了对VirtIO硬件的支持。因此,无需注入VirtIO驱动程序。 使用VirtIO硬件创建并启动新的KVM虚拟机。如果LVM分区没有自动安装,请运行以下命令进行修复:
- mount -o remount,rw /
- pvscan
- vgscan
- reboot
(重新启动后,所有LVM分区都应该挂载,Linux应该可以正常启动)
完成后关闭虚拟机。
1.3 Linux(2.6.25之前的内核)
一些Linux发行版提供了用于较旧内核版本的VirtIO模块:
较旧内核的步骤是:
1.4 Windows server 2008(及更低版本);不推荐使用
对于2012之前的Windows版本,您还可以使用以下步骤插入驱动程序。
注册表文件(也称为mergeviostor.reg,因为它仅保存VirtIO存储信息):
- Windows Registry Editor Version 5.00
- [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00000000]
- "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor"
- [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00020000]
- "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
- "Service"="viostor"
- [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00021AF4]
- "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor"
- [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00021AF4&rev_00]
- "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}"
- "Service"="viostor"
- [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1004&subsys_00081af&rev_00]
- "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor"
- [HKEY_LOCAL_MACHINESYSTEMControlSet001Servicesviostor]
- "ErrorControl"=dword:00000001
- "Group"="SCSI miniport"
- "Start"=dword:00000000
- "Tag"=dword:00000021
- "Type"=dword:00000001
- "ImagePath"="system32driversviostor.sys"
- [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion]
- "DevicePath"=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,00,5c,00,69,00,6e,00,66,00,3b,00,63,00,3a,00,5c,00,44,00,72,00,69,00,76,00,65,00,72,00,73,00,00,00
执行完这些步骤后,Windows应从不带BSOD的VirtIO 磁盘引导。
Windows引导时,所有其他驱动程序(网络,balloon等)也应自动安装。
请参阅:https://support.microsoft.com/zh-cn/kb/314082 (为Windows XP 编写,但仍可用于Windows 2003和2008)。
另请参阅:http://libguestfs.org/virt-copy-in.1.html和http://libguestfs.org/virt-win-reg.1.html
2.展开分区(可选)
迁移的某些Windows服务器在Windows分区上的可用磁盘空间有限。没有足够的空间来安装新的管理应用程序。所以,可以使用用vmware-vdiskmanager工具,以增加磁盘的大小。然后,您仍然需要从操作系统扩展分区。您可以在下一步中自定义虚拟机时执行此操作。
3.自定义虚拟机(可选)
要准备在OpenStack中运行的操作系统,您可能需要卸载某些软件(例如VMware Tools和驱动程序),更改密码并安装新的管理工具等。您可以通过编写脚本来自动执行此操作。您应该能够使用virt-copy-in命令将脚本和文件注入虚拟磁盘。
3.1在Linux中自动启动脚本
由于只有几个Linux服务器需要迁移,因此我在Linux中手动启动了脚本。而且很容易就做到了自动化。
3.2在Windows中自动启动脚本
可以选择RunOnce方法在Windows启动时启动脚本,因为该方法适用于所有Windows版本。您可以 通过注入注册表文件将脚本放入RunOnce。仅当用户登录时才运行RunOnce脚本。因此,还应该注入Windows 管理员的用户名,密码,并将AutoAdminLogon设置为'1'。当Windows启动时,它会自动登录的用户定义。完成后,请确保关闭虚拟机。
自动登录Windows(使用用户“ Administrator”和密码“ Password”)并启动C:StartupWinScript.vbs的示例注册表文件:
- Windows Registry Editor Version 5.00
- [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce]
- "Script"="cscript C:StartupWinScript.vbs"
- "Parameters"=""
- [HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWinlogon]
- "AutoAdminLogon"="1"
- "UserName"="Administrator"
- "Password"="Password"
4.创建Glance镜像
当前OpenStack平台使用Ceph作为存储、镜像后端。如果创建云主机希望通过从镜像的方式启动而不是云盘的方式启动的话,那么镜像上传需要通过glance-api。我们在vMware上的云主机,系统盘数据大小约为200G。不管是作为上传体积较大的raw或者qcow2镜像,由于要经过glance-api上传,速度会比较慢,此时可以采用先上传到Ceph,再在glance中create的方式,因为连接到Ceph后端的通常是万兆光口,上传速度会很快:
具体步骤如下:
- uuid=$(uuidgen)
- rbd -p images --image-format 2 import image_file $uuid
- rbd -p images snap create --snap snap $uuid
- rbd -p images snap protect --snap snap $uuid
- glance image-create --os-image-api-version 1 --id $uuid --name image_name --disk-format raw --container-format bare --is-public false --location rbd://$(ceph fsid)/images/$uuid/snap
5.创建Cinder卷
对于要导入的每个磁盘,您需要创建一个Cinder卷。Cinder命令中指定的卷大小并不重要,因为下一步我们将删除(并通过ceph直接导入的方式重新创建)Ceph块设备。我们仅创建cinder卷以创建Cinder和Ceph 之间的链接。
但是,您应该使卷大小与计划导入的磁盘相同。这对于拥有OpenStack管理界面(Horizon)用户来说,操作很简单。
使用以下命令创建一个cinder卷(大小以GB为单位,您可以通过cinder type-list检查可用的卷类型):
- cinder create --display-name
--volume-type
注意卷ID(您也可以使用以下命令找到卷ID ),因为下一步需要使用这些ID。
- cinder list | grep
Cinder命令信息:http://docs.openstack.org/cli-reference/content/cinderclient_commands.html
6.将VMDK转换为Ceph
一旦创建了Cinder卷,就可以将VMDK磁盘文件转换为RBD块(Ceph)。但是首先我们需要删除实际的Ceph 磁盘。请确保删除正确的Ceph块设备!
首先,您应该知道磁盘驻留在哪个Ceph池中。然后从Ceph中删除该卷(volume-id是您在上一步“创建Cinder卷”中记录的卷ID ):
- rbd -p
rm volume-
下一步是将VMDK文件转换为Ceph上的卷(所有ceph的参数都是为了更好的性能。vmdk_disk_file变量是vmdk文件的完整路径。volume-id**是您之前记下的ID)。
- qemu-img convert -p
-O rbd rbd: /volume-
对虚拟机的所有虚拟磁盘执行此操作。
小心!rbd命令非常强大(可能会破坏Ceph上比预期更多的数据,请谨慎使用)!
7.创建Neutron端口(可选)
在某些情况下,您可能需要设置固定的IP地址或MAC地址。您可以通过使用neutron创建端口并在下一步中使用该端口(在OpenStack中创建和启动实例中进行关联)来实现。您首先应该知道network_name是什么(nova net-list),需要使用“ Label”。仅network_name是必需的。您还可以通过添加来添加安全组。
- --security-group
为每个安全组添加此参数,因此,如果要添加6个安全组,则应添加此参数6次。
- neutron port-create --fixed-ip ip_address=
--mac-address --name
注意neutron端口的ID,下一步将需要它。
8.在OpenStack中创建并启动实例
现在,我们已经准备就绪,可以使用Cinder卷和可选的neutron端口创建实例。注意启动磁盘的卷ID。现在,您只需要知道要选择的flavor的ID。运行nova flavor-list,以获取所所需要flavor的flavor ID。
现在,您可以创建并启动新实例:
- nova boot
--flavor --boot-volume --nic port-id=
注意实例ID。现在,通过执行此命令来添加实例的其他磁盘(如果要添加其他卷):
- nova volume-attach
总结
迁移过程中可能会出现失败的情况,尤其是windows。错误版本的驱动程序极易导致windows系统蓝屏,所以正确的安装驱动非常重要。对于较大的数据盘,本案例是使用直接上传到ceph中,替换掉相同大小的空卷,如果通过镜像glance的方式上传,然后创建云盘,那么会多花几倍的时间。所以合理以及灵活的使用Ceph能大大加快迁移的速度。
本文主要讲解了操作的流程,如果是批量操作的话,完全可以写成对应的编排脚本,进行批量迁移。脚本运行之前一定要充分测试。
网站名称:迁移实战|从VMware和Hyper-V迁移到OpenStack
网页路径:http://www.mswzjz.cn/qtweb/news9/488659.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能