Share via


將非受控磁碟連結至 VM 以進行離線修復

Windows 虛擬機 (VM) 的一些疑難解答案例,例如當 VM 未啟動時,需要您離線修復其 OS 磁碟。 本文說明當失敗的OS磁碟未受管理時,如何執行這種離線修復。

判斷OS磁碟是受控還是非受控

Azure 入口網站

開啟 VM 的 [ 概觀 ] 刀鋒視窗。 如果操作系統磁碟未受控,則資訊橫幅會指出 VM 未使用受控磁碟。

Azure 入口網站 中橫幅訊息的螢幕快照,指出 V M 未使用受控磁碟。

此外,如果磁碟未受管理,OS 磁碟的 [ 概觀 ] 刀鋒視窗會將 「 (Unmanaged) 」附加至磁碟名稱,如下所示:

螢幕快照顯示 unmanaged 一詞附加至 Azure 入口網站 中的 V M 名稱。

如果磁碟受到管理,OS 磁碟的 [概觀] 刀鋒視窗會顯示 [ 依管理] 欄位,如下所示:

Azure 入口網站 中磁碟概觀刀鋒視窗的螢幕快照,指出磁碟是由 V M 管理。

PowerShell

您可以輸入下列命令來確認 OS 磁碟未受控。 (務必將 「MyResourceGroup」 取代為您的資源組名,並將 「MyVM」 取代為您的 VM.)

(get-azvm -ResourceGroupName MyResourceGroup -Name MyVM).StorageProfile.OsDisk

如果磁碟未受控, 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 CLI (Azure 命令行介面)

您可以使用 az vm show 命令搭配附加的查詢 “storageProfile.osDisk.managedDisk” 來判斷磁碟是否有受控磁碟,如下列範例所示:

az vm show -n MyVM -g MyResourceGroup --query "storageProfile.osDisk.managedDisk"

如果磁碟未受控,命令將不會產生任何輸出。 如果磁碟受到管理,則會產生如下列範例所示的輸出:

{
  "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

  1. 在 Azure 入口網站 中,停止 OS 磁碟未受管理的來源 VM。

  2. 在本機計算機上,下載、安裝,然後啟動 Microsoft Azure 儲存體總管。 當系統提示您時,請提供您的 Azure 認證。

  3. 在 [儲存體總管] 瀏覽窗格中,展開適當的訂用帳戶。

  4. 選取 VHD 所在的記憶體帳戶,然後選取磁碟的適當容器。 根據預設,Unmanaged OS 磁碟會儲存在 vhds (Leased) 容器中。

    Azure 儲存體總管的螢幕快照,其中記憶體帳戶容器和 v h d 的租用容器都會在瀏覽樹狀結構中反白顯示。

  5. 在右窗格中,選取連結至您要修復之來源 VM 的 VHD,然後選取頂端的 [ 複製 ]。 請注意,複製的磁碟只能貼到不同的 Blob 容器。

    顯示已選取磁碟的 Azure 儲存體總管 螢幕快照,其中已醒目提示 [複製] 按鈕。

  6. 以滑鼠右鍵按下瀏覽窗格中的 [Blob 容器 ],然後選取 [ 建立 Blob 容器],以建立新的 Blob 容器。 為新的 Blob 容器指派您選擇的名稱,例如「disk-copies」。。

    顯示導覽功能表中 [Blob 容器] 快捷方式功能表的 Azure 儲存體總管 快照,其中已醒目提示 [建立 Blob 容器]。

  7. 取 [貼上 ],將複製的磁碟貼到新的 Blob 容器中。

    Azure 儲存體總管 的螢幕快照,其中已醒目提示 [貼上] 按鈕。

使用非受控 OS 磁碟建立修復 VM

  1. 在 Azure 入口網站 中,開始建立以 Windows Server 2019 為基礎的新 VM 程式。 這個新的 VM 會作為修復 VM,而且它自己的 OS 磁碟必須是 Unmanaged。

  2. 在 [建立虛擬機] 精靈的 [基本] 頁面上,選取 [可用性選項] 清單中的 [不需要基礎結構備援]。

    [建立虛擬機精靈] 之 [基本] 頁面的螢幕快照,其中顯示選取的選項不需要基礎結構。

  3. 在 [磁碟] 頁面上,展開 [數據磁碟] 下方的 [階],然後清除 [使用受控磁碟] 複選框。 選取非受控 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  
    
  4. 指定適合您組織的設定詳細數據,以完成 [建立虛擬機] 精靈。

將非受控磁碟的復本連結至修復 VM

  1. 在 Azure 入口網站 中,開啟您剛才建立之新修復 VM 的 [磁] 刀鋒視窗。

  2. 取 [+ 新增數據磁碟]

    螢幕快照:Azure 入口網站 中修復 VM 的 [磁碟] 刀鋒視窗,其中已醒目提示 [新增數據磁碟] 按鈕。

  3. 在 [ 附加非受控磁碟 ] 頁面上,選取 [現有 Blob ] 作為 [來源類型]

    [附加非受控磁碟] 視窗的螢幕快照,其中已選取現有的 Blob 選項。

  4. [來源 Blob] 下方,選取 [ 流覽],然後瀏覽以選取您稍早建立的 OS 磁碟複本。

    [鏈接非受控磁碟] 視窗的螢幕快照,其中已醒目提示瀏覽按鈕。

    磁碟複製容器的螢幕快照,其中已選取磁碟,並醒目提示 [選取] 按鈕。

  5. 在 [ 附加非受控磁碟 ] 頁面上,接受默認記憶體 Blob 名稱,然後選取 [ 確定]

  6. 在新修復 VM 的 [ 磁碟 ] 刀鋒視窗上,選取 [ 儲存]

    [磁碟] 刀鋒視窗的螢幕快照,其中已醒目提示 [儲存] 按鈕。

如果磁碟已加密,請將其解除鎖定

如果使用 Azure 磁碟加密 (ADE) 來加密磁碟,您必須先將它解除鎖定,才能修復它。 若要這樣做,請使用 解決方法 #3:手動方法中所述的步驟,在修復 VM 上解除鎖定加密的磁碟。

您可以使用此處的程式來判斷磁碟是否已加密: 確認已在磁碟上啟用 ADE

取代來源 VM 上的 OS 磁碟

完成磁碟修復之後,請遵循下列步驟:

  1. 使用 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 磁碟。

  2. 當提示傳回時,開啟文字編輯器,例如記事本,並記錄下列值:

    • 訂用帳戶標識碼 ($subscriptionID) :與 Azure 訂用帳戶相關聯的 32 位數全域唯一標識子 (GUID) 。
    • 資源組名 ($rgname) :來源 VM 的資源群組。
    • VM 名稱 ($vmname) :) VM 失敗的來源 (名稱。
    • OS 磁碟 VHD URI ($vhduri) :您剛才從修復 VM 中斷連結之 Unmanaged OS 磁碟復本的 URI。 (您可以以滑鼠右鍵按兩下 儲存體總管中的磁碟,然後選取 [複製URL],以複製此值 )
  3. 在 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
    
  4. 在 Azure 入口網站 中,開啟 VM 上的 [磁碟] 刀鋒視窗。 選取 OS 磁碟,然後確認 VHD URI 符合您在上一個步驟中提供的值。

後續步驟

若要閱讀 ADE 的概觀,請參閱 啟用 Windows VM 的 Azure 磁碟加密。 如需可用來管理非受控磁碟之命令的詳細資訊,請參閱 az vm unmanaged-disk

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以將產品意見反應提交給 Azure 意應見反社群