有一些用戶在剛開始的時候建立了A7,D14等虛擬機來跑一些IO要求比較高的應用,好比Oracle數據庫,MySQL數據庫,等到用戶量上來以後,性能不夠,須要升級數據磁盤到SSD固態硬盤,可是問題是:ios
Azure的固態硬盤SSD磁盤屬於高級存儲Premium Storagegit
A系列,D系列的虛擬機沒法使用高級存儲做爲數據磁盤github
只有DS,DSv2,GS系列的虛擬機纔可使用SSD做爲數據磁盤docker
A系列,D系列虛擬機沒法直接升級爲DS/GS系列shell
GS系列暫時在中國沒有上線數據庫
那麼在這種狀況下,除了建立高級存儲帳號,從新建立DS系列的虛擬機,導數據庫的數據從頭再來以外, 有沒有別的辦法?答案是確定的,你能夠根據以下步驟完成虛擬機的遷移:網絡
根據你如今的VM大小,選擇你要建立的DS,DSv2的虛擬機大小ide
建立高級存儲帳號,目前中國北京和上海的高級存儲都已經可用了工具
中止當前VM,拷貝當前虛擬機的系統VHD,數據VHS到高級存儲帳號性能
利用拷貝完成的VHD建立系統盤
利用系統磁盤建立DS,DSv2系列的虛擬機
掛載數據磁盤,檢查數據完整性
從新建立端點信息,測試服務啓動和連通性
上述這些步驟比較複雜,也容易出錯,所以上我建立了一個虛擬機遷移腳本,這個腳本能夠在同一個訂閱的不一樣vnet之間,不一樣雲服務之間,不一樣存儲帳號之間,不一樣的訂閱之間,不一樣的虛擬機類型之間進行遷移,腳本我已經放在了github上,請前往以下地址下載:
https://github.com/kingliantop/azurelabs/blob/master/vm/VMCopy.ps1
本文介紹如何使用該腳本進行不一樣類型虛擬機之間的遷移:
首先在Azure上建立一臺Windows Server 2012的虛擬機,做爲遷移虛擬機運行遷移工具,虛擬機尺寸儘可能選擇大一些的,好比A7,主要是azcopy的執行性能和虛擬機的核數會有關係
在虛擬機的D盤(D盤是臨時磁盤,重要數據不要放在上面,本例只是作臨時遷移使用)建立一個目錄,叫migvm
安裝對應版本的Azure Powershell,在本測試中,請安裝0.9.8版本,這個腳本目前是用ASM模式運做的,暫時不支持ARM,後續版本會支持:
Powershell 0.9.8
https://github.com/Azure/azure-powershell/releases?after=v1.0.0-preview-gallery-October2015
4. 安裝最新版本的azcopy,下載鏈接以下,請將azcopy安裝在d:\migvm下:
azcopy最新版本:
5. 下載Github上的VMcopy.ps1, 放在D:\migvm目錄下
6. 利用Azure上的新portal,或者powershell,建立高級存儲,目前國內的新portal通過測試能夠成功建立高級存儲:
或者經過Powershell建立:
New-AzureStorageAccount -StorageAccountName "mypremstorage" -Location "China North" -Type "Premium_LRS"
7. 在本測試中,源虛擬機是一臺A3的Linux虛擬機,有一塊數據磁盤:
8. 收集當前須要遷移的源VM的相關信息:
雲服務名稱(Cloud Service name)
虛擬機名稱(VM name)
當前訂閱ID
目標訂閱ID(可不寫,默認和源訂閱一致,即同一個訂閱)
目標雲服務名稱(雲服務名稱必須惟一)
源存儲容器名稱(可不寫,默認是vhds)
目標存儲名稱(你建立的高級存儲名稱)
目標存儲容器名稱(可不寫,默認vhds)
目標虛擬網絡名稱
目標region名稱(可不寫,默認值China East)
虛擬網絡子網名稱(可不寫,默認值Subnet-1)
注意事項和說明:
能夠看到,爲了你們使用方便,大部分的值若是你不寫,我都會有默認值,但你必須很是清楚本身的環境
虛擬機在遷移過程當中會停機,若是當前不是停機狀態,腳本會經你確認後停機
遷移完成後,源虛擬機不會有任何變化,只是拷貝了一份源虛擬機到目標存儲和服務
爲了不在同一個訂閱下建立磁盤報錯,默認狀況下會給磁盤加一個後綴"cp",避免重複
腳本的使用方法以下:
.\VMCopy.ps1 -SourceSubscriptionId SubID
-DestSubscritpionId DesSubID
-SourceCloudServiceName "mycs"
-SourceVMName "myvm"
-DestCloudServiceName "descs"
-DestStorageAccountName "destorage"
-DestLocationName "China East"
-DestVNetName "myvnet"
-DestSubNet "desubnet"
-DestSuffix "new"
9. 登入你的遷移工具虛擬機,打開Azure Powershell,添加源訂閱帳號和目標訂閱帳號:
Add-AzureAccount -Environment AzureChinacloud
10. 在Powershell裏面,執行遷移腳本進行遷移,例如:
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"
待續。。