Come collegare un disco dati a una macchina virtuale LinuxHow to Attach a Data Disk to a Linux Virtual Machine

Importante

Azure offre due diversi modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica.Azure has two different deployment models for creating and working with resources: Resource Manager and Classic. Questo articolo illustra l'uso del modello di distribuzione classica.This article covers using the Classic deployment model. Microsoft consiglia di usare il modello di Gestione risorse per le distribuzioni più recenti.Microsoft recommends that most new deployments use the Resource Manager model. Vedere come collegare un disco dati tramite il modello di distribuzione di Resource Manager.See how to attach a data disk using the Resource Manager deployment model.

È possibile collegare sia dischi vuoti sia dischi contenenti dati alle VM di Azure.You can attach both empty disks and disks that contain data to your Azure VMs. In entrambi i casi i dischi sono file con estensione vhd che risiedono in un account di archiviazione di Azure.Both types of disks are .vhd files that reside in an Azure storage account. Come con l'aggiunta di un disco a un computer Linux, dopo aver collegato il disco, è necessario inizializzarlo e formattarlo affinché sia pronto per l'uso.As with adding any disk to a Linux machine, after you attach the disk you need to initialize and format it so it's ready for use. Questo articolo illustra in dettaglio come collegare sia i dischi vuoti sia i dischi contenenti dati alle VM e come inizializzare e formattare successivamente un nuovo disco.This article details attaching both empty disks and disks already containing data to your VMs, as well as how to then initialize and format a new disk.

Nota

È consigliabile usare uno o più dischi separati per archiviare i dati di una macchina virtuale.It's a best practice to use one or more separate disks to store a virtual machine's data. Al momento della creazione, una macchina virtuale di Azure dispone di un disco del sistema operativo e di un disco temporaneo.When you create an Azure virtual machine, it has an operating system disk and a temporary disk. Non usare il disco temporaneo per archiviare i dati persistenti.Do not use the temporary disk to store persistent data. Come si può dedurre dal nome, fornisce solo archiviazione temporanea.As the name implies, it provides temporary storage only. Non offre funzionalità di ridondanza o backup perché non risiede nel servizio di archiviazione di Azure.It offers no redundancy or backup because it doesn't reside in Azure storage. Il disco temporaneo è in genere gestito dall'agente Linux di Azure e viene montato automaticamente in /mnt/resource oppure in /mnt nelle immagini Ubuntu.The temporary disk is typically managed by the Azure Linux Agent and automatically mounted to /mnt/resource (or /mnt on Ubuntu images). D'altra parte, il kernel potrebbe assegnare a un disco dati il nome /dev/sdc; in tal caso è necessario suddividere in partizioni, formattare e montare tale risorsa.On the other hand, a data disk might be named by the Linux kernel something like /dev/sdc, and you need to partition, format, and mount this resource. Per dettagli, vedere Guida dell'utente dell'agente Linux di Azure.See the Azure Linux Agent User Guide for details.

Per altre informazioni sui dischi, vedere Informazioni sui dischi e sui dischi rigidi virtuali per le macchine virtuali.For more information about disks, see About Disks and VHDs for Virtual Machines.

Collegare un disco vuotoAttach an empty disk

  1. Aprire l'interfaccia della riga di comando di Azure 1.0 e connettersi alla sottoscrizione di Azure.Open Azure CLI 1.0 and connect to your Azure subscription. Assicurarsi che sia attiva la modalità Azure Service Management (azure config mode asm).Make sure you are in Azure Service Management mode (azure config mode asm).
  2. Immettere azure vm disk attach-new per creare e collegare un nuovo disco, come illustrato nell'esempio seguente.Enter azure vm disk attach-new to create and attach a new disk as shown in the following example. Sostituire myVM con il nome della macchina virtuale Linux e specificare le dimensioni in GB del disco, che in questo esempio è di 100 GB:Replace myVM with the name of your Linux Virtual Machine and specify the size of the disk in GB, which is 100GB in this example:

    azure vm disk attach-new myVM 100
    
  3. Dopo che è stato creato e collegato, il disco dati verrà elencato nell'output di azure vm disk list <virtual-machine-name> come illustrato nell'esempio seguente:After the data disk is created and attached, it's listed in the output of azure vm disk list <virtual-machine-name> as shown in the following example:

    azure vm disk list TestVM
    

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

    info:    Executing command vm disk list
    
    * Fetching disk images
    * Getting virtual machines
    * Getting VM disks
     data:    Lun  Size(GB)  Blob-Name                         OS
     data:    ---  --------  --------------------------------  -----
     data:         30        myVM-2645b8030676c8f8.vhd  Linux
     data:    0    100       myVM-76f7ee1ef0f6dddc.vhd
     info:    vm disk list command OK
    

