將非受控磁碟連結至 VM 以進行離線修復
適用於:✔️ Windows VM
Windows 虛擬機(VM)的一些疑難解答案例,例如 VM 未啟動時,需要離線修復其OS磁碟。 本文說明當失敗的OS磁碟未受管理時,如何執行這種離線修復。
判斷OS磁碟是否受管理或非受控
Azure 入口網站
開啟 VM 的 [ 概觀 ] 刀鋒視窗。 如果OS磁碟為非受控,則參考性橫幅表示 VM 未使用受控磁碟。
此外,如果磁碟為非受控磁碟,OS 磁碟的 [概觀] 刀鋒視窗會將 “(unmanaged)” 附加至磁碟名稱,如下所示:
如果磁碟受管理,OS 磁碟的 [概觀] 刀鋒視窗會顯示 [ 受控依據 ] 欄位,如下所示:
PowerShell
您可以輸入下列命令來確認 OS 磁碟不受管理。 (請務必將 “MyResourceGroup” 取代為您的資源組名,並將 “MyVM” 取代為您的 VM 名稱。
(get-azvm -ResourceGroupName MyResourceGroup -Name MyVM).StorageProfile.OsDisk
如果磁碟為 Unmanaged,則 ManagedDisk 旁的輸出中不會顯示任何值,如下列範例所示:
OsType : Windows
EncryptionSettings :
Name : MyVM-Disk1
Vhd : Microsoft.Azure.Management.Compute.Models.VirtualHardDisk
Image :
Caching : ReadWrite
WriteAcceleratorEnabled :
DiffDiskSettings :
CreateOption : FromImage
DiskSizeGB : 127
ManagedDisk :
如果磁碟是受控磁碟,您會在ManagedDisk旁的輸出中看到值,如下列範例所示:
OsType : Windows
EncryptionSettings :
Name : MyVM2-Disk1
Vhd :
Image :
Caching : ReadWrite
WriteAcceleratorEnabled :
DiffDiskSettings :
CreateOption : FromImage
DiskSizeGB :
ManagedDisk : Microsoft.Azure.Management.Compute.Models.ManagedDiskParameters
Azure 命令列介面 (Azure CLI)
您可以使用 az vm show 命令搭配附加 查詢 “storageProfile.osDisk.managedDisk” 來判斷磁碟是否有受控磁碟,如下列範例所示:
az vm show -n MyVM -g MyResourceGroup --query "storageProfile.osDisk.managedDisk"
如果磁碟為 Unmanaged,則命令不會產生任何輸出。 如果磁碟受到管理,它會產生輸出,如下列範例所示:
{
"diskEncryptionSet": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/disks/MyVm_OsDisk_1",
"resourceGroup": "MyResourceGroup",
"storageAccountType": null
}
建立連結至來源的 Unmanaged OS 磁碟復本(失敗) VM
在 Azure 入口網站 中,停止OS磁碟為Unmanaged的來源 VM。
在您的本機計算機上,下載、安裝,然後啟動 Microsoft Azure 儲存體 Explorer。 出現提示時,請提供您的 Azure 認證。
在 儲存體總管 瀏覽窗格中,展開適當的訂用帳戶。
選取 VHD 所在的記憶體帳戶,然後選取磁碟的適當容器。 根據預設,非受控 OS 磁碟會儲存在 vhds (租用) 容器中。
在右窗格中,選取連結至您要修復之來源 VM 的 VHD,然後選取頂端的 [ 複製 ]。 請注意,複製的磁碟只能貼到不同的 Blob 容器中。
在瀏覽窗格中以滑鼠右鍵按兩下 [Blob 容器 ],然後選取 [建立 Blob 容器],以建立新的 Blob 容器。 將新的 Blob 容器指派為您選擇的名稱,例如「磁碟複製」。
選取 [貼上 ] 以將複製的磁碟貼到新的 Blob 容器中。
使用非受控 OS 磁碟建立修復 VM
在 Azure 入口網站 中,開始建立以 Windows Server 2019 為基礎的新 VM 的程式。 這個新的 VM 將作為修復 VM,而且其自己的 OS 磁碟必須是非受控的。
在 [建立虛擬機] 精靈的 [基本] 頁面上,選取 [可用性選項] 清單中不需要任何基礎結構備援。
在 [磁碟] 頁面上,展開 [數據磁碟] 下方的 [進階],然後清除 [使用受控磁碟] 複選框。 選取非受控 OS 磁碟的記憶體帳戶。 請勿選取以連結現有的磁碟。 如果無法取消選取 [ 使用受控磁碟 ] 選項,請嘗試使用下列命令建立 VM:
## Get the subnet ID of the VM $SubnetID = az network vnet subnet show --resource-group <RG name> --name <Subnet name> --vnet-name <VNet name> --query id -o tsv ## Create a VM with the unmanaged disk az vm create \ --resource-group <RG name>\ --name <VM name>\ --image <Image name>\ --location <location of the VM>\ --admin-username <Admin name>\ --subnet $SubnetID\ --size <VM size>\ --use-unmanaged-disk
指定適合您組織的設定詳細數據,以完成[建立虛擬機] 精靈。
將非受控磁碟的復本連結至修復 VM
在 Azure 入口網站 中,開啟您剛才建立之新修復 VM 的 [磁碟] 刀鋒視窗。
選取 [+ 新增數據磁碟]。
在 [ 鏈接非受控磁碟 ] 頁面上,選取 [現有 Blob ] 作為 [來源類型]。
在 [來源 Blob] 下方,選取 [流覽],然後瀏覽以選取您稍早建立的 OS 磁碟複本。
在 [ 鏈接非受控磁碟 ] 頁面上,接受預設記憶體 Blob 名稱,然後選取 [ 確定]。
在新修復 VM 的 [ 磁碟 ] 刀鋒視窗上,選取 [ 儲存]。
如果磁碟已加密,請解除鎖定磁碟
如果磁碟已使用 Azure 磁碟加密 加密(ADE),您必須先解除鎖定磁碟,才能修復磁碟。 若要這樣做,請使用解決方案 #3:手動方法解除鎖定修復 VM 上加密磁碟所述的步驟。
您可以使用這裡的程式來判斷磁碟是否已加密: 確認磁碟上已啟用 ADE
取代來源 VM 上的 OS 磁碟
完成修復磁碟之後,請遵循下列步驟:
使用 Azure CLI 或 PowerShell 中斷連結來源 VM OS 磁碟。
Azure CLI
使用 az vm unmanaged-disk detach 命令,如下列範例所示:
az vm unmanaged-disk detach -g MyResourceGroup --vm-name MyVm -n disk_name
PowerShell
在 Azure Cloud Shell 中輸入下列命令,一次輸入一個:
$VirtualMachine = Get-AzVM -ResourceGroupName "MyResourceGroup" -Name "MyVm" Remove-AzVMDataDisk -VM $VirtualMachine -Name "disk_name" Update-AzVM -ResourceGroupName "MyResourceGroup" -VM $VirtualMachine
卸離磁碟之後,您可以取代來源 VM 上的 OS 磁碟。
當提示傳回時,開啟文字編輯器,例如記事本,並記錄下列值:
- 訂用帳戶標識碼 ($subscriptionID):與您的 Azure 訂用帳戶相關聯的 32 位數全域唯一標識符 (GUID)。
- 資源組名 ($rgname):來源 VM 的資源群組。
- VM 名稱 ($vmname):來源 (失敗) VM 的名稱。
- OS 磁碟 VHD URI ($vhduri):您剛從修復 VM 中斷連結之非受控 OS 磁碟復本的 URI。 (您可以在 儲存體總管 中以滑鼠右鍵按兩下磁碟,然後選取 [複製URL],以複製此值。
在 Azure Cloud Shell 中的 PowerShell 命令提示字元中輸入下列命令,一次一個。 在每個命令中,將 「訂用帳戶標識元」、「資源組名」、「VM 名稱」和「OS 磁碟 VHD URI」的值取代為您剛從環境記錄的對應值。
$subscriptionID = "Subscription ID" $rgname = "Resource group name" $vmname = "VM Name" $vhduri = "OS disk VHD URI" #Add-AzAccount Select-AzSubscription -SubscriptionID $subscriptionID Set-AzContext -SubscriptionID $subscriptionID $vm = Get-AzVM -ResourceGroupName $rgname -Name $vmname $vm.StorageProfile.OsDisk.Vhd.Uri = $vhduri Update-AzVM -ResourceGroupName $rgname -VM $vm
作業完成之後,您應該會看到下列輸出:
RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
在 Azure 入口網站 中,開啟 VM 上的 [磁碟] 刀鋒視窗。 選取 OS 磁碟,然後確認 VHD URI 符合您在上一個步驟中提供的值。
後續步驟
若要閱讀 ADE 的概觀,請參閱為 Windows VM 啟用 Azure 磁碟加密。 如需可用來管理非受控磁碟之命令的詳細資訊,請參閱 az vm unmanaged-disk。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。