客戶要將業務從自建的虛擬化數據中心遷移至UCloud,但願可以將多年前的VMware體系換到公有云體系。其中:git
另外,但願遷移過程不要太長,不要影響市場推廣等工做及業務創新。github
通過可行性分析,至少存在如下挑戰:web
基於以上緣由,沒法使用現成的工具,由於遷移工具對主流操做系統(CentOS、Ubuntu)支持較好,可是比較老的系統,因爲新的硬件驅動缺少廠商支持緣由,致使沒法使用。數據庫
所以,只能經過鏡像方式遷移。windows
基於上,總體遷移思路,基本是2個方向:安全
前置條件是:服務器
二、線下磁盤拷貝網絡
對於數據量太大、公網帶寬不夠大、因安全因素不方便公網傳輸等,是公網在線傳輸作不到的,能夠體現線下磁盤拷貝的優點。架構
這裏使用U閃盤(能夠理解爲aws的snowball、阿里的閃電立方)來作鏡像的傳輸。主要有如下優點:運維
爲了簡化步驟,減小中間態等待時間,且爲了縮短單個遷移過程時間,採用異步操做,減小同步操做帶來的等待時間。
在此例中,因爲數據太大,爲加快遷移速度,所以選擇了方案2,線下磁盤遷移方式。
遷移流程圖以下:
首先須要:
上述流程中需提早建立物理雲服務器,經過U閃盤進行系統盤和數據盤鏡像的傳輸,將存儲好數據的U閃盤掛載到物理雲服務器,同時在物理雲主機內完成系統盤鏡像的格式轉換和驅動的注入過程。
在物理雲主機內經過內部API,建立臨時中起色器,並建立具備系統盤屬性的雲盤,把掛載的U閃盤看成本地盤,經過qemu-nbd,將U閃盤的系統盤和數據盤分別遠程掛載到建立的中起色的兩塊雲盤上(系統盤與數據盤)。
將臨時建立的中起色綁定的兩塊雲盤卸載下來,經過系統盤建立雲主機(該過程須要內部API來實現),將另外一塊磁盤看成數據盤掛載,完成對雲主機系統盤數據盤的遷移。
3.1IDC中VMware環境準備
1.vSphere客戶端鏈接vCenter服務器
安裝vsphere客戶端,遠程鏈接到IDC中VMware的管理節點vCenter,其將對應克隆出的鏡像傳輸到U閃盤中保存。
2.導出鏡像
對於關機離線的系統,能夠直接導出OVF或者VMDK格式的鏡像;對於未能離線導出的系統,可進行鏡像克隆,克隆後的格式爲VMDK。
3.2中轉服務器環境準備
①安裝KVM虛擬化環境
安裝CentOS 7操做系統,並確保支持開啓硬件虛擬化功能;確保磁盤空間很多於遷移數據量。安裝KVM虛擬化,執行命令以下:
# yum install qemu-kvm qemu-key-tools libvirt qemu-img # yum install virt-* # modprobe kvm # modprobe kvm_intel # systemctl start libvirtd # systemctl enable libvirtd.service
②安裝virt-v2v
考慮到兼容雲服務商的兼容性問題(例如IO及網絡的加速,系統的高內核版本),針對老舊的系統,如:Windows 2000,Windows Server 2003,Windows Server 2008等,須要用virt-v2v轉換。
對於IO加速,經過virt-v2v自動注入VirtIO驅動來解決,能夠把虛擬機從一個虛擬平臺導入到另一個虛擬平臺,使用 virt-v2v 命令將其它虛擬機監控程序(hypervisor)上運行的虛擬機進行轉換,從而能夠在 Red Hat Enterprise Virtualization 或由 libvirt 管理的 KVM 上運行。當前,virt-v2v 能夠轉換在 Xen、KVM 和 VMware ESX / ESX(i) 上運行的 Red Hat Enterprise Linux 虛擬機和 Windows 虛擬機。在須要的狀況下,virt-v2v 會在被轉換的虛擬機上啓用準虛擬化(VirtIO)驅動。
virt-v2v將外部的虛擬化平臺上的虛擬機轉化到能夠運行的KVM平臺上。它能夠讀取運行在VMware、Xen、Hyper-V和其餘虛擬機管理程序上的Windows和Linux的虛擬機,並將其轉換爲KVM的libvirt,OpenStack,oVirt,紅帽虛擬化(RHV)等幾種方式。
# yum install virt-v2v
③宿主機上安裝VirtIO驅動
Virtio驅動程序是KVM虛擬機的半虛擬化設備驅動程序,半虛擬化驅動程序可提升機器性能,減小I / O延遲並將吞吐量提升到接近裸機水平。安裝Windows的VirtIO驅動以下:
# yum install libguestfs-winsupport libguestfs-tools # wget https://fedorapeople.org/groups/virt/VirtIO-win/VirtIO-win.repo -O /etc/yum.repos.d/VirtIO-win.repo # yum install VirtIO-win
④安裝ntfs-3g,用於掛載U閃盤
NTFS-3G支持在Linux, FreeBSD, Mac OS X, NetBSD, Haiku等操做系統下讀寫NTFS格式的分區。除了徹底的文件屬主和訪問權限,它支持全部符合POSIX標準的磁盤操做。目的是爲那些用戶須要與NTFS可靠互通的硬件平臺和操做系統提供可信任的、功能豐富的高性能方案。
# yum install epel-release # yum install ntfs*
⑤編譯安裝NDB
安裝NBD可被用來進行遠程存儲和備份,NBD的驅動程序在本地客戶端模擬了一個塊設備,好比一個磁盤或者是一塊磁盤分區,但實際提供物理支持的倒是經過網絡鏈接的遠程服務器。
3.3鏡像格式轉換與VirtIO驅動注入
轉換磁盤文件並注入VirtIO驅動程序,執行命令以下:
# export LIBGUESTFS_BACKEND=direct # virt-v2v -i vmx server2003.vmx -of qcow2 -o qemu -os ./ // 注:執行命令virt-v2v -i vmx 「vmx文件名」 –of qcow2 –o qemu –os 「轉換後磁盤文件存放路徑」,默認是把系統盤與數據盤都進行轉換,爲了節省轉換時間,能夠修改vmx文件只進行系統盤的轉換。
3.4經過API建立中轉系統盤及數據盤
經過API建立新的雲盤,做爲用來開啓雲主機的系統盤,以及用來導入數據的數據盤(_其中系統屬性的磁盤爲內部API_)。新建立的兩塊雲盤均爲臨時中轉盤,用來存儲導入鏡像的系統以及數據。
具體的API可參考:https://github.com/ucloud
3.5遠程掛載雲盤與磁盤拷貝
爲減小遷移耗時的流程,將U閃盤的系統盤和數據盤以網絡的形式直接掛載到新建立的VM上,而後將U閃盤內的數據與臨時中起色建立的雲盤實現內網的磁盤數據拷貝。鑑於磁盤IO和網絡帶寬的限制,上述方案可省去公網傳輸和對象存儲存儲鏡像的中轉過程。
具體過程以下:使用qemu-nbd的遠程磁盤掛載,將U閃盤的數據盤,直接掛載到雲盤上。而後將雲盤卸載,掛載到對應的客戶機器上去。
①在物理雲服務器上將U閃盤的磁盤鏡像掛載到nbd的特定端口
# qemu-nbd -r -t -v -f qcow2 -p 5000 web-sdc.qcow2 // 注:5000爲端口號,web-sdc爲數據盤鏡像。
②在中起色上安裝qemu-img,將遠程的數據盤鏡像掛載到新建立的雲硬盤。
# qemu-img convert nbd://10.23.xx.xx:5000 /dev/vdc // 注:10.23.xx.xx爲物理服務器內網IP地址,/dev/vdc爲新建立的雲盤。
3.6建立雲主機並掛載數據盤
對於已經同步過數據的系統盤與數據盤,經過API對系統盤進行雲主機的建立;對於雲數據盤,須要先將中起色上的雲盤進行卸載,而後掛載到須要開啓的目標雲主機上,從而達到雲主機的建立與數據盤的掛載功能。UCloud有自動化的腳本及程序來實現以上過程。
經過本次遷移,確承認以支持和限制因素以下,供參考。
4.1支持
對於VMware,此遷移支持如下環境:
4.2限制
本文來自UCloud華南架構中心,若有相關需求或業務諮詢,歡迎私信聯繫或評論區留言!