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 1.0Troubleshoot a Linux VM by attaching the OS disk to a recovery VM using the Azure CLI 1.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 1.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 1.0 to connect your virtual hard disk to another Linux VM to fix any errors, then re-create your original VM.

Versioni dell'interfaccia della riga di comando per completare l'attivitàCLI versions to complete the task

È possibile completare l'attività usando una delle versioni seguenti dell'interfaccia della riga di comando:You can complete the task using one of the following CLI versions:

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.

Controllare di aver installato la versione più recente dell'interfaccia della riga di comando di Azure 1.0 , di aver eseguito l'accesso e di usare la modalità Resource Manager:Make sure that you have the latest Azure CLI 1.0 installed and logged in and using Resource Manager mode:

azure config mode arm

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.

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:

azure vm get-serial-output --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 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:

azure vm show --resource-group myResourceGroup --name myVM

Cercare il valore Vhd URI nell'output ottenuto con il comando precedente.Look for Vhd URI in the output from the preceding command. L'ultima riga dell'output di esempio seguente mostra il valore Vhd URI:The following truncated example output shows the Vhd URI on the last line:

info:    Executing command vm show
+ Looking up the VM "myVM"
+ Looking up the NIC "myNic"
+ Looking up the public ip "myPublicIP"
...
data:
data:      OS Disk:
data:        OSType                      :Linux
data:        Name                        :myVM
data:        Caching                     :ReadWrite
data:        CreateOption                :FromImage
data:        Vhd:
data:          Uri                       :https://mystorageaccount.blob.core.windows.net/vhds/myVM201610292712.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.

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:

azure 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.

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

azure vm disk attach --resource-group myResourceGroup --name myVMRecovery \
    --vhd-url 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. Nell'interfaccia della riga di comando di Azure, elencare innanzitutto i dischi dati collegati alla macchina virtuale usata per la risoluzione dei problemi.In the Azure CLI, first list the attached data disks to your troubleshooting VM. 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 disk list --resource-group myResourceGroup --vm-name myVMRecovery
    

    Annotare il valore Lun del disco rigido virtuale esistente.Note the Lun value for your existing virtual hard disk. L'output del comando di esempio seguente mostra il disco virtuale esistente collegato a LUN 0:The following example command output shows the existing virtual disk attached at LUN 0:

    info:    Executing command vm disk list
    + Looking up the VM "myVMRecovery"
    data:    Name              Lun  DiskSizeGB  Caching  URI
    data:    ------            ---  ----------  -------  ------------------------------------------------------------------------
    data:    myVM              0                None     https://mystorageaccount.blob.core.windows.net/vhds/myVM.vhd
    info:    vm disk list command OK
    

    Scollegare il disco dati dalla macchina virtuale usando il valore Lun appropriato:Detach the data disk from your VM using the applicable Lun value:

    azure vm disk detach --resource-group myResourceGroup --vm-name myVMRecovery \
        --lun 0
    

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:

azure group deployment create --resource-group myResourceGroup --name myDeployment \
    --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-vm-specialized-vhd/azuredeploy.json

Rispondere ai prompt del modello, ad esempio inserendo il nome della macchina virtuale (myDeployedVM nell'esempio seguente), il tipo di sistema operativo (Linux) e le dimensioni della macchina virtuale (Standard_DS1_v2).Answer the prompts for the template such as VM name (myDeployedVM the following example), OS type (Linux), and VM size (Standard_DS1_v2). 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. Un esempio dell'output del comando e dei prompt è il seguente:An example of the command output and prompts is as follows:

info:    Executing command group deployment create
info:    Supply values for the following parameters
vmName:  myDeployedVM
osType:  Linux
osDiskVhdUri:  https://mystorageaccount.blob.core.windows.net/vhds/myVM201610292712.vhd
vmSize:  Standard_DS1_v2
existingVirtualNetworkName:  myVnet
existingVirtualNetworkResourceGroup:  myResourceGroup
subnetName:  mySubnet
dnsNameForPublicIP:  mypublicipdeployed
+ Initializing template configurations and parameters
+ Creating a deployment
info:    Created template deployment "mydeployment"
+ Waiting for deployment to complete
+

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 myDeployedVM nel gruppo di risorse myResourceGroup:The following example enables the diagnostic extension on the VM named myDeployedVM in the resource group named myResourceGroup:

azure vm enable-diag --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.