Collegare un disco esistenteAttach an existing disk

Per collegare un disco esistente, è necessario che in un account di archiviazione sia disponibile un file con estensione vhd.Attaching an existing disk requires that you have a .vhd available in a storage account.

  1. Aprire l'interfaccia della riga di comando di Azure 1.0 e connettersi alla sottoscrizione di Azure.Open Azure CLI 1.0 and connect to your Azure subscription. Assicurarsi che sia attiva la modalità Azure Service Management (azure config mode asm).Make sure you are in Azure Service Management mode (azure config mode asm).
  2. Controllare se il disco rigido virtuale che si desidera collegare è già caricato nella sottoscrizione di Azure:Check if the VHD you want to attach is already uploaded to your Azure subscription:

    azure vm disk list
    

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

     info:    Executing command vm disk list
    
    * Fetching disk images
     data:    Name                                          OS
     data:    --------------------------------------------  -----
     data:    myTestVhd                                     Linux
     data:    TestVM-ubuntuVMasm-0-201508060029150744  Linux
     data:    TestVM-ubuntuVMasm-0-201508060040530369
     info:    vm disk list command OK
    
  3. Se non si trova il disco che si vuole usare, è possibile caricare un disco rigido virtuale locale nella sottoscrizione usando azure vm disk create o azure vm disk upload.If you don't find the disk that you want to use, you may upload a local VHD to your subscription by using azure vm disk create or azure vm disk upload. Un esempio di disk create verrebbe visualizzato come nell'esempio seguente:An example of disk create would be as in the following example:

    azure vm disk create myVhd .\TempDisk\test.VHD -l "East US" -o Linux
    

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

    info:    Executing command vm disk create
    + Retrieving storage accounts
    info:    VHD size : 10 GB
    info:    Uploading 10485760.5 KB
    Requested:100.0% Completed:100.0% Running:   0 Time:   25s Speed:    82 KB/s
    info:    Finishing computing MD5 hash, 16% is complete.
    info:    https://mystorageaccount.blob.core.windows.net/disks/myVHD.vhd was
    uploaded successfully
    info:    vm disk create command OK
    

    È inoltre possibile usare azure vm disk upload per caricare un disco rigido virtuale in un account di archiviazione specifico.You may also use azure vm disk upload to upload a VHD to a specific storage account. Altre informazioni sui comandi per la gestione dei dischi dati delle macchine virtuali di Azure sono disponibili qui.Read more about the commands to manage your Azure virtual machine data disks over here.

  4. Collegare adesso il disco rigido virtuale alla macchina virtuale:Now you attach the desired VHD to your virtual machine:

    azure vm disk attach myVM myVhd
    

    Assicurarsi di sostituire myVM con il nome della macchina virtuale e myVHD con il disco rigido virtuale desiderato.Make sure to replace myVM with the name of your virtual machine, and myVHD with your desired VHD.

  5. È possibile verificare che il disco sia collegato alla macchina virtuale con azure vm disk list <virtual-machine-name>:You can verify the disk is attached to the virtual machine with azure vm disk list <virtual-machine-name>:

    azure vm disk list myVM
    

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

     info:    Executing command vm disk list
    
    * Fetching disk images
    * Getting virtual machines
    * Getting VM disks
     data:    Lun  Size(GB)  Blob-Name                         OS
     data:    ---  --------  --------------------------------  -----
     data:         30        TestVM-2645b8030676c8f8.vhd  Linux
     data:    1    10        test.VHD
     data:    0    100        TestVM-76f7ee1ef0f6dddc.vhd
     info:    vm disk list command OK
    

