Risolvere i problemi relativi a una macchina virtuale Windows collegando il disco del sistema operativo a una macchina virtuale di ripristino usando Azure PowerShellTroubleshoot a Windows VM by attaching the OS disk to a recovery VM using Azure PowerShell

Se nella macchina virtuale Windows in Azure viene rilevato un errore di avvio o del disco, potrebbe essere necessario eseguire alcuni passaggi per la risoluzione dei problemi sul disco rigido virtuale stesso.If your Windows virtual machine (VM) in Azure encounters a boot or disk error, you may need to perform troubleshooting steps on the virtual hard disk itself. Un esempio comune è un aggiornamento di un'applicazione non riuscito che impedisce il corretto avvio della VM.A common example would be a failed application update that prevents the VM from being able to boot successfully. Questo articolo illustra come usare Azure PowerShell per connettere il disco rigido virtuale a un'altra VM Windows per risolvere eventuali errori e quindi ricreare la VM originale.This article details how to use Azure PowerShell to connect your virtual hard disk to another Windows VM to fix any errors, then re-create your original VM.

Panoramica del processo di ripristinoRecovery process overview

I passaggi per la risoluzione dei problemi sono i seguenti:The troubleshooting process is as follows:

  1. Eliminare la macchina virtuale su cui si riscontrano i problemi, mantenendo i dischi rigidi virtuali.Delete the VM encountering issues, keeping the virtual hard disks.
  2. Collegare e montare il disco rigido virtuale in un'altra VM Windows per risolvere i problemi riscontrati.Attach and mount the virtual hard disk to another Windows VM for troubleshooting purposes.
  3. Connettersi alla macchina virtuale usata per la risoluzione dei problemi.Connect to the troubleshooting VM. Modificare i file o eseguire eventuali strumenti per risolvere i problemi nel disco rigido virtuale originale.Edit files or run any tools to fix issues on the original virtual hard disk.
  4. Smontare e scollegare il disco rigido virtuale dalla macchina virtuale usata per la risoluzione dei problemi.Unmount and detach the virtual hard disk from the troubleshooting VM.
  5. Creare una VM usando il disco rigido virtuale originale.Create a VM using the original virtual hard disk.

Verificare di aver prima installato e registrato la versione più recente di Azure PowerShell nella sottoscrizione:Make sure that you have the latest Azure PowerShell installed and logged in to your subscription:

Login-AzureRMAccount

Negli esempi seguenti sostituire i nomi dei parametri con i valori desiderati.In the following examples, replace parameter names with your own values. Alcuni esempi di nomi dei parametri sono myResourceGroup, mystorageaccount e myVM.Example parameter names include myResourceGroup, mystorageaccount, and myVM.

Individuare i problemi di avvioDetermine boot issues

È possibile visualizzare uno screenshot della VM in Azure per risolvere i problemi di avvio.You can view a screenshot of your VM in Azure to help troubleshoot boot issues. Questo screenshot consente di identificare il motivo per cui non è possibile avviare una VM.This screenshot can help identify why a VM fails to boot. L'esempio seguente ottiene lo screenshot dalla VM Windows denominata myVM nel gruppo di risorse myResourceGroup:The following example gets the screenshot from the Windows VM named myVM in the resource group named myResourceGroup:

