97成人免费视频,97视频免费公开成人福利,免费视频99,99婷婷,国产伊人久久,亚洲视频欧美,国产精品福利久久

您當(dāng)前的位置是:  首頁 > 資訊 > 文章精選 >
 首頁 > 資訊 > 文章精選 >

遷移實(shí)戰(zhàn)|從VMware和Hyper-V遷移到OpenStack

2020-06-23 09:28:14   作者:   來源:云技術(shù)   評論:0  點(diǎn)擊:


  介紹
  當(dāng)前我們有一整套運(yùn)行長達(dá)5年之久的VMware,因服務(wù)器逐步報(bào)廢的原因,我們決定將所有的VMware虛擬主機(jī)遷移至OpenStack。OpenStack是采用Kolla部署的Train版本的高可用環(huán)境,Ceph為獨(dú)立部署的Nautilus版本。
  當(dāng)前我們需要從VMware ESXi 遷移超過220個(gè)VMware虛擬機(jī)(Linux和Windows)到OpenStack。除了VMware主機(jī)外,還有少部分的Hyper-V虛擬主機(jī)也要進(jìn)行遷移。本文將為大家演示用于遷移虛擬機(jī)的步驟和命令。通過這些步驟和命令,可以輕松創(chuàng)建自動進(jìn)行遷移的腳本。
  本次遷移僅僅涉及V2V,不涉及任何的P2V。
  比較新版本的libguestfs-tools和qemu-img convert可以很好地處理VMDK文件(舊版本的工具存在一些問題),因此遷移效率更高。遷移過程中去除了從VMDK到VMDK(單個(gè)文件)以及從VMDK到RAW 的轉(zhuǎn)換步驟。通過減少這些步驟,使遷移速度將加倍。
  遷移過程中需要注意本文涉及到的命令,因?yàn)橐恍┟罘浅?qiáng)大,并且可以破壞Ceph和OpenStack中的配置和數(shù)據(jù)。因此,請謹(jǐn)慎的使用相關(guān)的命令
  全局步驟
  1. 安裝VirtIO驅(qū)動程序
  2. 擴(kuò)展分區(qū)(可選)
  3. 自定義虛擬機(jī)(可選)
  4. 創(chuàng)建Cinder卷
  5. 將VMDK轉(zhuǎn)換為Ceph
  6. 創(chuàng)建Neutron端口(可選)
  7. 在OpenStack中創(chuàng)建和啟動實(shí)例
  技術(shù)指標(biāo)
  以下是用于遷移的基礎(chǔ)結(jié)構(gòu)的規(guī)范:
  • 云平臺:OpenStack Train
  • 云存儲:Ceph
  • Windows實(shí)例:Windows Server 2012R2至2016
  • Linux實(shí)例:RHEL5/6/7,SLES,Debian和Ubuntu
  • 只能轉(zhuǎn)換來自ESXi的VMDK文件,無法使用qemu-img從VMware Player轉(zhuǎn)換VMDK文件
  • 不涉及加密磁盤的遷移
  • OpenStack為實(shí)例提供VirtIO半虛擬化硬件
  需求
  Linux“遷移服務(wù)器”(可以使用Ubuntu 14.04/16.04/18.04,CentOS6/CentOS7,Redhat6/Redhat7,F(xiàn)edora19-22),同時(shí)需滿足以下需求:
  服務(wù)器操作系統(tǒng)(已成功通過以下測試):
  • RHEL6(RHEL7沒有“ libguestfs-winsupport”)
  • Fedora 19、20、21和22
  • Ubuntu 14.04,16.04和18.04
  與正在運(yùn)行的OpenStack環(huán)境的網(wǎng)絡(luò)連接。最好不要通過公網(wǎng)Internet,因?yàn)槲覀冃枰?ldquo;超級管理員”權(quán)限。本地網(wǎng)絡(luò)連接通常比Internet連接更快。如果能保證是萬兆網(wǎng)絡(luò)的話將會更好。
  足夠的硬件性能與功能來轉(zhuǎn)換磁盤并能在KVM中運(yùn)行實(shí)例(大小取決于您要在一定時(shí)間內(nèi)遷移的實(shí)例,如有SSD最佳)。
  我們使用的服務(wù)器配置為,8核Intel Xeon E3-1230@3.3 GHz,64 GB RAM,8塊1TB SSD,并且每小時(shí)能夠遷移超過500 GB 。但是,這實(shí)際上取決于實(shí)例磁盤空間的使用情況。我的舊公司筆記本電腦(Core i5和8GB RAM和一個(gè)舊的4500rmp HDD)也可以工作,但是顯然性能很差。
  在遷移之前還要滿足如下需求:
  • 擁有Linux遷移主機(jī)上的本地sudo(root)權(quán)限
  • QEMU/KVM主機(jī)
  • OpenStack的權(quán)限(通過Keystone獲取)
  • 對Ceph的相應(yīng)的操作權(quán)限
  • 對OpenStack API和Ceph的不受限制網(wǎng)絡(luò)訪問
  • VirtIO驅(qū)動程序(可從Red Hat,F(xiàn)edora等主站下載)
  軟件包(所有軟件包都應(yīng)位于默認(rèn)的發(fā)行版存儲庫中):
  • python-cinderclient”(用于云盤)
  • python-keystoneclient”(用于向OpenStack進(jìn)行身份驗(yàn)證)
  • python-novaclient”(控制實(shí)例)
  • python-neutronclient”(用于控制網(wǎng)絡(luò))
  • python-httplib2”(以便能夠與Web服務(wù)通信)
  • libguestfs-tools”(用于訪問磁盤文件)
  • ibguestfs-winsupport”(應(yīng)該僅在基于RHEL的系統(tǒng)上單獨(dú)安裝)
  • libvirt-client”(控制KVM)
  • qemu-img”(轉(zhuǎn)換磁盤文件)
  • ceph”(將虛擬磁盤導(dǎo)入Ceph)
  • vmware-vdiskmanager”(用于擴(kuò)展VMDK磁盤,可從VMware站點(diǎn)下載)
  步驟
  1.注入VirtIO驅(qū)動程序
  1.1 Windows Server 2012
  從Windows Server 2012和Windows 8.0開始,驅(qū)動程序受Windows 保護(hù)。在脫機(jī)Windows磁盤中注入驅(qū)動程序非常困難。Windows Server 2012默認(rèn)無法從VirtIO硬盤啟動。因此,我采取了以下后續(xù)步驟將VirtIO驅(qū)動程序安裝到Windows中。請注意,這些步驟應(yīng)適用于所有經(jīng)過測試的Windows版本(2008/2012/2016)。
  創(chuàng)建一個(gè)新的KVM實(shí)例。確保將Windows vmdk磁盤創(chuàng)建為IDE磁盤!網(wǎng)卡應(yīng)該是VirtIO設(shè)備。
  添加額外的VirtIO磁盤,以便Windows可以安裝VirtIO驅(qū)動程序。
  當(dāng)然,您應(yīng)該添加包含驅(qū)動程序的VirtIO ISO或軟盤驅(qū)動器。您還可以使用virt-copy-in 注入驅(qū)動程序文件,并注入必要的注冊表設(shè)置以自動安裝驅(qū)動程序。
  啟動虛擬機(jī),并給Windows大約兩分鐘時(shí)間,以找到新的VirtIO硬件。為所有新發(fā)現(xiàn)的硬件安裝驅(qū)動程序。確認(rèn)沒有設(shè)備沒有安裝驅(qū)動程序。
  關(guān)閉系統(tǒng)并卸下額外的VirtIO磁盤。
  將Windows vmdk磁盤重新定義為VirtIO磁盤(這是IDE)并啟動實(shí)例。現(xiàn)在應(yīng)該可以正常啟動了。關(guān)閉 虛擬機(jī)。
  1.2 Linux(內(nèi)核2.6.25及更高版本)
  Linux 2.6.25及更高版本的內(nèi)核已經(jīng)內(nèi)置了對VirtIO硬件的支持。因此,無需注入VirtIO驅(qū)動程序。 使用VirtIO硬件創(chuàng)建并啟動新的KVM虛擬機(jī)。如果LVM分區(qū)沒有自動安裝,請運(yùn)行以下命令進(jìn)行修復(fù):
  • mount -o remount,rw /
  • pvscan
  • vgscan
  • reboot
  • (重新啟動后,所有LVM分區(qū)都應(yīng)該掛載,Linux應(yīng)該可以正常啟動)
  • 完成后關(guān)閉虛擬機(jī)。
  • 1.3 Linux(2.6.25之前的內(nèi)核)
  一些Linux發(fā)行版提供了用于較舊內(nèi)核版本的VirtIO模塊:
  • 紅帽為RHEL 3.9及更高版本提供VirtIO支持
  • SuSe為SLES 10 SP3及更高版本提供VirtIO支持
  較舊內(nèi)核的步驟是:
  創(chuàng)建KVM實(shí)例:
  Linux(內(nèi)核2.6.25之前):使用IDE硬件創(chuàng)建和啟動KVM實(shí)例(由于只能配置一個(gè)IDE 控制器而導(dǎo)致產(chǎn)生4個(gè)磁盤,因此KVM中限于4 個(gè)磁盤!)。我沒有嘗試過SCSI或SATA,因?yàn)楸敬芜w移中只有不超過4個(gè)磁盤的Linux虛擬機(jī)。Linux應(yīng)該啟動沒有問題。
  加載virtio模塊(特定于發(fā)行版):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系統(tǒng):https://www.suse.com/documentation/opensuse121/book_kvm/data/app_kvm_virtio_install.html
  關(guān)閉實(shí)例。
  將所有磁盤更改為VirtIO磁盤并啟動實(shí)例。現(xiàn)在應(yīng)該可以正常啟動了。
  完成后關(guān)閉虛擬機(jī)。對于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版本,您還可以使用以下步驟插入驅(qū)動程序。
  將相應(yīng)Windows版本的所有VirtIO驅(qū)動程序文件復(fù)制到C:Drivers。您可以使用工具virt-copy-in將文件和文件夾復(fù)制到虛擬磁盤中。
  將* .sys文件復(fù)制到%WINDIR%system32%drivers(您可能希望使用virt-ls查找正確的目錄。請注意Windows中的大小寫)。您可以使用工具virt-copy-in將文件和文件夾復(fù)制到虛擬磁盤中。
  Windows注冊表應(yīng)結(jié)合硬件ID和驅(qū)動程序,但默認(rèn)情況下Windows中未安裝VirtIO驅(qū)動程序。因此,我們需要自己做。您可以使用virt-win-reg 注入注冊表文件。如果您選擇將所有VirtIO驅(qū)動程序復(fù)制到C:Drivers以外的其他位置,則必須在最后一行更改“ DevicePath” 變量(最簡單的方法是在外部Windows系統(tǒng)上進(jìn)行更改,然后導(dǎo)出注冊表文件,從而提供給遷移虛擬機(jī)使用)。
  注冊表文件(也稱為mergeviostor.reg,因?yàn)樗鼉H保存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
  執(zhí)行完這些步驟后,Windows應(yīng)從不帶BSOD的VirtIO 磁盤引導(dǎo)。
  Windows引導(dǎo)時(shí),所有其他驅(qū)動程序(網(wǎng)絡(luò),balloon等)也應(yīng)自動安裝。
  請參閱: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.展開分區(qū)(可選)
  遷移的某些Windows服務(wù)器在Windows分區(qū)上的可用磁盤空間有限。沒有足夠的空間來安裝新的管理應(yīng)用程序。所以,可以使用用vmware-vdiskmanager工具,以增加磁盤的大小。然后,您仍然需要從操作系統(tǒng)擴(kuò)展分區(qū)。您可以在下一步中自定義虛擬機(jī)時(shí)執(zhí)行此操作。
  3.自定義虛擬機(jī)(可選)
  要準(zhǔn)備在OpenStack中運(yùn)行的操作系統(tǒng),您可能需要卸載某些軟件(例如VMware Tools和驅(qū)動程序),更改密碼并安裝新的管理工具等。您可以通過編寫腳本來自動執(zhí)行此操作。您應(yīng)該能夠使用virt-copy-in命令將腳本和文件注入虛擬磁盤。
  3.1在Linux中自動啟動腳本
  由于只有幾個(gè)Linux服務(wù)器需要遷移,因此我在Linux中手動啟動了腳本。而且很容易就做到了自動化。
  3.2在Windows中自動啟動腳本
  可以選擇RunOnce方法在Windows啟動時(shí)啟動腳本,因?yàn)樵摲椒ㄟm用于所有Windows版本。您可以 通過注入注冊表文件將腳本放入RunOnce。僅當(dāng)用戶登錄時(shí)才運(yùn)行RunOnce腳本。因此,還應(yīng)該注入Windows 管理員的用戶名,密碼,并將AutoAdminLogon設(shè)置為'1'。當(dāng)Windows啟動時(shí),它會自動登錄的用戶定義。完成后,請確保關(guān)閉虛擬機(jī)。
  自動登錄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.創(chuàng)建Glance鏡像
  當(dāng)前OpenStack平臺使用Ceph作為存儲、鏡像后端。如果創(chuàng)建云主機(jī)希望通過從鏡像的方式啟動而不是云盤的方式啟動的話,那么鏡像上傳需要通過glance-api。我們在vMware上的云主機(jī),系統(tǒng)盤數(shù)據(jù)大小約為200G。不管是作為上傳體積較大的raw或者qcow2鏡像,由于要經(jīng)過glance-api上傳,速度會比較慢,此時(shí)可以采用先上傳到Ceph,再在glance中create的方式,因?yàn)檫B接到Ceph后端的通常是萬兆光口,上傳速度會很快:
  具體步驟如下:
  生成隨機(jī)uuid,作為鏡像id
  uuid=$(uuidgen)
  通過rbd的方式上傳鏡像,同時(shí)添加相應(yīng)的快照與快照保護(hù)
  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創(chuàng)建鏡像,同時(shí)與rbd鏡像進(jìn)行關(guān)聯(lián)
  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.創(chuàng)建Cinder卷
  對于要導(dǎo)入的每個(gè)磁盤,您需要?jiǎng)?chuàng)建一個(gè)Cinder卷。Cinder命令中指定的卷大小并不重要,因?yàn)橄乱徊轿覀儗h除(并通過ceph直接導(dǎo)入的方式重新創(chuàng)建)Ceph塊設(shè)備。我們僅創(chuàng)建cinder卷以創(chuàng)建Cinder和Ceph 之間的鏈接。
  但是,您應(yīng)該使卷大小與計(jì)劃導(dǎo)入的磁盤相同。這對于擁有OpenStack管理界面(Horizon)用戶來說,操作很簡單。
  使用以下命令創(chuàng)建一個(gè)cinder卷(大小以GB為單位,您可以通過cinder type-list檢查可用的卷類型):
  cinder create --display-name <name_of_disk> <size> --volume-type <volumetype>
  注意卷ID(您也可以使用以下命令找到卷ID ),因?yàn)橄乱徊叫枰褂眠@些ID。
  cinder list | grep <name_of_disk>
  Cinder命令信息:http://docs.openstack.org/cli-reference/content/cinderclient_commands.html
  6.將VMDK轉(zhuǎn)換為Ceph
  一旦創(chuàng)建了Cinder卷,就可以將VMDK磁盤文件轉(zhuǎn)換為RBD塊(Ceph)。但是首先我們需要?jiǎng)h除實(shí)際的Ceph 磁盤。請確保刪除正確的Ceph塊設(shè)備!
  首先,您應(yīng)該知道磁盤駐留在哪個(gè)Ceph池中。然后從Ceph中刪除該卷(volume-id是您在上一步“創(chuàng)建Cinder卷”中記錄的卷ID ):
  rbd -p <ceph_pool> rm volume-<volume-id>
  下一步是將VMDK文件轉(zhuǎn)換為Ceph上的卷(所有ceph的參數(shù)都是為了更好的性能。vmdk_disk_file變量是vmdk文件的完整路徑。volume-id**是您之前記下的ID)。
  qemu-img convert -p <vmdk_disk_file> -O rbd rbd:<ceph_pool>/volume-<volume-id>
  對虛擬機(jī)的所有虛擬磁盤執(zhí)行此操作。
  小心!rbd命令非常強(qiáng)大(可能會破壞Ceph上比預(yù)期更多的數(shù)據(jù),請謹(jǐn)慎使用)!
  7.創(chuàng)建Neutron端口(可選)
  在某些情況下,您可能需要設(shè)置固定的IP地址或MAC地址。您可以通過使用neutron創(chuàng)建端口并在下一步中使用該端口(在OpenStack中創(chuàng)建和啟動實(shí)例中進(jìn)行關(guān)聯(lián))來實(shí)現(xiàn)。您首先應(yīng)該知道network_name是什么(nova net-list),需要使用“ Label”。僅network_name是必需的。您還可以通過添加來添加安全組。
  --security-group <security_group_name>
  為每個(gè)安全組添加此參數(shù),因此,如果要添加6個(gè)安全組,則應(yīng)添加此參數(shù)6次。
  neutron port-create --fixed-ip ip_address=<ip_address> --mac-address <mac_address> <network_name> --name <port_name>
  注意neutron端口的ID,下一步將需要它。
  8.在OpenStack中創(chuàng)建并啟動實(shí)例
  現(xiàn)在,我們已經(jīng)準(zhǔn)備就緒,可以使用Cinder卷和可選的neutron端口創(chuàng)建實(shí)例。注意啟動磁盤的卷ID。現(xiàn)在,您只需要知道要選擇的flavor的ID。運(yùn)行nova flavor-list,以獲取所所需要flavor的flavor ID。
  現(xiàn)在,您可以創(chuàng)建并啟動新實(shí)例:
  nova boot <instance_name> --flavor <flavor_id> --boot-volume <boot_volume_id> --nic port-id=<neutron_port_id>
  注意實(shí)例ID。現(xiàn)在,通過執(zhí)行此命令來添加實(shí)例的其他磁盤(如果要添加其他卷):
  nova volume-attach <instance_ID> <volume_id>
  總結(jié)
  遷移過程中可能會出現(xiàn)失敗的情況,尤其是windows。錯(cuò)誤版本的驅(qū)動程序極易導(dǎo)致windows系統(tǒng)藍(lán)屏,所以正確的安裝驅(qū)動非常重要。對于較大的數(shù)據(jù)盤,本案例是使用直接上傳到ceph中,替換掉相同大小的空卷,如果通過鏡像glance的方式上傳,然后創(chuàng)建云盤,那么會多花幾倍的時(shí)間。所以合理以及靈活的使用Ceph能大大加快遷移的速度。
  本文主要講解了操作的流程,如果是批量操作的話,完全可以寫成對應(yīng)的編排腳本,進(jìn)行批量遷移。腳本運(yùn)行之前一定要充分測試。
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對文中陳述、觀點(diǎn)判斷保持中立,不對所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔(dān)全部責(zé)任。

專題

CTI論壇會員企業(yè)

聊城市| 蒙山县| 佛冈县| 宣恩县| 区。| 柳林县| 句容市| 房山区| 邹平县| 宿州市| 景德镇市| 黄龙县| 噶尔县| 临沧市| 镇沅| 冷水江市| 淳化县| 瑞安市| 托克逊县| 峡江县| 拉孜县| 天峨县| 湟源县| 宁强县| 渑池县| 长寿区| 汉川市| 洪湖市| 凯里市| 揭东县| 平乡县| 平乐县| 马关县| 逊克县| 公主岭市| 井冈山市| 平凉市| 鄱阳县| 汨罗市| 上杭县| 从江县|