cba2kol基里连科突破

admin · 2008-07-01

  

  先容

  目前咱们有一整套运转长达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中的设置装备摆设和数据。是以,请小心的应用联系的号召

  全体办法

   装配VirtIO驱动步骤 扩大分区(可选) 自界说虚构机(可选) 创筑Cinder卷 将VMDK转换为Ceph 创筑Neutron端口(可选) 正在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)。

   创筑一个新的KVM实例。确保将Windows vmdk磁盘创筑为IDE磁盘!网卡应当是VirtIO装备。 增加特别的VirtIO磁盘,以便Windows能够装配VirtIO驱动步骤。 固然,您应当增加蕴含驱动步骤的VirtIO ISO或软盘驱动器。您还能够应用virt-copy-in 注入驱动步骤言件,并注入须要的注册外筑树以自愿装配驱动步骤。 启动虚构机,并给Windows大概两分钟年光,以找到新的VirtIO硬件。为全面新挖掘的硬件装配驱动步骤。确认没有装备没有装配驱动步骤。 合上体例并卸下特别的VirtIO磁盘。 将Windows vmdk磁盘从头界说为VirtIO磁盘(这是IDE)并启动实例。现正在应当能够寻常启动了。合上 虚构机。

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

  Linux 2.6.25及更高版本的内核仍旧内置了对VirtIO硬件的助助。是以,无需注入VirtIO驱动步骤。 应用VirtIO硬件创筑并启动新的KVM虚构机。倘使LVM分区没有自愿装配,请运转如下号召举行修复:

  

mount-oremount,rw/pvscanvgscanreboot

 

  (从头启动后,全面LVM分区都应当挂载,Linux应当能够寻常启动)

  完毕后合上虚构机。

  1.3 Linux(2.6.25以前的内核)

  少少Linux刊行版供给了用于较旧内核版本的VirtIO模块:

   红帽为RHEL 3.9及更高版本供给VirtIO助助 SuSe为SLES 10 SP3及更高版本供给VirtIO助助

  较旧内核的办法是:

   创筑KVM实例: Linux(内核2.6.25以前):应用IDE硬件创筑和启动KVM实例(因为只可设置装备摆设一个IDE 操纵器而招致发作4个磁盘,是以KVM中限于4 个磁盘!)。我没有测试过SCSI或SATA,由于本次迁徙中唯有不凌驾4个磁盘的Linux虚构机。Linux应当启动没有成绩。 加载virtio模块(特定于刊行版):RHEL(旧版本):https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/ch10s04.html 和SLES 10 SP3体例:https://www.suse.com/documentation/opensuse121/book_kvm/data/app_kvm_virtio_install.html 合上实例。 将全面磁盘变动为VirtIO磁盘并启动实例。现正在应当能够寻常启动了。 完毕后合上虚构机。对待Red Hat,请参阅:https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/ch10s04.html对待SuSe,请参阅:https://www.suse.com/documentation/opensuse121/book_kvm/data/app_kvm_virtio_install.htm

  1.4 Windows server 2008(及更低版本);不保举应用

  对待2012以前的Windows版本,您还能够应用如下办法拔出驱动步骤。

   将响应Windows版本的全面VirtIO驱动步骤言件复制到C:Drivers。您能够应用东西virt-copy-in将文献和文献夹复制到虚构磁盘中。 将* .sys文献复制到%WINDIR%system32%drivers(您能够愿望应用virt-ls查找准确的目次。请小心Windows中的巨细写)。您能够应用东西virt-copy-in将文献和文献夹复制到虚构磁盘中。 Windows注册外应联合硬件ID和驱动步骤,但默许境况下Windows中未装配VirtIO驱动步骤。是以,咱们需求我方做。您能够应用virt-win-reg 注入注册外文献。倘使您采选将全面VirtIO驱动步骤复制到C:Drivers之外的其余身分,则必需正在终末一行变动 DevicePath 变量(最简略的办法是正在外部Windows体例长进行变动,而后导出注册外文献,从而供给给迁徙虚构机应用)。

  注册外文献(也称为mergeviostor.reg,由于它仅保留VirtIO存储讯息):

  

WindowsRegistryEditorVersion5.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"="SCSIminiport""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的示例注册外文献:

  

WindowsRegistryEditorVersion5.00[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce]"Script"="cscriptC:StartupWinScript.vbs""Parameters"=""[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsNTCurrentVersionWinlogon]"AutoAdminLogon"="1""UserName"="Administrator""Password"="Password"

 

  4.创筑Glance镜像

  目前OpenStack平台应用Ceph行为存储、镜像后端。倘使创筑云主机愿望经由过程从镜像的办法启动而不是云盘的办法启动的话,那末镜像上传需求经由过程glance-api。咱们正在vMware上的云主机,体例盘数据巨细约为200G。不论是行为上传体积较大的raw或许qcow2镜像,因为要过程glance-api上传,速率会比拟慢,此时能够采取先上传到Ceph,再正在glance中create的办法,由于相联到Ceph后真个经常是万兆光口,上传速率会很疾:

  整个办法如下:

   天生随机uuid,行为镜像id

