有一些用戶在剛開始的時候創(chuàng)建了A7,D14等虛擬機(jī)來跑一些IO要求比較高的應(yīng)用,比如Oracle數(shù)據(jù)庫,MySQL數(shù)據(jù)庫,等到用戶量上來之后,性能不夠,需要升級數(shù)據(jù)磁盤到SSD固態(tài)硬盤,但是問題是:
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括遂寧網(wǎng)站建設(shè)、遂寧網(wǎng)站制作、遂寧網(wǎng)頁制作以及遂寧網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,遂寧網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到遂寧省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
Azure的固態(tài)硬盤SSD磁盤屬于高級存儲Premium Storage
A系列,D系列的虛擬機(jī)無法使用高級存儲作為數(shù)據(jù)磁盤
只有DS,DSv2,GS系列的虛擬機(jī)才可以使用SSD作為數(shù)據(jù)磁盤
A系列,D系列虛擬機(jī)無法直接升級為DS/GS系列
GS系列暫時在中國沒有上線
那么在這種情況下,除了創(chuàng)建高級存儲賬號,重新創(chuàng)建DS系列的虛擬機(jī),導(dǎo)數(shù)據(jù)庫的數(shù)據(jù)從頭再來之外, 有沒有別的辦法?答案是肯定的,你可以根據(jù)如下步驟完成虛擬機(jī)的遷移:
根據(jù)你現(xiàn)在的VM大小,選擇你要創(chuàng)建的DS,DSv2的虛擬機(jī)大小
創(chuàng)建高級存儲賬號,目前中國北京和上海的高級存儲都已經(jīng)可用了
停止當(dāng)前VM,拷貝當(dāng)前虛擬機(jī)的系統(tǒng)VHD,數(shù)據(jù)VHS到高級存儲賬號
利用拷貝完成的VHD創(chuàng)建系統(tǒng)盤
利用系統(tǒng)磁盤創(chuàng)建DS,DSv2系列的虛擬機(jī)
掛載數(shù)據(jù)磁盤,檢查數(shù)據(jù)完整性
重新創(chuàng)建端點(diǎn)信息,測試服務(wù)啟動和連通性
上述這些步驟比較復(fù)雜,也容易出錯,因此上我創(chuàng)建了一個虛擬機(jī)遷移腳本,這個腳本可以在同一個訂閱的不同vnet之間,不同云服務(wù)之間,不同存儲賬號之間,不同的訂閱之間,不同的虛擬機(jī)類型之間進(jìn)行遷移,腳本我已經(jīng)放在了github上,請前往如下地址下載:
https://github.com/kingliantop/azurelabs/blob/master/vm/VMCopy.ps1
本文介紹如何使用該腳本進(jìn)行不同類型虛擬機(jī)之間的遷移:
首先在Azure上創(chuàng)建一臺Windows Server 2012的虛擬機(jī),作為遷移虛擬機(jī)運(yùn)行遷移工具,虛擬機(jī)尺寸盡量選擇大一些的,比如A7,主要是azcopy的執(zhí)行性能和虛擬機(jī)的核數(shù)會有關(guān)系
在虛擬機(jī)的D盤(D盤是臨時磁盤,重要數(shù)據(jù)不要放在上面,本例只是做臨時遷移使用)創(chuàng)建一個目錄,叫migvm
安裝對應(yīng)版本的Azure Powershell,在本測試中,請安裝0.9.8版本,這個腳本目前是用ASM模式運(yùn)作的,暫時不支持ARM,后續(xù)版本會支持:
Powershell 0.9.8
https://github.com/Azure/azure-powershell/releases?after=v1.0.0-preview-gallery-October2015
4. 安裝最新版本的azcopy,下載連接如下,請將azcopy安裝在d:\migvm下:
azcopy最新版本:
http://aka.ms/downloadazcopy
5. 下載Github上的VMcopy.ps1, 放在D:\migvm目錄下
6. 利用Azure上的新portal,或者powershell,創(chuàng)建高級存儲,目前國內(nèi)的新portal經(jīng)過測試可以成功創(chuàng)建高級存儲:
或者通過Powershell創(chuàng)建:
New-AzureStorageAccount -StorageAccountName "mypremstorage" -Location "China North" -Type "Premium_LRS"
7. 在本測試中,源虛擬機(jī)是一臺A3的Linux虛擬機(jī),有一塊數(shù)據(jù)磁盤:
8. 收集當(dāng)前需要遷移的源VM的相關(guān)信息:
云服務(wù)名稱(Cloud Service name)
虛擬機(jī)名稱(VM name)
當(dāng)前訂閱ID
目標(biāo)訂閱ID(可不寫,默認(rèn)和源訂閱一致,即同一個訂閱)
目標(biāo)云服務(wù)名稱(云服務(wù)名稱必須唯一)
源存儲容器名稱(可不寫,默認(rèn)是vhds)
目標(biāo)存儲名稱(你創(chuàng)建的高級存儲名稱)
目標(biāo)存儲容器名稱(可不寫,默認(rèn)vhds)
目標(biāo)虛擬網(wǎng)絡(luò)名稱
目標(biāo)region名稱(可不寫,默認(rèn)值China East)
虛擬網(wǎng)絡(luò)子網(wǎng)名稱(可不寫,默認(rèn)值Subnet-1)
注意事項(xiàng)和說明:
可以看到,為了大家使用方便,大部分的值如果你不寫,我都會有默認(rèn)值,但你必須非常清楚自己的環(huán)境
虛擬機(jī)在遷移過程中會停機(jī),如果當(dāng)前不是停機(jī)狀態(tài),腳本會經(jīng)你確認(rèn)后停機(jī)
遷移完成后,源虛擬機(jī)不會有任何變化,只是拷貝了一份源虛擬機(jī)到目標(biāo)存儲和服務(wù)
為了避免在同一個訂閱下創(chuàng)建磁盤報錯,默認(rèn)情況下會給磁盤加一個后綴"cp",避免重復(fù)
腳本的使用方法如下:
.\VMCopy.ps1 -SourceSubscriptionId SubID
-DestSubscritpionId DesSubID
-SourceCloudServiceName "mycs"
-SourceVMName "myvm"
-DestCloudServiceName "descs"
-DestStorageAccountName "destorage"
-DestLocationName "China East"
-DestVNetName "myvnet"
-DestSubNet "desubnet"
-DestSuffix "new"
9. 登入你的遷移工具虛擬機(jī),打開Azure Powershell,添加源訂閱賬號和目標(biāo)訂閱賬號:
Add-AzureAccount -Environment AzureChinacloud
10. 在Powershell里面,執(zhí)行遷移腳本進(jìn)行遷移,例如:
PS D:\migratevm> .\VMCopy.ps1 -SourceSubscriptionId IDXXX -DestSubscritpionId IDXXXX -SourceCloudServiceName mydockermaster -SourceVMName mydockermaster -DestCloudServiceName mydo
ckermasterds -DestStorageAccountName myxiostorage -SourceStorageContainerName vhds -DestStorageContainerName vhds -DestVNetName mydsvmnet -DestLocationName "China North"
待續(xù)。。