成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

遷移實戰|從VMware和Hyper-V遷移到OpenStack

云計算 虛擬化 OpenStack
當前我們有一整套運行長達5年之久的VMware,因服務器逐步報廢的原因,我們決定將所有的VMware虛擬主機遷移至OpenStack。OpenStack是采用Kolla部署的Train版本的高可用環境,Ceph為獨立部署的Nautilus版本。

 [[329658]]

介紹

當前我們有一整套運行長達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分區沒有自動安裝,請運行以下命令進行修復:

  1. mount -o remount,rw / 
  2. pvscan 
  3. vgscan 
  4. reboot 

(重新啟動后,所有LVM分區都應該掛載,Linux應該可以正常啟動)

完成后關閉虛擬機。

1.3 Linux(2.6.25之前的內核)

一些Linux發行版提供了用于較舊內核版本的VirtIO模塊:

  • 紅帽為RHEL 3.9及更高版本提供VirtIO支持
  • SuSe為SLES 10 SP3及更高版本提供VirtIO支持

較舊內核的步驟是:

  1. 創建KVM實例:
  2. Linux(內核2.6.25之前):使用IDE硬件創建和啟動KVM實例(由于只能配置一個IDE 控制器而導致產生4個磁盤,因此KVM中限于4 個磁盤!)。我沒有嘗試過SCSI或SATA,因為本次遷移中只有不超過4個磁盤的Linux虛擬機。Linux應該啟動沒有問題。
  3. 加載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
  4. 關閉實例。
  5. 將所有磁盤更改為VirtIO磁盤并啟動實例。現在應該可以正常啟動了。
  6. 完成后關閉虛擬機。對于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版本,您還可以使用以下步驟插入驅動程序。

  1. 將相應Windows版本的所有VirtIO驅動程序文件復制到C:Drivers。您可以使用工具virt-copy-in將文件和文件夾復制到虛擬磁盤中。
  2. 將* .sys文件復制到%WINDIR%system32%drivers(您可能希望使用virt-ls查找正確的目錄。請注意Windows中的大小寫)。您可以使用工具virt-copy-in將文件和文件夾復制到虛擬磁盤中。
  3. Windows注冊表應結合硬件ID和驅動程序,但默認情況下Windows中未安裝VirtIO驅動程序。因此,我們需要自己做。您可以使用virt-win-reg 注入注冊表文件。如果您選擇將所有VirtIO驅動程序復制到C:Drivers以外的其他位置,則必須在最后一行更改“ DevicePath” 變量(最簡單的方法是在外部Windows系統上進行更改,然后導出注冊表文件,從而提供給遷移虛擬機使用)。

注冊表文件(也稱為mergeviostor.reg,因為它僅保存VirtIO存儲信息):

  1.  Windows Registry Editor Version 5.00 
  2.  
  3. [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00000000] 
  4. "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor" 
  5. [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00020000] 
  6. "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}" 
  7. "Service"="viostor" 
  8.  
  9. [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00021AF4] 
  10. "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor" 
  11. [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1001&subsys_00021AF4&rev_00] 
  12. "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}" 
  13. "Service"="viostor" 
  14.  
  15. [HKEY_LOCAL_MACHINESYSTEMControlSet001ControlCriticalDeviceDatabasepci#ven_1af4&dev_1004&subsys_00081af&rev_00] 
  16. "ClassGUID"="{4D36E97B-E325-11CE-BFC1-08002BE10318}""Service"="viostor" 
  17. [HKEY_LOCAL_MACHINESYSTEMControlSet001Servicesviostor] 
  18. "ErrorControl"=dword:00000001 
  19. "Group"="SCSI miniport" 
  20. "Start"=dword:00000000 
  21. "Tag"=dword:00000021 
  22. "Type"=dword:00000001 
  23. "ImagePath"="system32driversviostor.sys" 
  24.  
  25. [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion] 
  26. "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的示例注冊表文件:

  1. Windows Registry Editor Version 5.00 
  2.  
  3. [HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce] 
  4.  "Script"="cscript C:StartupWinScript.vbs" 
  5.  "Parameters"="" 
  6.  
  7. [HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWinlogon] 
  8. "AutoAdminLogon"="1" 
  9. "UserName"="Administrator" 
  10. "Password"="Password" 

4.創建Glance鏡像

當前OpenStack平臺使用Ceph作為存儲、鏡像后端。如果創建云主機希望通過從鏡像的方式啟動而不是云盤的方式啟動的話,那么鏡像上傳需要通過glance-api。我們在vMware上的云主機,系統盤數據大小約為200G。不管是作為上傳體積較大的raw或者qcow2鏡像,由于要經過glance-api上傳,速度會比較慢,此時可以采用先上傳到Ceph,再在glance中create的方式,因為連接到Ceph后端的通常是萬兆光口,上傳速度會很快:

具體步驟如下:

  • 生成隨機uuid,作為鏡像id
  1. uuid=$(uuidgen) 
  • 通過rbd的方式上傳鏡像,同時添加相應的快照與快照保護
  1. rbd -p images --image-format 2 import image_file $uuid 
  2. rbd -p images snap create --snap snap $uuid 
  3. rbd -p images snap protect --snap snap $uuid 
  • glance創建鏡像,同時與rbd鏡像進行關聯
  1. 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檢查可用的卷類型):

  1. cinder create --display-name <name_of_disk> <size> --volume-type <volumetype> 

