Risolvere i problemi relativi a una VM Linux collegando il disco del sistema operativo a una VM di ripristino tramite l'interfaccia della riga di comando di Azure 2.0Troubleshoot a Linux VM by attaching the OS disk to a recovery VM with the Azure CLI 2.0

Se nella VM Linux viene rilevato un errore di avvio o del disco, potrebbe essere necessario eseguire dei passaggi per la risoluzione dei problemi sul disco rigido virtuale stesso.If your Linux virtual machine (VM) encounters a boot or disk error, you may need to perform troubleshooting steps on the virtual hard disk itself. Un esempio comune è una voce non valida in /etc/fstab che impedisce il corretto avvio della macchina virtuale.A common example would be an invalid entry in /etc/fstab that prevents the VM from being able to boot successfully. Questo articolo illustra come usare l'interfaccia della riga di comando di Azure 2.0 per connettere il disco rigido virtuale a un'altra VM Linux al fine di risolvere eventuali errori e quindi ricreare la VM originale.This article details how to use the Azure CLI 2.0 to connect your virtual hard disk to another Linux VM to fix any errors, then re-create your original VM. È possibile anche eseguire questi passaggi tramite l'interfaccia della riga di comando di Azure 1.0.You can also perform these steps with the Azure CLI 1.0.

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 Linux per risolvere i problemi riscontrati.Attach and mount the virtual hard disk to another Linux 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.

Per eseguire questi passaggi per la risoluzione dei problemi, è necessario aver installato la versione più recente dell'interfaccia della riga di comando di Azure 2.0 e aver eseguito l'accesso a un account Azure con il comando az login.To perform these troubleshooting steps, you need the latest Azure CLI 2.0 installed and logged in to an Azure account using az login.

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

Esaminare l'output seriale per determinare perché la macchina virtuale non è in grado di avviarsi correttamente.Examine the serial output to determine why your VM is not able to boot correctly. Un esempio comune è una voce non valida in /etc/fstab, oppure l'eliminazione o lo spostamento del disco rigido virtuale sottostante.A common example is an invalid entry in /etc/fstab, or the underlying virtual hard disk being deleted or moved.

Ottenere i log di avvio con il comando az vm boot-diagnostics get-boot-log.Get the boot logs with az vm boot-diagnostics get-boot-log. L'esempio seguente ottiene l'output seriale dalla macchina virtuale denominata myVM nel gruppo di risorse myResourceGroup:The following example gets the serial output from the VM named myVM in the resource group named myResourceGroup:

az vm boot-diagnostics get-boot-log --resource-group myResourceGroup --name myVM

Esaminare l'output seriale per determinare perché la macchina virtuale non è in grado di avviarsi correttamente.Review the serial output to determine why the VM is failing to boot. Se l'output seriale non fornisce alcuna indicazione, potrebbe essere necessario esaminare i file di log in /var/log dopo aver collegato il disco rigido virtuale a una macchina virtuale per la risoluzione dei problemi.If the serial output isn't providing any indication, you may need to review log files in /var/log once you have the virtual hard disk connected to a troubleshooting VM.

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

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

Visualizzare le informazioni sulla macchina virtuale con il comando az vm show.View information about your VM with az vm show. Usare il flag --query per estrarre l'URI nel disco del sistema operativo.Use the --query flag to extract the URI to the OS disk. Nell'esempio seguente si ottengono le informazioni sul disco per la macchina virtuale denominata myVM nel gruppo di risorse denominato myResourceGroup:The following example gets disk information for the VM named myVM in the resource group named myResourceGroup:

az vm show --resource-group myResourceGroup --name myVM \
    --query [storageProfile.osDisk.vhd.uri] --output tsv

L'URI è analogo a https://mystorageaccount.blob.core.windows.net/vhds/myVM.vhd.The URI is similar to https://mystorageaccount.blob.core.windows.net/vhds/myVM.vhd.

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.

Eliminare la macchina virtuale con il comando az vm delete.Delete the VM with az vm delete. 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:

az vm delete --resource-group 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.

