1. 程式人生 > >Azure遷移托管磁盤虛擬機到新賬號下

Azure遷移托管磁盤虛擬機到新賬號下

關閉 select oca state txt upd tst 資源 ons

先決條件:

導出托管磁盤VHD文件到存儲賬戶時,需要關閉虛擬機操作。同時,請您記錄好哪些是OS磁盤,哪些是數據磁盤。

官方參考文檔: https://docs.azure.cn/zh-cn/articles/azure-operations-guide/virtual-machines/aog-virtual-machines-howto-export-managed-disks
https://docs.azure.cn/zh-cn/storage/common/storage-use-azcopy
https://docs.azure.cn/zh-cn/virtual-machines/windows/create-managed-disk-ps

https://docs.azure.cn/zh-cn/articles/azure-operations-guide/virtual-machines/aog-virtual-machines-managed-disks-qa-os-cannot-create-vm

需要安裝Azure Powershell 模塊,可參考https://docs.azure.cn/zh-cn/powershell-install-configure

具體步驟:

步驟一:導出托管磁盤VHD到原訂閱存儲賬戶下(舊訂閱)

#登錄Azure Account
Add-AzureRmAccount -EnvironmentName AzureChinaCloud

# 設置訂閱ID(如此賬戶下只有一個訂閱,此步驟可省略)
$subid = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ###替換為您的訂閱ID
Select-AzureRmSubscription -SubscriptionID $subid

#將目標存儲賬號的信息賦予變量
$destStorageAccount = Get-AzureRmStorageAccount -ResourceGroupName <Resource Group Name for Dest Storage Account> -Name <Dest Storage Account Name>;

#獲取托管磁盤的拷貝權限
$diskAccess = Grant-AzureRmDiskAccess -ResourceGroupName <Resource Group Name for Managed Disk> -DiskName <Managed Disk Name> -DurationInSecond 36000 -Access Read;

#將托管磁盤導出成VHD拷貝到目標存儲賬戶,vhds為存儲賬戶中的container名稱
Start-AzureStorageBlobCopy -AbsoluteUri $diskAccess.AccessSAS -DestContainer "vhds" -DestContext $destStorageAccount.Context -DestBlob <Dest VHD Name>;

#查看拷貝進度
get-AzureStorageBlobCopyState -Blob <Dest VHD Name> -Container"vhds" -Context $destStorageAccount.Context -WaitForComplete

步驟二:從原有訂閱存儲賬戶下的VHD文件復制到新Azure賬戶訂閱的存儲賬戶下

#安裝、使用AzCopy將原有存儲賬戶下的VHD文件復制到新Azure賬戶訂閱下的存儲賬戶https://docs.azure.cn/zh-cn/storage/common/storage-use-azcopy
AzCopy /Source:https://sourceaccount.blob.core.chinacloudapi.cn/mycontainer1 /Dest:https://destaccount.blob.core.chinacloudapi.cn/mycontainer2 /SourceKey:key1 /DestKey:key2 /Pattern:abc.txt

步驟三:從存儲帳戶中的非托管磁盤創建托管數據磁盤(新訂閱)

#將資源組,位置,托管數據磁盤的名稱,非托管磁盤的URL賦予變量
$rgName = "myResourceGroup"
$location = "China North"
$diskName = "myDisk"
$vhdUri = "https://mystorageaccount.blob.core.chinacloudapi.cn/vhds/myDisk.vhd"

#創建托管數據磁盤
$disk1 = New-AzureRmDisk -DiskName $diskName -Disk (New-AzureRmDiskConfig -AccountType StandardLRS -Location $location -CreateOption Import -SourceUri $vhdUri) -ResourceGroupName $rgName

步驟四:更改OS托管磁盤的OsType,從而能夠使用Portal上的“創建VM”按鈕創建虛擬機(新訂閱)

#查詢托盤磁盤信息,缺失 OsType 的托管磁盤會被視作是數據磁盤,需要更新該托管磁盤的 OsType 來賦予正確的鍵值
Get-AzureRmDisk -ResourceGroupName "<資源組名稱>" -DiskName "<托盤磁盤名稱>"

#將托盤磁盤信息賦予給變量
$Disk = Get-AzureRmDisk -ResourceGroupName "<資源組名稱>" -DiskName "<托盤磁盤名稱>"

#輸入托盤磁盤的 OsType
$Disk.OsType = "Linux" <-根據虛擬機 OS 類型選擇 Windows 或者 Linux

#手動更新托盤磁盤的信息
Update-AzureRmDisk -ResourceGroupName "<資源組名稱>" -DiskName "<托盤磁盤名稱>" -Disk $Disk

在 Azure 門戶 上重新查看該托盤磁盤的信息,可以看到 “創建 VM” 的按鈕了,繼續創建虛擬機了。

Azure遷移托管磁盤虛擬機到新賬號下