uuid=$(uuidgen)

经由过程rbd的办法上传镜像,同时增加响应的疾照与疾照保卫

rbd-pimages--image-format2importimage_file$uuidrbd-pimagessnapcreate--snapsnap$uuidrbd-pimagessnapprotect--snapsnap$uuid

glance创筑镜像,同时与rbd镜像举行联络合系

glanceimage-create--os-image-api-version1--id$uuid--nameimage_name--disk-formatraw--container-formatbare--is-publicfalse--locationrbd://$(cephfsid)/images/$uuid/snap

 

  5.创筑Cinder卷

  对待要导入的每一个磁盘,您需求创筑一个Cinder卷。Cinder号召中指定的卷巨细并不首要,由于下一步咱们将删除(并经由过程ceph直接导入的办法从头创筑)Ceph块装备。咱们仅创筑cinder卷以创筑Cinder和Ceph 之间的链接。

  然而,您应当使卷巨细与企图导入的磁盘肖似。这对待占据OpenStack料理界面(Horizon)用户来讲,操纵很简略。

  应用如下号召创筑一个cinder卷(巨细以GB为单元,您能够经由过程cinder type-list查验可用的卷范例):

  

cindercreate--display-name<name_of_disk><size>--volume-type<volumetype>

 

  小心卷ID(您也能够应用如下号召找到卷ID ),由于下一步需求应用这些ID。

  

cinderlist

 

  Cinder号召讯息:http://docs.openstack.org/cli-reference/content/cinderclient_co妹妹ands.html

  6.将VMDK转换为Ceph

  一朝创筑了Cinder卷,就能够将VMDK磁盘文献转换为RBD块(Ceph)。然而起首咱们需求删除现实的Ceph 磁盘。请确保删除准确的Ceph块装备!

  起首,您应当清晰磁盘驻留正在哪一个Ceph池中。而后从Ceph中删除该卷(volume-id是您正在上一步创筑Cinder卷中记实的卷ID ):

  

rbd-p<ceph_pool>rmvolume-<volume-id>

 

  下一步是将VMDK文献转换为Ceph上的卷(全面ceph的参数都是为了更好的职能。vmdk_disk_file变量是vmdk文献的无缺门途。volume-id**是您以前记下的ID)。

  

qemu-imgconvert-p<vmdk_disk_file>-Orbdrbd:<ceph_pool>/volume-<volume-id>

 

  对虚构机的全面虚构磁盘履行此操纵。

  当心!rbd号召绝顶壮大(能够会摧残Ceph上比预期更众的数据,请小心应用)!

  7.创筑Neutron端口(可选)

  正在某些境况下,您能够需求筑树牢固的IP所在或MAC所在。您能够经由过程应用neutron创筑端口并鄙人一步中应用该端口(正在OpenStack中创筑和启动实例中举行联络合系)来达成。您起首应当清晰network_name是甚么(nova net-list),需求应用 Label。仅network_name是必须的。您还能够经由过程增加来增加安详组。

  

--security-group<security_group_name>

 

  为每一个安详组增加此参数,是以,倘使要增加6个安详组,则应增加此参数6次。

  

neutronport-create--fixed-ipip_address=<ip_address>--mac-address<mac_address><network_name>--name<port_name>

 

  小心neutron端口的ID,下一步将需求它。

  8.正在OpenStack中创筑并启动实例

  现正在,咱们仍旧打定停当,能够应用Cinder卷和可选的neutron端口创筑实例。小心启动磁盘的卷ID。现正在,您只要要清晰要采选的flavor的ID。运转nova flavor-list,以获取所所需求flavor的flavor ID。

  现正在,您能够创筑并启动新实例:

  

novaboot<instance_name>--flavor<flavor_id>--boot-volume<boot_volume_id>--nicport-id=<neutron_port_id>

 

  小心实例ID。现正在,经由过程履行此号召来增加实例的其余磁盘(倘使要增加其余卷):

  

novavolume-attach<instance_ID><volume_id>

 

  总结

  迁徙过程当中能够会崭露失利的境况,特别是windows。谬误版本的驱动步骤极易招致windows体例蓝屏,以是准确的装配驱动绝顶首要。对待较大的数据盘,本案例是应用直接上传到ceph中,替代掉肖似巨细的空卷,倘使经由过程镜像glance的办法上传,而后创筑云盘,那末会众花几倍的年光。以是公道以及灵巧的应用Ceph能大大加疾迁徙的速率。

  本文首要讲明了操纵的流程,倘使是批量操纵的话,所有能够写成对应的编排剧本,举行批量迁徙。剧本运转以前肯定要充足测试。

文章推荐:

2022 年中国人工智能行业发展现状与市场规模分析 市场规模超 3000 亿元

该来的总要来! 切尔西老板将彻底退出英国市场

雷神黑武士四代开售:i7搭RTX3060不到9千元

智慧城市中 5G 和物联网的未来