Get-AzureRmVMBootDiagnosticsData -ResourceGroupName myResourceGroup `
    -Name myVM -Windows -LocalPath C:\Users\ops\

Esaminare lo screenshot per determinare perché la macchina virtuale non riesce ad avviarsi correttamente.Review the screenshot to determine why the VM is failing to boot. Esaminare i messaggi di errore o i codici di errore specifici visualizzati.Note any specific error messages or error codes provided.

Visualizzare i dettagli del disco rigido virtuale esistenteView existing virtual hard disk details

Prima di collegare il disco rigido virtuale a un'altra macchina virtuale, è necessario identificare il nome del disco rigido virtuale.Before you can attach your virtual hard disk to another VM, you need to identify the name of the virtual hard disk (VHD).

L'esempio seguente ottiene le informazioni relative alla macchina virtuale denominata myVM nel gruppo di risorse myResourceGroup:The following example gets information for the VM named myVM in the resource group named myResourceGroup:

Get-AzureRmVM -ResourceGroupName "myResourceGroup" -Name "myVM"

Cercare Vhd URI nella sezione StorageProfile dall'output del comando precedente.Look for Vhd URI within the StorageProfile section from the output of the preceding command. Nell'output di esempio troncato seguente Vhd URI è visibile verso la fine del blocco di codice:The following truncated example output shows the Vhd URI towards the end of the code block:

RequestId                     : 8a134642-2f01-4e08-bb12-d89b5b81a0a0
StatusCode                    : OK
ResourceGroupName             : myResourceGroup
Id                            : /subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM
Name                          : myVM
Type                          : Microsoft.Compute/virtualMachines
...
StorageProfile                :
  ImageReference              :
    Publisher                 : MicrosoftWindowsServer
    Offer                     : WindowsServer
    Sku                       : 2016-Datacenter
    Version                   : latest
  OsDisk                      :
    OsType                    : Windows
    Name                      : myVM
    Vhd                       :
      Uri                     : https://mystorageaccount.blob.core.windows.net/vhds/myVM.vhd
    Caching                   : ReadWrite
    CreateOption              : FromImage

Eliminare la VM esistenteDelete existing VM

In Azure, i dischi rigidi virtuali e le macchine virtuali sono due risorse distinte.Virtual hard disks and VMs are two distinct resources in Azure. In un disco rigido virtuale sono archiviati il sistema operativo, le applicazioni e le configurazioni.A virtual hard disk is where the operating system itself, applications, and configurations are stored. La macchina virtuale è invece costituita da metadati che definiscono le dimensioni o il percorso, e da risorse di riferimento, ad esempio un disco rigido virtuale o una scheda di interfaccia di rete virtuale.The VM itself is just metadata that defines the size or location, and references resources such as a virtual hard disk or virtual network interface card (NIC). A ogni disco rigido virtuale associato a una macchina virtuale viene assegnato un lease.Each virtual hard disk has a lease assigned when attached to a VM. È possibile collegare e scollegare i dischi dati anche quando la macchina virtuale è in esecuzione, mentre non è possibile scollegare il disco del sistema operativo, a meno che la risorsa di macchina non sia stata eliminata.Although data disks can be attached and detached even while the VM is running, the OS disk cannot be detached unless the VM resource is deleted. Il lease continua ad associare il disco del sistema operativo e la macchina virtuale anche quando questa viene arrestata e deallocata.The lease continues to associate the OS disk with a VM even when that VM is in a stopped and deallocated state.

Il primo passaggio per ripristinare la macchina virtuale consiste nell'eliminare la risorsa della macchina virtuale stessa.The first step to recover your VM is to delete the VM resource itself. Anche se si elimina la macchina virtuale, i dischi rigidi virtuali restano nell'account di archiviazione.Deleting the VM leaves the virtual hard disks in your storage account. Dopo aver eliminato la macchina virtuale, il disco rigido virtuale viene collegato a un'altra macchina virtuale per diagnosticare e risolvere gli errori.After the VM is deleted, you attach the virtual hard disk to another VM to troubleshoot and resolve the errors.

L'esempio seguente elimina la macchina virtuale denominata myVM dal gruppo di risorse myResourceGroup:The following example deletes the VM named myVM from the resource group named myResourceGroup:

Remove-AzureRmVM -ResourceGroupName "myResourceGroup" -Name "myVM"

Attendere il completamento dell'eliminazione della macchina virtuale prima di collegare il disco rigido virtuale a un'altra macchina virtuale.Wait until the VM has finished deleting before you attach the virtual hard disk to another VM. Il lease del disco rigido virtuale che lo associa alla macchina virtuale deve essere rilasciato prima di poter collegare il disco a un'altra macchina.The lease on the virtual hard disk that associates it with the VM needs to be released before you can attach the virtual hard disk to another VM.

Collegare il disco rigido virtuale esistente a un'altra macchina virtualeAttach existing virtual hard disk to another VM

Nei passaggi successivi viene utilizzata un'altra macchina virtuale per la risoluzione dei problemi.For the next few steps, you use another VM for troubleshooting purposes. Il disco rigido virtuale esistente viene collegato alla macchina virtuale usata per la risoluzione dei problemi, grazie alla quale è possibile individuare e modificare il contenuto del disco.You attach the existing virtual hard disk to this troubleshooting VM to browse and edit the disk's content. Questo processo consente, ad esempio, di correggere eventuali errori di configurazione, di esaminare applicazioni aggiuntive o file del registro di sistema.This process allows you to correct any configuration errors or review additional application or system log files, for example. Scegliere o creare un'altra macchina virtuale da usare per la risoluzione dei problemi.Choose or create another VM to use for troubleshooting purposes.

Quando si collega il disco rigido virtuale esistente, specificare l'URL del disco ottenuto con il comando Get-AzureRmVM precedente.When you attach the existing virtual hard disk, specify the URL to the disk obtained in the preceding Get-AzureRmVM command. Nell'esempio seguente il disco rigido virtuale esistente viene collegato alla macchina virtuale usata per la risoluzione dei problemi denominata myVMRecovery nel gruppo di risorse myResourceGroup:The following example attaches an existing virtual hard disk to the troubleshooting VM named myVMRecovery in the resource group named myResourceGroup:

$myVM = Get-AzureRmVM -ResourceGroupName "myResourceGroup" -Name "myVMRecovery"
Add-AzureRmVMDataDisk -VM $myVM -CreateOption "Attach" -Name "DataDisk" -DiskSizeInGB $null `
    -VhdUri "https://mystorageaccount.blob.core.windows.net/vhds/myVM.vhd"
