歡迎你們前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~javascript
本文由 騰訊雲計算產品團隊發表於 雲+社區專欄
在雲計算時代,不論是從IDC上雲仍是多雲直接的遷移,都已是常見的事宜。而在上雲/遷移的方案中,也是有多種的方式可以將主機遷移到騰訊雲中。java
然而,不一樣的方式會有不一樣的利弊。python
目前,騰訊雲能夠提供導入鏡像和服務遷移(冷遷移)的工具,而這兩種方式均涉及到鏡像製做。故本文將分享鏡像製做的操做步驟,僅供參考。算法
一、在製做鏡像以前須要瞭解符合導入騰訊雲的鏡像文件要求,詳情可參考導入鏡像概述。json
Linux 系統類型鏡像限制ubuntu
Windows 系統類型鏡像限制centos
二、接下來則依據操做系統的不一樣,選擇不一樣的鏡像製做方法。請分別參考官網文檔Linux 鏡像製做和Windows 鏡像製做。安全
三、在製做鏡像以前,須要在Linux操做系統裏安裝cloud-init,在Widows操做系統裏安裝cloud-base。相應的操做能夠查看官網文檔Linux 系統安裝 cloud-init和Windows 系統安裝 cloud-base。服務器
四、鏡像製做完畢以後,則須要將鏡像上傳至COS。網絡
五、當鏡像已經上傳到COS以後,則能夠利用【導入鏡像】將自定義鏡像導入到鏡像控制檯,而後再基於該自定義鏡像建立CVM。或者利用【服務遷移】的功能,直接從COS拉取鏡像並建立CVM。
相應的操做指引,其實官網文檔均已提供,而本文將做爲實踐的一些經驗分享,供你們參考,但願對你們有幫助。
Linux和Windows鏡像製做的完整步驟官網文檔均已給出參考文檔,這裏補充兩個信息。
一、若是是友商雲主機,Linux系統的則可使用qemu-img 命令或者 dd 命令來製做鏡像;若是是Windows系統則可使用disk2vhd工具來製做鏡像。
二、若是是在本地IDC的虛擬機,可使用虛擬化平臺自帶的一些鏡像導出功能或者鏡像製做工具來製做鏡像。
三、若是是本地IDC的物理機,但是使用一些P2V的工具來製做或者參考1使用相關命令來製做。
本示例是經過dd命令將某雲主機制做成鏡像,參考步驟以下。
0、製做鏡像以前,請先在操做系統內安裝cloud-init(Linux系統),詳細操做方法參考第二部分介紹。
一、因爲須要將雲主機經過dd方式將整個操做系統盤備份到數據盤,因此須要給雲主機掛一個約爲系統盤2倍容量的數據盤(單獨 購買的數據盤 須要先 掛載數據盤,而後格式化)。
二、通常雲主機裏面都有一些雲廠商的agent或者服務,好比騰訊雲的雲監控、雲安全的agent。當要把某雲主機遷移到騰訊雲時,應該把該雲主機內特定的一些組件和服務卸載掉或者禁用掉。
三、使用 dd 命令製做鏡像
dd if=/dev/vda of=/mnt/xxx_yun.raw bs=100M 請務必寫成/dev/vda而不要寫成/dev/vda1,不然dd出來的鏡像分區表和mbr信息都丟了
四、使用qemu-img 命令將raw文件轉換成qcow2文件,以能夠節省傳輸和遷移的時間。
qemu-img convert -f raw -O qcow2 xxx_yun.raw xxx_yun.qcow2
五、將qcow2鏡像文件上傳到騰訊雲COS
coscmd config -a <access_id> -s<secret_key> -u <appid> -b melodytest01 -r ap-beijing -m 10 -p 10 coscmd upload /mnt/xxx_yun.qcow2 xxx_yun.qcow2
六、 等待一段時間以後,登陸騰訊雲COS控制檯則能夠看到鏡像已經成功從某友商雲傳到COS了。
打開虛擬機的編輯設置界面
vmdk磁盤文件路徑
這就是vmdk鏡像文件了
關於Cloud-init和Cloud-base的安裝,官網上也給出了參考文檔。而Linux系統做爲經常使用的系統,本文的實踐示例則以Cloud-init爲例。
cloud-init 主要提供了一個實例首次初始化時的自定義配置的能力,若是導入的鏡像沒有安裝cloud-init服務,經過該鏡像啓動的實例就不會被正常初始化,所以該鏡像就會導入失敗。所以再製做鏡像以前應當在系統內安裝cloud-init。
當系統啓動時,cloud-init 可完成包括但不限於下面的定製化工做:
cloud-init的安裝其實仍是挺簡單的,最麻煩的是安裝依賴包。不一樣操做系統的依賴包的依賴包的版本還不同,若是是不能聯網的狀況下安裝,更是一件麻煩的事情。詳細步驟能夠查看官網文檔Linux 系統安裝 cloud-init,而我在此則僅補充相關tips,但願對你們有幫助。
yum intstall -y python-setuptools python-jinja2 python-prettytable python2-oauthlib python-configobj PyYAML python-requests python-jsonpatch python-six
requirement.txt的截圖
certifi-2017.11.5 chardet-3.0.4 configobj-5.0.6 functools32-3.2.3-2 idna-2.6 Jinja2-2.10 jsonpatch-1.20 jsonpointer-1.14 jsonschema-2.6.0 MarkupSafe-1.0 oauthlib-2.0.6 prettytable-0.7.2 PyYAML-3.12 requests-2.18.4 setuptools-38.2.4 six-1.11.0 urllib3-1.22
rpm -qa | grep setuptools rpm -qa | grep jinja2 rpm -qa | grep prettytable rpm -qa | grep oauthlib rpm -qa | grep configobj rpm -qa | grep PyYAML rpm -qa | grep requests rpm -qa | grep jsonpatch rpm -qa | grep jsonschema rpm -qa | grep six
常常有些用戶辛辛苦苦把鏡像上傳到cos了,到了導入鏡像,半天過去導入失敗了,才發現cloud-init的安裝有問題。那麼,如何能夠確認咱們安裝的cloud-init是沒問題的呢?下面的方法,供參考。
一、 運行cloud-init init —local
二、執行 ll /var/lib/cloud,正常會看到以下截圖內容
三、執行rm -rf /var/lib/cloud
四、重啓你的服務器,正常狀況下,每次重啓都會成/var/lib/cloud
五、也能夠執行cloud-init status看下狀態是否正常。
將鏡像文件上傳到COS,有多種工具可支持,詳情可參考官網文檔COS 用戶工具,也可使用控制檯的方式將鏡像上傳至COS。因爲操做較爲簡單,我就再也不重複演示。
關於導入鏡像的詳細介紹可查看官網文檔導入鏡像概述,該功能須要開啓白名單方可以使用。相關操做演示以下,僅供參考。
一、登陸鏡像控制檯,選擇地域(請選擇與存放鏡像的COS的bucket同個地域),而後點擊【導入鏡像按鈕】。
二、閱讀導入鏡像的步驟,而且確認全部準備步驟已經完成。
三、填寫信息,而且開始導入。
補充,若非級特殊的狀況沒法安裝cloud-init,不然請不要選擇強制導入。強制導入的鏡像,因爲沒有cloud-init,基於該鏡像建立的CVM,沒法初始化,須要再建立CVM以後,登陸操做系統進行許多初始化操做,是一件較爲麻煩的事情。
操做日誌控制檯
40.jpg
近期騰訊雲也推出了新功能【服務遷移】,和【導入鏡像】的功能的差別,簡單描述以下。
一、導入鏡像,只能導入系統盤,數據盤沒法導入。而使用【雲服務器遷移】功能,能夠將系統盤和數據盤都導入到騰訊雲。
二、導入功能,步驟是把存在COS的鏡像導入到鏡像控制檯,而後再基於該鏡像建立CVM;而云服務器遷移則是,直接從COS上拉取鏡像文件,用該鏡像置換一個已存在的CVM實例的系統盤,從而實現遷移。(同理,數據盤的遷移也是一個相似的過程。得先建立CVM或者CBS,再使用雲服務器遷移的功能。)
下面是相關操做步驟,僅供參考。
一、 點擊【新建】按鈕新建一個遷移任務
二、瞭解遷入準備工做
三、填寫相關信息,開始遷移。
四、等待遷移任務完成,能夠在控制檯中看到進度。
五、遷移100%完成以後,用戶則能夠到雲主機控制檯找到剛剛遷入的雲主機,從新開機啓動便可。
離線數據遷移指的是遷移數據盤。數據盤也是能夠製做成一個鏡像,上傳至COS,而後使用【離線數據遷移】的功能,將數據盤的鏡像文件遷移到CBS中。相關步驟相似【離線實例遷移】。
一、 點擊【新建】按鈕新建一個遷移任務
二、瞭解遷入準備工做
三、填寫相關信息,開始遷移。
四、等待遷移任務完成,能夠在控制檯中看到進度。
五、遷移100%完成以後,用戶將此雲盤掛載到雲主機便可。
問答
CVM的默認DNS配置?
相關閱讀
在 CentOS7.2 下 DIY 動手搭建一個 WordPress
基於混合集成學習算法的熱遷移超時預測模型
低於0.01%的極致Crash率是怎麼作到的?
【每日課程推薦】新加坡南洋理工大學博士,帶你深度學習NLP技術
此文已由做者受權騰訊雲+社區發佈,更多原文請點擊
搜索關注公衆號「雲加社區」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!
海量技術實踐經驗,盡在雲加社區!