Collegare il disco rigido virtuale con il comando az vm unmanaged-disk attach.Attach the existing virtual hard disk with az vm unmanaged-disk attach. Quando si collega il disco rigido virtuale esistente, specificare l'URI del disco ottenuto con il comando az vm show precedente.When you attach the existing virtual hard disk, specify the URI to the disk obtained in the preceding az vm show 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:

az vm unmanaged-disk attach --resource-group myResourceGroup --vm-name myVMRecovery \
    --vhd-uri https://mystorageaccount.blob.core.windows.net/vhds/myVM.vhd

Montare il disco dati collegatoMount the attached data disk

Nota

Gli esempi seguenti mostrano in dettaglio i passaggi necessari in una VM Ubuntu.The following examples detail the steps required on an Ubuntu VM. Se si usa una diversa distribuzione Linux, ad esempio Red Hat Enterprise Linux o SUSE, i percorsi dei file di log e i comandi mount potrebbero differire.If you are using a different Linux distro, such as Red Hat Enterprise Linux or SUSE, the log file locations and mount commands may be a little different. Consultare la documentazione relativa alla distribuzione specifica per le opportune modifiche ai comandi.Refer to the documentation for your specific distro for the appropriate changes in commands.

  1. Eseguire SSH nella macchina virtuale di cui risolvere i problemi usando le credenziali appropriate.SSH to your troubleshooting VM using the appropriate credentials. Se questo disco è il primo disco dati collegato alla macchina virtuale usata per la risoluzione dei problemi, è probabilmente connesso a /dev/sdc.If this disk is the first data disk attached to your troubleshooting VM, the disk is likely connected to /dev/sdc. Usare dmseg per visualizzare i dischi collegati:Use dmseg to view attached disks:

    dmesg | grep SCSI
    

    L'output è simile all'esempio seguente:The output is similar to the following example:

    [    0.294784] SCSI subsystem initialized
    [    0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
    [    7.110271] sd 2:0:0:0: [sda] Attached SCSI disk
    [    8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk
    [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
    

    Nell'esempio precedente, il disco del sistema operativo è in /dev/sda e il disco temporaneo fornito per ogni macchina virtuale è in /dev/sdb.In the preceding example, the OS disk is at /dev/sda and the temporary disk provided for each VM is at /dev/sdb. Se sono presenti più dischi dati, devono trovarsi in /dev/sdd, /dev/sde, e così via.If you had multiple data disks, they should be at /dev/sdd, /dev/sde, and so on.

  2. Creare una directory per montare il disco rigido virtuale esistente.Create a directory to mount your existing virtual hard disk. L'esempio seguente crea una directory denominata troubleshootingdisk:The following example creates a directory named troubleshootingdisk:

    sudo mkdir /mnt/troubleshootingdisk
    
  3. Se sul disco rigido virtuale esistente sono presenti più partizioni, montare la partizione richiesta.If you have multiple partitions on your existing virtual hard disk, mount the required partition. L'esempio seguente monta la prima partizione primaria in /dev/sdc1:The following example mounts the first primary partition at /dev/sdc1:

    sudo mount /dev/sdc1 /mnt/troubleshootingdisk
    

    Nota

    Si consiglia di montare i dischi dati nelle macchine virtuali in Azure usando l'identificatore univoco universale (UUID) del disco rigido virtuale.Best practice is to mount data disks on VMs in Azure using the universally unique identifier (UUID) of the virtual hard disk. Per questo scenario, non è necessario montare il disco rigido virtuale usando il relativo l'UUID.For this short troubleshooting scenario, mounting the virtual hard disk using the UUID is not necessary. Durante il normale utilizzo, invece, modificare /etc/fstab per montare i dischi rigidi virtuali usando il nome di dispositivo anziché l'UUID può impedire il corretto avvio della macchina virtuale.However, under normal use, editing /etc/fstab to mount virtual hard disks using device name rather than UUID may cause the VM to fail to boot.

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 SSH nella macchina virtuale usata per la risoluzione dei problemi, smontare il disco rigido virtuale esistente.From the SSH session to your troubleshooting VM, unmount the existing virtual hard disk. Modificare innanzitutto la directory padre del punto di montaggio:Change out of the parent directory for your mount point first:

    cd /
    

    A questo punto smontare il disco rigido virtuale esistente.Now unmount the existing virtual hard disk. Nell'esempio viene smontato il dispositivo in /dev/sdc1:The following example unmounts the device at /dev/sdc1:

    sudo umount /dev/sdc1
    
  2. Scollegare il disco rigido virtuale dalla macchina virtuale.Now detach the virtual hard disk from the VM. Chiudere la sessione SSH nella macchina virtuale usata per la risoluzione dei problemi.Exit the SSH session to your troubleshooting VM. Elencare i dischi dati collegati alla macchina virtuale per la risoluzione dei problemi con il comando az vm unmanaged-disk list.List the attached data disks to your troubleshooting VM with az vm unmanaged-disk list. L'esempio seguente elenca i dischi dati collegati alla macchina virtuale denominata myVMRecoverynel gruppo di risorse myResourceGroup:The following example lists the data disks attached to the VM named myVMRecovery in the resource group named myResourceGroup:

    azure vm unmanaged-disk list --resource-group myResourceGroup --vm-name myVMRecovery \
        --query '[].{Disk:vhd.uri}' --output table
    

    Annotare il valore del disco rigido virtuale esistente.Note the name for your existing virtual hard disk. Il nome di un disco con l'URI https://mystorageaccount.blob.core.windows.net/vhds/myVM.vhd è, ad esempio, myVHD.For example, the name of a disk with the URI of https://mystorageaccount.blob.core.windows.net/vhds/myVM.vhd is myVHD.

    Scollegare il disco dati dalla macchina virtuale con il comando az vm unmanaged-disk detach.Detach the data disk from your VM az vm unmanaged-disk detach. Nell'esempio seguente il disco denominato myVHD viene scollegato dalla macchina virtuale denominata myVMRecovery nel gruppo di risorse myResourceGroup:The following example detaches the disk named myVHD from the VM named myVMRecovery in the myResourceGroup resource group:

    az vm unmanaged-disk detach --resource-group myResourceGroup --vm-name myVMRecovery \
        --name myVHD
    

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 usando l'URI del disco rigido virtuale dal comando precedente.The template deploys a VM using the VHD URI from the earlier command. Distribuire il modello con il comando az group deployment create.Deploy the template with az group deployment create. Specificare l'URI per il disco rigido virtuale originale e quindi specificare il tipo di sistema operativo e le dimensioni e il nome della macchina virtuale nel modo seguente:Provide the URI to your original VHD and then specify the OS type, VM size, and VM name as follows:

az group deployment create --resource-group myResourceGroup --name myDeployment \
  --parameters '{"osDiskVhdUri": {"value": "https://mystorageaccount.blob.core.windows.net/vhds/myVM.vhd"},
    "osType": {"value": "Linux"},
    "vmSize": {"value": "Standard_DS1_v2"},
    "vmName": {"value": "myDeployedVM"}}' \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-vm-specialized-vhd/azuredeploy.json

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. Abilitare la diagnostica di avvio con il comando az vm boot-diagnostics enable.Enable boot diagnostics with az vm boot-diagnostics enable. L'esempio seguente abilita l'estensione di diagnostica nella macchina virtuale denominata myDeployedVM nel gruppo di risorse myResourceGroup:The following example enables the diagnostic extension on the VM named myDeployedVM in the resource group named myResourceGroup:

az vm boot-diagnostics enable --resource-group myResourceGroup --name myDeployedVM

Passaggi successiviNext steps

Se si sono verificati problemi durante la connessione alla macchina virtuale, vedere l'articolo sulla risoluzione dei problemi di connessione SSH a una macchina virtuale di Azure.If you are having issues connecting to your VM, see Troubleshoot SSH connections to an Azure VM. Per problemi relativi all'accesso alle applicazioni in esecuzione nella macchina virtuale, vedere Risolvere i problemi di connettività delle applicazioni in una macchina virtuale di Azure per Linux.For issues with accessing applications running on your VM, see Troubleshoot application connectivity issues on a Linux VM.