Update-AzureRmVM -ResourceGroup "myResourceGroup" -VM $myVM

Nota

Per aggiungere un disco, è necessario specificare le dimensioni del disco.Adding a disk requires you to specify the size of the disk. Quando viene collegato un disco esistente, -DiskSizeInGB viene specificato come $null.As we attach an existing disk, the -DiskSizeInGB is specified as $null. Questo valore assicura che il disco dati venga collegato correttamente e senza bisogno di determinare le dimensioni reali del disco dati.This value ensures the data disk is correctly attached, and without the need to determine the true size of data disk.

Montare il disco dati collegatoMount the attached data disk

  1. Stabilire una connessione RDP alla VM di risoluzione dei problemi usando le credenziali appropriate.RDP to your troubleshooting VM using the appropriate credentials. L'esempio seguente scarica il file di connessione RDP per la VM denominata myVMRecovery nel gruppo di risorse denominato myResourceGroup e lo scarica in C:\Users\ops\Documents.The following example downloads the RDP connection file for the VM named myVMRecovery in the resource group named myResourceGroup, and downloads it to C:\Users\ops\Documents"

    Get-AzureRMRemoteDesktopFile -ResourceGroupName "myResourceGroup" -Name "myVMRecovery" `
        -LocalPath "C:\Users\ops\Documents\myVMRecovery.rdp"
    
  2. Il disco dati viene automaticamente rilevato e collegato.The data disk is automatically detected and attached. Visualizzare l'elenco di volumi collegati per determinare la lettera di unità, come segue:View the list of attached volumes to determine the drive letter as follows:

    Get-Disk
    

    L'output di esempio seguente illustra il disco rigido virtuale connesso a un disco 2.The following example output shows the virtual hard disk connected a disk 2. Per visualizzare la lettera di unità, è anche possibile usare Get-Volume:(You can also use Get-Volume to view the drive letter):

    Number   Friendly Name   Serial Number   HealthStatus   OperationalStatus   Total Size   Partition
                                                                                             Style
    ------   -------------   -------------   ------------   -----------------   ----------   ----------
    0        Virtual HD                                     Healthy             Online       127 GB MBR
    1        Virtual HD                                     Healthy             Online       50 GB MBR
    2        Msft Virtu...                                  Healthy             Online       127 GB MBR
    

Risolvere i problemi del disco rigido virtuale originaleFix issues on original virtual hard disk

Dopo aver montato il disco rigido virtuale eseguire tutte le operazioni di manutenzione e i passaggi necessari per la risoluzione dei problemi.With the existing virtual hard disk mounted, you can now perform any maintenance and troubleshooting steps as needed. Dopo avere risolto i problemi, continuare con la procedura seguente.Once you have addressed the issues, continue with the following steps.

Smontare e scollegare il disco rigido virtuale originaleUnmount and detach original virtual hard disk

Dopo aver risolto gli errori, smontare e scollegare il disco rigido virtuale esistente dalla macchina virtuale usata per la risoluzione dei problemi.Once your errors are resolved, you unmount and detach the existing virtual hard disk from your troubleshooting VM. Non è possibile usare il disco rigido virtuale con altre macchine virtuali finché non viene rilasciato il lease che collega il disco rigido virtuale alla macchina virtuale usata per la risoluzione dei problemi.You cannot use your virtual hard disk with any other VM until the lease attaching the virtual hard disk to the troubleshooting VM is released.

  1. Dalla sessione RDP smontare il disco dati nella VM di ripristino.From within your RDP session, unmount the data disk on your recovery VM. È necessario il numero del disco ottenuto dal cmdlet Get-Disk precedente.You need the disk number from the previous Get-Disk cmdlet. Usare quindi Set-Disk per impostare il disco come offline:Then, use Set-Disk to set the disk as offline:

    Set-Disk -Number 2 -IsOffline $True
    

    Verificare che il disco ora sia impostato come offline usando di nuovo Get-Disk.Confirm the disk is now set as offline using Get-Disk again. L'output di esempio seguente mostra che il disco ora è impostato come offline:The following example output shows the disk is now set as offline:

    Number   Friendly Name   Serial Number   HealthStatus   OperationalStatus   Total Size   Partition
                                                                                             Style
    ------   -------------   -------------   ------------   -----------------   ----------   ----------
    0        Virtual HD                                     Healthy             Online       127 GB MBR
    1        Virtual HD                                     Healthy             Online       50 GB MBR
    2        Msft Virtu...                                  Healthy             Offline      127 GB MBR
    
  2. Uscire dalla sessione RDP.Exit your RDP session. Dalla sessione di Azure PowerShell rimuovere il disco rigido virtuale dalla VM usata per la risoluzione dei problemi.From your Azure PowerShell session, remove the virtual hard disk from the troubleshooting VM.

    $myVM = Get-AzureRmVM -ResourceGroupName "myResourceGroup" -Name "myVMRecovery"
    Remove-AzureRmVMDataDisk -VM $myVM -Name "DataDisk"
    Update-AzureRmVM -ResourceGroup "myResourceGroup" -VM $myVM
    

Creare una macchina virtuale dal disco rigido originaleCreate VM from original hard disk

Per creare una macchina virtuale dal disco rigido virtuale originale, usare questo modello di Azure Resource Manager.To create a VM from your original virtual hard disk, use this Azure Resource Manager template. Il modello JSON effettivo è disponibile all'indirizzo seguente:The actual JSON template is at the following link:

Il modello distribuisce una macchina virtuale in una rete virtuale esistente, usando l'URL del disco rigido virtuale del comando precedente.The template deploys a VM into an existing virtual network, using the VHD URL from the earlier command. L'esempio seguente distribuisce il modello nel gruppo di risorse myResourceGroup:The following example deploys the template to the resource group named myResourceGroup:

New-AzureRmResourceGroupDeployment -Name myDeployment -ResourceGroupName myResourceGroup `
  -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-vm-specialized-vhd-existing-vnet/azuredeploy.json

Rispondere ai prompt del modello, ad esempio inserendo il nome della VM, il tipo di sistema operativo e le dimensioni della VM.Answer the prompts for the template such as VM name, OS type, and VM size. Il valore osDiskVhdUri è lo stesso usato in precedenza per collegare il disco rigido virtuale esistente alla macchina virtuale usata per la risoluzione dei problemi.The osDiskVhdUri is the same as previously used when attaching the existing virtual hard disk to the troubleshooting VM.

Riabilitare la diagnostica di avvioRe-enable boot diagnostics

Quando si crea la macchina virtuale dal disco rigido virtuale esistente, la diagnostica di avvio potrebbe non essere abilitata automaticamente.When you create your VM from the existing virtual hard disk, boot diagnostics may not automatically be enabled. L'esempio seguente abilita l'estensione di diagnostica nella macchina virtuale denominata myVMDeployed nel gruppo di risorse myResourceGroup:The following example enables the diagnostic extension on the VM named myVMDeployed in the resource group named myResourceGroup:

$myVM = Get-AzureRmVM -ResourceGroupName "myResourceGroup" -Name "myVMDeployed"
Set-AzureRmVMBootDiagnostics -ResourceGroupName myResourceGroup -VM $myVM -enable
Update-AzureRmVM -ResourceGroup "myResourceGroup" -VM $myVM

Passaggi successiviNext steps

Se si sono verificati problemi durante la connessione alla VM, vedere Risolvere i problemi di connessioni RDP a una macchina virtuale di Azure.If you are having issues connecting to your VM, see Troubleshoot RDP connections to an Azure VM. Per problemi relativi all'accesso alle applicazioni in esecuzione nella VM, vedere Risolvere i problemi di connettività a un'applicazione in una macchina virtuale Windows.For issues with accessing applications running on your VM, see Troubleshoot application connectivity issues on a Windows VM.

Per altre informazioni sull'uso di Resource Manager, vedere Panoramica di Azure Resource Manager.For more information about using Resource Manager, see Azure Resource Manager overview.