注意卷ID(您也可以使用以下命令找到卷ID ),因為下一步需要使用這些ID。

 

  1. cinder list | grep <name_of_disk> 

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 ):

  1. rbd -p <ceph_pool> rm volume-<volume-id> 

下一步是將VMDK文件轉換為Ceph上的卷(所有ceph的參數都是為了更好的性能。vmdk_disk_file變量是vmdk文件的完整路徑。volume-id**是您之前記下的ID)。

  1. qemu-img convert -p <vmdk_disk_file> -O rbd rbd:<ceph_pool>/volume-<volume-id> 

對虛擬機的所有虛擬磁盤執行此操作。

小心!rbd命令非常強大(可能會破壞Ceph上比預期更多的數據,請謹慎使用)!

7.創建Neutron端口(可選)

在某些情況下,您可能需要設置固定的IP地址或MAC地址。您可以通過使用neutron創建端口并在下一步中使用該端口(在OpenStack中創建和啟動實例中進行關聯)來實現。您首先應該知道network_name是什么(nova net-list),需要使用“ Label”。僅network_name是必需的。您還可以通過添加來添加安全組。

 

  1. --security-group <security_group_name> 

為每個安全組添加此參數,因此,如果要添加6個安全組,則應添加此參數6次。

  1. neutron port-create --fixed-ip ip_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。

現在,您可以創建并啟動新實例:

  1. nova boot <instance_name> --flavor <flavor_id> --boot-volume <boot_volume_id> --nic port-id=<neutron_port_id> 

注意實例ID。現在,通過執行此命令來添加實例的其他磁盤(如果要添加其他卷):

  1. nova volume-attach <instance_ID> <volume_id> 

總結

遷移過程中可能會出現失敗的情況,尤其是windows。錯誤版本的驅動程序極易導致windows系統藍屏,所以正確的安裝驅動非常重要。對于較大的數據盤,本案例是使用直接上傳到ceph中,替換掉相同大小的空卷,如果通過鏡像glance的方式上傳,然后創建云盤,那么會多花幾倍的時間。所以合理以及靈活的使用Ceph能大大加快遷移的速度。

本文主要講解了操作的流程,如果是批量操作的話,完全可以寫成對應的編排腳本,進行批量遷移。腳本運行之前一定要充分測試。

 

責任編輯:武曉燕 來源: 新鈦云服
相關推薦

2012-05-18 10:03:32

VMware

2015-06-17 13:26:41

FICOVMwareOpenStack

2012-09-12 10:35:51

Hyper-V

2010-06-30 09:05:02

Hyper-V遷移

2011-09-29 09:39:45

VMwareHyper-V

2012-05-21 10:23:36

2010-10-14 10:50:32

Hyper-Vbrownout

2013-06-27 09:52:01

Hyper-V在線存儲

2011-11-21 10:27:43

虛擬化PowerShellHyper-V

2013-08-06 10:25:18

Hyper-V虛擬機遷移

2011-11-10 13:44:13

VMwareKVM遷移

2013-06-27 09:50:00

Hyper-V在線存儲

2013-07-01 10:29:21

Win Server Hyper-V

2015-12-18 16:19:47

私有云從VMwareOpenStack

2022-07-27 22:48:29

消息中間件RocketMQ架構設計

2010-09-29 11:06:21

活動目錄OpenLDAP

2010-10-14 10:54:32

Hyper-V

2014-04-18 09:18:07

Hyper-V虛擬機實時遷移

2015-11-10 10:21:45

VMwareOpenStack私有云

2013-05-03 08:58:37

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产91久久久久久吃药 | www.99热这里只有精品 | 97久久久久久久久 | 草比网站 | 中文字幕二区 | 国产一级黄色网 | 欧美激情精品久久久久 | 国产精品污www一区二区三区 | 天天拍天天草 | 亚洲一区欧美 | 日本一二三区在线观看 | 激情小说综合网 | 国产成人区 | 久久一| 国产精品美女久久久久久免费 | 91在线看| 青青久草 | 国产亚洲精品美女久久久久久久久久 | 欧美综合国产精品久久丁香 | 国产超碰人人爽人人做人人爱 | 国产日韩久久 | 欧美一区二区视频 | 久久久久久av | 亚洲区一| 亚洲精选久久 | 国产在视频一区二区三区吞精 | 一区二区三区四区免费视频 | 91 在线 | 久久9999久久 | 91精品国产91久久久久久丝袜 | 欧美日韩在线一区二区三区 | 日韩av一区二区在线观看 | 国产大毛片 | 午夜在线| 99国产精品99久久久久久 | 激情在线视频网站 | 91久久精品| 91精品综合久久久久久五月天 | 一区二区三区四区在线 | 亚洲网站在线观看 | 精品一区二区在线观看 |