Nota

Dopo l'aggiunta di un disco dati, sarà necessario accedere alla macchina virtuale e inizializzare il disco in modo che la macchina virtuale possa usarlo per l'archiviazione. Per altre informazioni sull'inizializzazione del disco, vedere i passaggi riportati di seguito.After you add a data disk, you'll need to log on to the virtual machine and initialize the disk so the virtual machine can use the disk for storage (see the following steps for more information on how to do initialize the disk).

Inizializzare un nuovo disco dati in LinuxInitialize a new data disk in Linux

  1. Stabilire una connessione SSH alla VM.SSH to your VM. Per altre informazioni, vedere Come accedere a una macchina virtuale che esegue Linux.For more information, see How to log on to a virtual machine running Linux.
  2. In seguito è necessario trovare l'identificatore del dispositivo per inizializzare il disco dati.Next you need to find the device identifier for the data disk to initialize. A questo scopo è possibile procedere in due modi:There are two ways to do that:

    a) Grep per dispositivi SCSI nei log, come nel comando seguente:a) Grep for SCSI devices in the logs, such as in the following command:

    sudo grep SCSI /var/log/messages
    

    Per le distribuzioni recenti di Ubuntu, può essere necessario usare sudo grep SCSI /var/log/syslog perché la registrazione in /var/log/messages potrebbe essere disattivata per impostazione predefinita.For recent Ubuntu distributions, you may need to use sudo grep SCSI /var/log/syslog because logging to /var/log/messages might be disabled by default.

    L'identificatore dell'ultimo disco dati aggiunto verrà indicato nei messaggi visualizzati.You can find the identifier of the last data disk that was added in the messages that are displayed.

    Visualizzare i messaggi relativi al disco

    OPPUREOR

    b) Usare il comando lsscsi per trovare l'ID del dispositivo. lsscsi può essere installato tramite yum install lsscsi (in distribuzioni basate su Red Hat) o apt-get install lsscsi (in distribuzioni basate su Debian).b) Use the lsscsi command to find out the device id. lsscsi can be installed by either yum install lsscsi (on Red Hat based distributions) or apt-get install lsscsi (on Debian based distributions). È possibile trovare il disco che si sta cercando in base al relativo LUN o numero di unità logica.You can find the disk you are looking for by its lun or logical unit number. Ad esempio, il LUN per i dischi collegati può essere facilmente trovato in azure vm disk list <virtual-machine> come:For example, the lun for the disks you attached can be easily seen from azure vm disk list <virtual-machine> as:

    azure vm disk list myVM
    

    L'output è simile al seguente:The output is similar to the following:

    info:    Executing command vm disk list
    + Fetching disk images
    + Getting virtual machines
    + Getting VM disks
    data:    Lun  Size(GB)  Blob-Name                         OS
    data:    ---  --------  --------------------------------  -----
    data:         30        myVM-2645b8030676c8f8.vhd  Linux
    data:    0    100       myVM-76f7ee1ef0f6dddc.vhd
    info:    vm disk list command OK
    

    Confrontare questi dati con l'output di lsscsi per la stessa macchina virtuale di esempio:Compare this data with the output of lsscsi for the same sample virtual machine:

    [1:0:0:0]    cd/dvd  Msft     Virtual CD/ROM   1.0   /dev/sr0
    [2:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sda
    [3:0:1:0]    disk    Msft     Virtual Disk     1.0   /dev/sdb
    [5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc
    

    L'ultimo numero della tupla in ogni riga è il lun.The last number in the tuple in each row is the lun. Per altre informazioni, vedere man lsscsi .See man lsscsi for more information.

  3. Al prompt dei comandi, digitare il comando seguente per creare un dispositivo:At the prompt, type the following command to create your device:

    sudo fdisk /dev/sdc
    
  4. Quando richiesto, digitare n per creare una partizione.When prompted, type n to create a partition.

    Creare un dispositivo

  5. Quando richiesto, digitare p per impostare la partizione come partizione primaria.When prompted, type p to make the partition the primary partition. Digitare 1 per impostarla come prima partizione, quindi premere INVIO per accettare il valore predefinito per il cilindro.Type 1 to make it the first partition, and then type enter to accept the default value for the cylinder. In alcuni sistemi, è possibile visualizzare i valori predefiniti del primo e dell'ultimo settore e non del cilindro.On some systems, it can show the default values of the first and the last sectors, instead of the cylinder. È possibile scegliere di accettare questi valori predefiniti.You can choose to accept these defaults.

    Creare la partizione

  6. Digitare p per visualizzare i dettagli relativi al disco da suddividere in partizioni.Type p to see the details about the disk that is being partitioned.

    Visualizzare le informazioni sul disco

  7. Digitare w per scrivere le impostazioni per il disco.Type w to write the settings for the disk.

    Scrivere le modifiche sul disco

  8. È ora possibile creare il file system nella nuova partizione.Now you can create the file system on the new partition. Aggiungere il numero della partizione all'ID del dispositivo (nell'esempio seguente /dev/sdc1).Append the partition number to the device ID (in the following example /dev/sdc1). Nell'esempio seguente viene creata una partizione ext4 in /dev/sdc1:The following example creates an ext4 partition on /dev/sdc1:

    sudo mkfs -t ext4 /dev/sdc1
    

    Creare il file system

    Nota

    Che i sistemi SUSE Linux Enterprise 11 supportano solo l'accesso di sola lettura ai file system ext4.SuSE Linux Enterprise 11 systems only support read-only access for ext4 file systems. Per questi sistemi è consigliabile formattare il nuovo file system come ext3 anziché ext4.For these systems, it is recommended to format the new file system as ext3 rather than ext4.

  9. Creare una directory per il montaggio del nuovo file system nel modo seguente:Make a directory to mount the new file system, as follows:

    sudo mkdir /datadrive
    
  10. È infine possibile montare l'unità, come indicato di seguito:Finally you can mount the drive, as follows:

    sudo mount /dev/sdc1 /datadrive
    

    Il disco dati è ora pronto per l'uso come /datadrive.The data disk is now ready to use as /datadrive.

    Creare la directory e montare il disco

  11. Aggiungere la nuova unità a /etc/fstab:Add the new drive to /etc/fstab:

    Per assicurarsi che l'unità venga rimontata automaticamente dopo un riavvio, è necessario aggiungerla al file /etc/fstab.To ensure the drive is remounted automatically after a reboot it must be added to the /etc/fstab file. È inoltre consigliabile che l'UUID (Universally Unique IDentifier) usato in /etc/fstab faccia riferimento all'unità anziché al solo nome del dispositivo, ad esempio /dev/sdc1.In addition, it is highly recommended that the UUID (Universally Unique IDentifier) is used in /etc/fstab to refer to the drive rather than just the device name (i.e. /dev/sdc1). L'utilizzo dell'UUID evita che venga montato il disco non corretto in una posizione specificata, se il sistema operativo rileva un errore del disco durante l'avvio, e l'assegnazione di tali ID dispositivo agli eventuali dischi dati rimanenti.Using the UUID avoids the incorrect disk being mounted to a given location if the OS detects a disk error during boot and any remaining data disks then being assigned those device IDs. Per individuare l'UUID della nuova unità, è possibile usare l'utilità blkid :To find the UUID of the new drive, you can use the blkid utility:

    sudo -i blkid
    

    L'output è simile al seguente esempio:The output looks similar to the following example:

    /dev/sda1: UUID="11111111-1b1b-1c1c-1d1d-1e1e1e1e1e1e" TYPE="ext4"
    /dev/sdb1: UUID="22222222-2b2b-2c2c-2d2d-2e2e2e2e2e2e" TYPE="ext4"
    /dev/sdc1: UUID="33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e" TYPE="ext4"
    

    Nota

    Se il file /etc/fstab non viene modificato in modo corretto, il sistema potrebbe diventare non avviabile.Improperly editing the /etc/fstab file could result in an unbootable system. In caso di dubbi, fare riferimento alla documentazione della distribuzione per informazioni su come modificare correttamente questo file.If unsure, refer to the distribution's documentation for information on how to properly edit this file. È inoltre consigliabile creare una copia di backup del file /etc/fstab prima della modifica.It is also recommended that a backup of the /etc/fstab file is created before editing.

    Successivamente, aprire il file /etc/fstab in un editor di testo:Next, open the /etc/fstab file in a text editor:

    sudo vi /etc/fstab
    

    In questo esempio viene usato il valore UUID del nuovo dispositivo /dev/sdc1 creato nei passaggi precedenti e il punto di montaggio /datadrive.In this example, we use the UUID value for the new /dev/sdc1 device that was created in the previous steps, and the mountpoint /datadrive. Alla fine del file /etc/fstab aggiungere la riga di codice seguente:Add the following line to the end of the /etc/fstab file:

    UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   ext4   defaults,nofail   1   2
    

    In alternativa, su sistemi basati su SUSE Linux, potrebbe essere necessario usare un formato leggermente diverso:Or, on systems based on SuSE Linux you may need to use a slightly different format:

    /dev/disk/by-uuid/33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   ext3   defaults,nofail   1   2
    

    Nota

    L'opzione nofail garantisce che la macchina virtuale venga avviata anche se il file system è danneggiato o il disco non esiste in fase di avvio.The nofail option ensures that the VM starts even if the filesystem is corrupt or the disk does not exist at boot time. Senza questa opzione potrebbero verificarsi comportamenti come quelli descritti in Cannot SSH to Linux VM due to FSTAB errors (Impossibile eseguire una connessione SSH su VM Linux a causa di errori FSTAB).Without this option, you may encounter behavior as described in Cannot SSH to Linux VM due to FSTAB errors.

    Per verificare che il file system venga montato correttamente, è possibile smontarlo e rimontarlo, ad esempio usando il punto di montaggio di esempio /datadrive creato nei passaggi precedenti:You can now test that the file system is mounted properly by unmounting and then remounting the file system, i.e. using the example mount point /datadrive created in the earlier steps:

    sudo umount /datadrive
    sudo mount /datadrive
    

    Se il comando mount restituisce un errore, verificare che la sintassi del file /etc/fstab sia corretta.If the mount command produces an error, check the /etc/fstab file for correct syntax. Anche le eventuali altre unità o partizioni dati create devono essere inserite separatamente in /etc/fstab.If additional data drives or partitions are created, enter them into /etc/fstab separately as well.

    Rendere scrivibile l'unità tramite questo comando:Make the drive writable by using this command:

    sudo chmod go+w /datadrive
    

    Nota

    Se si rimuove successivamente un disco dati senza modificare fstab, è possibile che si verifichi un errore di avvio della macchina virtuale.Subsequently removing a data disk without editing fstab could cause the VM to fail to boot. Se si tratta di un errore ricorrente, nella maggior parte delle distribuzioni sono disponibili le opzioni fstab nofail e/o nobootwait, che consentono l'avvio di un sistema anche in caso di errore di montaggio in fase di avvio.If this is a common occurrence, most distributions provide either the nofail and/or nobootwait fstab options that allow a system to boot even if the disk fails to mount at boot time. Per altre informazioni su questi parametri, consultare la documentazione della distribuzione.Consult your distribution's documentation for more information on these parameters.

Supporto delle funzioni TRIM/UNMAP per Linux in AzureTRIM/UNMAP support for Linux in Azure

Alcuni kernel di Linux supportano operazioni TRIM/UNMAP allo scopo di rimuovere i blocchi inutilizzati sul disco.Some Linux kernels support TRIM/UNMAP operations to discard unused blocks on the disk. Nel servizio di archiviazione standard, queste operazioni sono particolarmente utili per informare Azure che le pagine eliminate non sono più valide e possono essere rimosse.These operations are primarily useful in standard storage to inform Azure that deleted pages are no longer valid and can be discarded. L'eliminazione delle pagine consente di risparmiare sui costi quando si creano file di grandi dimensioni per poi eliminarli.Discarding pages can save cost if you create large files and then delete them.

Esistono due modi per abilitare la funzione TRIM in una VM Linux.There are two ways to enable TRIM support in your Linux VM. Come di consueto, consultare la documentazione della distribuzione per stabilire l'approccio consigliato:As usual, consult your distribution for the recommended approach:

  • Usare l'opzione di montaggio discard in /etc/fstab, ad esempio:Use the discard mount option in /etc/fstab, for example:

    UUID=33333333-3b3b-3c3c-3d3d-3e3e3e3e3e3e   /datadrive   ext4   defaults,discard   1   2
    
  • In alcuni casi l'opzione discard può avere implicazioni sulle prestazioni.In some cases the discard option may have performance implications. In alternativa, è possibile eseguire il comando fstrim manualmente dalla riga di comando oppure aggiungerlo a crontab per eseguirlo a intervalli regolari:Alternatively, you can run the fstrim command manually from the command line, or add it to your crontab to run regularly:

    UbuntuUbuntu

    sudo apt-get install util-linux
    sudo fstrim /datadrive
    

    RHEL/CentOSRHEL/CentOS

    sudo yum install util-linux
    sudo fstrim /datadrive
    

Risoluzione dei problemiTroubleshooting

Quando si aggiungono dischi dati a una VM Linux, potrebbero verificarsi errori in caso di disco inesistente nel LUN 0.When adding data disks to a Linux VM, you may encounter errors if a disk does not exist at LUN 0. Se si aggiunge un disco manualmente usando il comando azure vm disk attach-new e si specifica un LUN (--lun) anziché consentire alla piattaforma Azure di determinare il LUN appropriato, fare attenzione che nel LUN 0 sia/sarà già presente un disco.If you are adding a disk manually using the azure vm disk attach-new command and you specify a LUN (--lun) rather than allowing the Azure platform to determine the appropriate LUN, take care that a disk already exists / will exist at LUN 0.

L'esempio seguente mostra un frammento di codice dell'output di lsscsi:Consider the following example showing a snippet of the output from lsscsi:

[5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc 
[5:0:0:1]    disk    Msft     Virtual Disk     1.0   /dev/sdd 

I due dischi dati sono disponibili nel LUN 0 e nel LUN 1 (la prima colonna dell'output lsscsi indica [host:channel:target:lun]).The two data disks exist at LUN 0 and LUN 1 (the first column in the lsscsi output details [host:channel:target:lun]). Entrambi i dischi devono essere accessibili dalla VM.Both disks should be accessbile from within the VM. Se è stata specificata manualmente l'aggiunta del primo e del secondo disco al LUN 1 e al LUN 2 rispettivamente, è possibile che i dischi non siano visualizzati correttamente all'interno della VM.If you had manually specified the first disk to be added at LUN 1 and the second disk at LUN 2, you may not see the disks correctly from within your VM.

Nota

In questi esempi il valore host di Azure è 5, ma può variare a seconda del tipo di archiviazione selezionato.The Azure host value is 5 in these examples, but this may vary depending on the type of storage you select.

Questo comportamento del disco non è un problema di Azure, ma dipende dal modo in cui il kernel Linux segue le specifiche SCSI.This disk behavior is not an Azure problem, but the way in which the Linux kernel follows the SCSI specifications. Quando il kernel Linux analizza il bus SCSI per individuare i dispositivi collegati, affinché il sistema continui ad analizzare la presenza di altri dispositivi è necessario che ne rilevi uno nel LUN 0.When the Linux kernel scans the SCSI bus for attached devices, a device must be found at LUN 0 in order for the system to continue scanning for additional devices. Di conseguenza:As such:

  • Dopo aver aggiunto un disco dati, esaminare l'output di lsscsi per verificare la presenza di un disco nel LUN 0.Review the output of lsscsi after adding a data disk to verify that you have a disk at LUN 0.
  • Se il disco non viene visualizzato correttamente nella VM, verificare che sia presente un disco nel LUN 0.If your disk does not show up correctly within your VM, verify a disk exists at LUN 0.

Passaggi successiviNext Steps

Per altre informazioni sull'uso delle VM Linux, vedere gli articoli seguenti:You can read more about using your Linux VM in the following articles: