Risolvere i problemi di una macchina virtuale Windows collegando il disco del sistema operativo a una macchina virtuale di ripristino usando Azure PowerShell
Se la macchina virtuale (VM) Windows in Azure rileva un errore di avvio o del disco, potrebbe essere necessario eseguire i passaggi per la risoluzione dei problemi sul disco stesso. Un esempio comune potrebbe essere un aggiornamento dell'applicazione non riuscito che impedisce alla macchina virtuale di avviarsi correttamente. Questo articolo descrive in dettaglio come usare Azure PowerShell per connettere il disco a un'altra macchina virtuale Windows per correggere eventuali errori, quindi riparare la macchina virtuale originale.
Importante
Gli script in questo articolo si applicano solo alle macchine virtuali che utilizzano Disco gestito.
Panoramica del processo di recupero
È ora possibile usare Azure PowerShell per modificare il disco del sistema operativo per una macchina virtuale. Non è più necessario eliminare e ricreare la VM.
Il processo di risoluzione dei problemi è il seguente:
- Arrestare la VM interessata.
- Crea uno snapshot dal disco del sistema operativo della VM.
- Crea un disco dallo snapshot del disco del sistema operativo.
- Collegare il disco come disco dati a una macchina virtuale di ripristino.
- Connettersi alla macchina virtuale di ripristino. Modifica i file o esegui qualsiasi strumento per risolvere i problemi sul disco del sistema operativo copiato.
- Smonta e scollega il disco dalla macchina virtuale di ripristino.
- Modificare il disco del sistema operativo per la macchina virtuale interessata.
È possibile utilizzare i comandi di riparazione VM per automatizzare i passaggi 1, 2, 3, 4, 6 e 7. Per altra documentazione e istruzioni, vedere Riparare una macchina virtuale Windows usando i comandi di riparazione di macchine virtuali di Azure.
Assicurati di avere l'ultima versione di Azure PowerShell installata e di aver effettuato l'accesso alla tua sottoscrizione:
Connect-AzAccount
Negli esempi seguenti, sostituisci i nomi dei parametri con i tuoi valori.
Determina i problemi di avvio
È possibile visualizzare uno screenshot della macchina virtuale in Azure per risolvere i problemi di avvio. Questo screenshot può aiutare a identificare il motivo per cui una macchina virtuale non si avvia. L'esempio seguente acquisisce lo screenshot dalla macchina virtuale di Windows denominata myVM
nel gruppo di risorse denominato myResourceGroup
:
Get-AzVMBootDiagnosticsData -ResourceGroupName myResourceGroup `
-Name myVM -Windows -LocalPath C:\Users\ops\
Esamina lo screenshot per determinare perché la VM non si avvia. Prendere nota di eventuali messaggi di errore specifici o codici di errore forniti.
Arresta la macchina virtuale
L'esempio seguente arresta la VM denominata myVM
dal gruppo di risorse denominato myResourceGroup
:
Stop-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"
Attendere fino al termine dell'eliminazione della VM prima di passare al passaggio successivo.
Crea uno snapshot dal disco del sistema operativo della VM
L'esempio seguente crea un'istantanea con nome mySnapshot
dal disco del sistema operativo della macchina virtuale denominata "myVM".
$resourceGroupName = 'myResourceGroup'
$location = 'eastus'
$vmName = 'myVM'
$snapshotName = 'mySnapshot'
#Get the VM
$vm = get-azvm `
-ResourceGroupName $resourceGroupName `
-Name $vmName
#Create the snapshot configuration for the OS disk
$snapshot = New-AzSnapshotConfig `
-SourceUri $vm.StorageProfile.OsDisk.ManagedDisk.Id `
-Location $location `
-CreateOption copy
#Take the snapshot
New-AzSnapshot `
-Snapshot $snapshot `
-SnapshotName $snapshotName `
-ResourceGroupName $resourceGroupName
Uno snapshot è una copia completa di sola lettura di un disco rigido virtuale. Non può essere collegato a una VM. Nel passaggio successivo, creeremo un disco da questa istantanea.
Crea un disco dallo snapshot
Questo script crea un disco gestito con nome newOSDisk
dall'istantanea denominata mysnapshot
.
#Set the context to the subscription Id where Managed Disk will be created
#You can skip this step if the subscription is already selected
$subscriptionId = 'yourSubscriptionId'
Select-AzSubscription -SubscriptionId $SubscriptionId
#Provide the name of your resource group
$resourceGroupName ='myResourceGroup'
#Provide the name of the snapshot that will be used to create Managed Disks
$snapshotName = 'mySnapshot'
#Provide the name of the Managed Disk
$diskName = 'newOSDisk'
#Provide the size of the disks in GB. It should be greater than the VHD file size.
$diskSize = '128'
#Provide the storage type for Managed Disk. Premium_LRS or Standard_LRS.
$storageType = 'Standard_LRS'
#Provide the Azure region (e.g. westus) where Managed Disks will be located.
#This location should be same as the snapshot location
#Get all the Azure location using command below:
#Get-AzLocation
$location = 'eastus'
$snapshot = Get-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName
$diskConfig = New-AzDiskConfig -AccountType $storageType -Location $location -CreateOption Copy -SourceResourceId $snapshot.Id
New-AzDisk -Disk $diskConfig -ResourceGroupName $resourceGroupName -DiskName $diskName
Ora hai una copia del disco del sistema operativo originale. È possibile montare questo disco su un'altra macchina virtuale Windows per la risoluzione dei problemi.
Collegare il disco a un'altra macchina virtuale Windows per la risoluzione dei problemi
Ora alleghiamo la copia del disco del sistema operativo originale a una macchina virtuale come disco dati. Questo processo consente di correggere gli errori di configurazione o di esaminare ulteriori file di registro dell'applicazione o del sistema nel disco. L'esempio seguente collega il disco denominato newOSDisk
alla macchina virtuale denominata RecoveryVM
.
Nota
Per collegare il disco, la copia del disco del sistema operativo originale e la macchina virtuale di ripristino devono trovarsi nella stessa posizione.
$rgName = "myResourceGroup"
$vmName = "RecoveryVM"
$location = "eastus"
$dataDiskName = "newOSDisk"
$disk = Get-AzDisk -ResourceGroupName $rgName -DiskName $dataDiskName
$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
$vm = Add-AzVMDataDisk -CreateOption Attach -Lun 0 -VM $vm -ManagedDiskId $disk.Id
Update-AzVM -VM $vm -ResourceGroupName $rgName
Connettiti alla VM di ripristino e risolvi i problemi sul disco collegato
RDP alla macchina virtuale di ripristino usando le credenziali appropriate. L'esempio seguente scarica il file di connessione RDP per la macchina virtuale denominata
RecoveryVM
nel gruppo di risorse denominatomyResourceGroup
e lo scarica inC:\Users\ops\Documents
".Get-AzRemoteDesktopFile -ResourceGroupName "myResourceGroup" -Name "RecoveryVM" ` -LocalPath "C:\Users\ops\Documents\myVMRecovery.rdp"
Il disco dati dovrebbe essere rilevato e collegato automaticamente. Visualizza l'elenco dei volumi collegati per determinare la lettera di unità come segue:
Get-Disk
Il seguente output di esempio mostra il disco connesso a un disco 2. (È anche possibile utilizzare
Get-Volume
per visualizzare la lettera dell'unità):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 newOSDisk Healthy Online 127 GB MBR
Dopo aver montato la copia del disco del sistema operativo originale, è possibile eseguire le operazioni di manutenzione e risoluzione dei problemi necessarie. Dopo aver risolto i problemi, continuare con i passaggi seguenti.
Smonta e scollega il disco del sistema operativo originale
Una volta risolti gli errori, smontare e scollegare il disco esistente dalla macchina virtuale di ripristino. Non è possibile usare il disco con nessun'altra macchina virtuale finché non viene rilasciato il lease che collega il disco alla macchina virtuale di ripristino.
Dall'interno della sessione RDP, smontare il disco dati sulla VM di ripristino. È necessario il numero del disco dal cmdlet
Get-Disk
precedente. Quindi, utilizzareSet-Disk
per impostare il disco come non in linea:Set-Disk -Number 2 -IsOffline $True
Confermare che il disco è ora impostato come non in linea utilizzando nuovamente
Get-Disk
. L'output di esempio seguente mostra che il disco è ora impostato come 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
Esci dalla sessione RDP. Dalla sessione PowerShell di Azure, rimuovere il disco denominato
newOSDisk
dalla macchina virtuale denominata 'RecoveryVM'.$myVM = Get-AzVM -ResourceGroupName "myResourceGroup" -Name "RecoveryVM" Remove-AzVMDataDisk -VM $myVM -Name "newOSDisk" Update-AzVM -ResourceGroup "myResourceGroup" -VM $myVM
Modificare il disco del sistema operativo per la macchina virtuale interessata
È possibile usare Azure PowerShell per scambiare i dischi del sistema operativo. Non è necessario eliminare e ricreare la VM.
Questo esempio arresta la VM denominata myVM
e assegna il disco denominato newOSDisk
come nuovo disco del sistema operativo.
# Get the VM
$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
# Make sure the VM is stopped\deallocated
Stop-AzVM -ResourceGroupName myResourceGroup -Name $vm.Name -Force
# Get the new disk that you want to swap in
$disk = Get-AzDisk -ResourceGroupName myResourceGroup -Name newDisk
# Set the VM configuration to point to the new disk
Set-AzVMOSDisk -VM $vm -ManagedDiskId $disk.Id -Name $disk.Name -sto
# Update the VM with the new OS disk. Possible values of StorageAccountType include: 'Standard_LRS' and 'Premium_LRS'
Update-AzVM -ResourceGroupName myResourceGroup -VM $vm -StorageAccountType <Type of the storage account >
# Start the VM
Start-AzVM -Name $vm.Name -ResourceGroupName myResourceGroup
Verificare e abilitare la diagnostica di avvio
L'esempio seguente abilita l'estensione di diagnostica sulla macchina virtuale denominata myVMDeployed
nel gruppo di risorse denominato myResourceGroup
:
$myVM = Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myVMDeployed"
Set-AzVMBootDiagnostics -ResourceGroupName myResourceGroup -VM $myVM -enable
Update-AzVM -ResourceGroup "myResourceGroup" -VM $myVM
Passaggi successivi
Se si verificano problemi di connessione alla macchina virtuale, vedere Risolvere i problemi di connessione RDP a una macchina virtuale di Azure. Per problemi con l'accesso alle applicazioni in esecuzione sulla macchina virtuale, vedere Risolvere i problemi di connettività delle applicazioni su una macchina virtuale Windows.
Per ulteriori informazioni sull'uso di Resource Manager, vedere Panoramica di Azure Resource Manager.
Contattaci per ricevere assistenza
In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per