很多時候,我們會有這樣的需求,需要將DC中vmware虛擬化的服務器,遷移到aws上,我們就得先將vmware虛擬機導出,然后轉換
關於vmvare虛擬的導出備份,一般有ova(Open Virtual Appliance )文件件和ovf(Open Virtual Format)多文件兩種格式
筆者根據自己的實際工作經驗,整理了主要操作過程,需要如下3步:
1、導出OVA/OVF備份
2、將OVA/OVF上傳至S3上
3、將S3上的OVA/OVF轉換成AMI
關於OVA/OVF轉換成AMI,也可參考如下AWS官方文檔資料:
https://docs.amazonaws.cn/vm-import/latest/userguide/vmimport-image-import.html
+++++++++ 具體操作如下,以OVF格式為例):
1、事先需要准備的,創建一個s3桶:s3://dcvmbackup,然后可以在其下單獨創建一個文件夾DC-VM-HGTAA02V
2、將導出的OVF備份目錄同步到s3上(使用cp上傳可能會中斷,推薦使用sync同步)
[qq_5201351@localhost DC-VM-HGTAA02V]# aws s3 sync ./ s3://dcvmbackup/DC-VM-HGTAA02V
3、上傳完成后,將S3上的備份轉換成AMI,先寫ovf轉換成ami的json文件(如寫到 /tmp/vm.json):
[ { "Description": "First disk", "Format": "vmdk", "UserBucket": { "S3Bucket": "dcvmbackup", "S3Key": "DC-VM-HGTAA02V/HGTAA02V-1.vmdk" } }, { "Description": "Second disk", "Format": "vmdk", "UserBucket": { "S3Bucket": "dcvmbackup", "S3Key": "DC-VM-HGTAA02V/HGTAA02V-2.vmdk" } } ]
3、執行轉換命令(成功后,將在aws層的后台執行了)
aws ec2 import-image --description "DC-VM-HGTAA02V" --disk-containers "file:///tmp/vm.json"
4、執行后,會在終端輸出一個import-task-ids,這個值將默認作為AMI轉換成功后,AWS/AMIs界面中的AMI Name
后續也需要使用此值,查詢轉換的狀態(會分幾個階段執行的,完全轉換完成后,如下所示,在第一行最后會顯示completed)
[qq_5201351@localhost ~]# aws ec2 describe-import-image-tasks --import-task-ids import-ami-0b31bf4357b880a82 IMPORTIMAGETASKS x86_64 DC-VM-HGTAA02V ami-0fa0c86c6cf316c83 import-ami-0b31bf4357b880a82 AWS Windows completed SNAPSHOTDETAILS First disk /dev/sda1 25364550656.0 VMDK snap-0e46853558beb56dd completed USERBUCKET dcvmbackup DC-VM-HGTAA02V/HGTAA02V-1.vmdk SNAPSHOTDETAILS Second disk /dev/sdg 27609645568.0 VMDK snap-075b0c2042a3e6a88 completed USERBUCKET dcvmbackup DC-VM-HGTAA02V/HGTAA02V-2.vmdk [qq_5201351@localhost ~]#
說明:轉換完成后,才會看到AMI-ID,如下所示的ami-0fa0c86c6cf316c83
++++++ 補充說明:如果是OVA格式的,只是json文件格式不一樣,因為是單文件、所以語法會更加簡潔一些,如下:
不過,好像新版本的Vcenter/Esxi,大多默認都只支持OVF格式的導出了
[ { "Description": "My Server OVA", "Format": "ova", "UserBucket": { "S3Bucket": "my-import-bucket", "S3Key": "vms/my-server-vm.ova" } } ]
關於OVA格式的轉換同OVF一樣的,公司此前在轉換有些主機時,也可能會加上--license-type BYOL選項,從技術上來說,不加也是可以的
如果是要取消處於活躍狀態的導入任務,我們可以使用 cancel-import-task 命令,如下:
aws ec2 cancel-import-task --import-task-id import-ami-1234567890abcdef0
尊重別人的勞動成果 轉載請務必注明出處:https://www.cnblogs.com/5201351/p/14706034.html
