Configurare RAID software in LinuxConfigure Software RAID on Linux

I RAID software vengono spesso usati nelle macchine virtuali Linux in Azure per presentare più dischi dati collegati come se si trattasse di un singolo dispositivo RAID.It's a common scenario to use software RAID on Linux virtual machines in Azure to present multiple attached data disks as a single RAID device. In genere questa configurazione consente di migliorare le prestazioni e la velocità effettiva rispetto all'utilizzo di un unico disco.Typically this can be used to improve performance and allow for improved throughput compared to using just a single disk.

Collegamento di dischi datiAttaching data disks

Per configurare un dispositivo RAID sono necessari due o più dischi dati vuoti.Two or more empty data disks are needed to configure a RAID device. Il dispositivo RAID viene creato principalmente per migliorare le prestazioni dell'I/O su disco.The primary reason for creating a RAID device is to improve performance of your disk IO. In base alle esigenze di I/O, è possibile scegliere di collegare dischi che sono archiviati nell'archiviazione Standard con un massimo di 500 IO/ps per ogni disco o nell'archiviazione Premium con un massimo di 5.000 IO/ps per ogni disco.Based on your IO needs, you can choose to attach disks that are stored in our Standard Storage, with up to 500 IO/ps per disk or our Premium storage with up to 5000 IO/ps per disk. In questo articolo non verrà illustrato in dettaglio come eseguire il provisioning e collegare dischi dati a una macchina virtuale Linux.This article does not go into detail on how to provision and attach data disks to a Linux virtual machine. Per istruzioni dettagliate su come collegare un disco dati vuoto a una macchina virtuale Linux in Azure, vedere l'articolo di Microsoft Azure relativo al collegamento di dischi.See the Microsoft Azure article attach a disk for detailed instructions on how to attach an empty data disk to a Linux virtual machine on Azure.

Installazione dell'utility mdadmInstall the mdadm utility

  • UbuntuUbuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS e Oracle LinuxCentOS & Oracle Linux

    sudo yum install mdadm
    
  • SLES e openSUSESLES and openSUSE

    zypper install mdadm
    

Creazione delle partizioni del discoCreate the disk partitions

In questo esempio verrà creata una singola partizione del disco in /dev/sdc.In this example, we create a single disk partition on /dev/sdc. La nuova partizione del disco verrà denominata /dev/sdc1.The new disk partition will be called /dev/sdc1.

  1. Avviare fdisk per iniziare la creazione delle partizioniStart fdisk to begin creating partitions

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
                    switch off the mode (command 'c') and change display units to
                    sectors (command 'u').
    
  2. Premere 'n' al prompt per creare una nuova partizione:Press 'n' at the prompt to create a new partition:

    Command (m for help): n
    
  3. Successivamente, premere 'p' per creare una partizione primaria:Next, press 'p' to create a primary partition:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Premere '1' per selezionare la partizione numero 1:Press '1' to select partition number 1:

    Partition number (1-4): 1
    
  5. Selezionare il punto di inizio della nuova partizione oppure premere <enter> per accettare le impostazioni predefinite, che prevedono il posizionamento della partizione all'inizio dello spazio libero nell'unità:Select the starting point of the new partition, or press <enter> to accept the default to place the partition at the beginning of the free space on the drive:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. Selezionare le dimensioni della partizione, ad esempio digitare '+10G' per creare una partizione da 10 gigabyte.Select the size of the partition, for example type '+10G' to create a 10 gigabyte partition. In alternativa, premere <enter> per creare un'unica partizione che occupa l'intera unità:Or, press <enter> create a single partition that spans the entire drive:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. Successivamente, modificare l'ID e il tipo della partizione dal valore predefinito '83' (Linux) a 'fd' (rilevamento automatico RAID Linux):Next, change the ID and type of the partition from the default ID '83' (Linux) to ID 'fd' (Linux raid auto):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Infine, scrivere la tabella delle partizioni sull'unità e chiudere fdisk:Finally, write the partition table to the drive and exit fdisk:

    Command (m for help): w
    The partition table has been altered!
    

Creazione dell'array RAIDCreate the RAID array

  1. Nell'esempio seguente verrà eseguito lo striping (livello RAID 0) di tre partizioni situate in tre dischi dati separati (sdc1, sdd1, sde1).The following example will "stripe" (RAID level 0) three partitions located on three separate data disks (sdc1, sdd1, sde1). Dopo l'esecuzione del comando verrà creato un nuovo dispositivo RAID denominato /dev/md127 .After running this command a new RAID device called /dev/md127 is created. Si noti anche che se i dischi dati facevano precedentemente parte di una matrice RAID inattiva, può essere necessario aggiungere il parametro --force al comando mdadm:Also note that if these data disks we previously part of another defunct RAID array it may be necessary to add the --force parameter to the mdadm command:

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. Creare il file system nel nuovo dispositivo RAIDCreate the file system on the new RAID device

    a.a. CentOS, Oracle Linux, SLES 12, openSUSE e UbuntuCentOS, Oracle Linux, SLES 12, openSUSE, and Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    b.b. SLES 11SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    c.c. SLES 11: abilitare boot.md e creare mdadm.confSLES 11 - enable boot.md and create mdadm.conf

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    Nota

    Dopo aver apportato queste modifiche nei sistemi SUSE può essere necessario il riavvio.A reboot may be required after making these changes on SUSE systems. Questo passaggio non è obbligatorio su SLES 12.This step is not required on SLES 12.

Aggiungere il nuovo file a /etc/fstabAdd the new file system to /etc/fstab

Importante

Se il file /etc/fstab non viene modificato in modo corretto, il sistema potrebbe diventare instabile.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.

  1. Creare il punto di montaggio desiderato per il nuovo file system, ad esempio:Create the desired mount point for your new file system, for example:

    sudo mkdir /data
    
  2. Quando si modifica /etc/fstab è consigliabile utilizzare l' UUID anziché il nome del dispositivo per fare riferimento al file system.When editing /etc/fstab, the UUID should be used to reference the file system rather than the device name. Usare l'utilità blkid per determinare l'UUID per il nuovo file system:Use the blkid utility to determine the UUID for the new file system:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. Aprire /etc/fstab in un editor di testo e aggiungere una voce per il nuovo file system, ad esempio:Open /etc/fstab in a text editor and add an entry for the new file system, for example:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    In alternativa, in SLES 11:Or on SLES 11:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    Salvare e chiudere /etc/fstab.Then, save and close /etc/fstab.

  4. Verificare che la voce /etc/fstab sia corretta:Test that the /etc/fstab entry is correct:

    sudo mount -a
    

    Se questo comando genera un messaggio di errore, verificare la sintassi nel file /etc/fstab file.If this command results in an error message, please check the syntax in the /etc/fstab file.

    Eseguire quindi il comando mount per assicurarsi che il file system venga montato:Next run the mount command to ensure the file system is mounted:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Facoltativo) Parametri di avvio alternativo(Optional) Failsafe Boot Parameters

    Configurazione di fstabfstab configuration

    Molte distribuzioni includono i parametri di montaggio nobootwait o nofail, che è possibile aggiungere al file /etc/fstab.Many distributions include either the nobootwait or nofail mount parameters that may be added to the /etc/fstab file. Tali parametri consentono di ignorare gli errori durante il montaggio di uno specifico file system. Consentono pertanto di proseguire l'avvio del sistema Linux anche se non è possibile montare correttamente il file system RAID.These parameters allow for failures when mounting a particular file system and allow the Linux system to continue to boot even if it is unable to properly mount the RAID file system. Per altre informazioni su questi parametri, fare riferimento alla documentazione della distribuzione.Refer to your distribution's documentation for more information on these parameters.

    Esempio (Ubuntu):Example (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    Parametri di avvio di LinuxLinux boot parameters

    Oltre ai parametri precedenti, il parametro del kernel "bootdegraded=true" consente di avviare il sistema anche se il RAID viene percepito come danneggiato o con funzionalità ridotte, ad esempio se un'unità dati viene rimossa accidentalmente dalla macchina virtuale.In addition to the above parameters, the kernel parameter "bootdegraded=true" can allow the system to boot even if the RAID is perceived as damaged or degraded, for example if a data drive is inadvertently removed from the virtual machine. Per impostazione predefinita, questa situazione può rendere impossibile l'avvio del sistema.By default this could also result in a non-bootable system.

    Per informazioni sulla corretta modifica dei parametri del kernel, fare riferimento alla documentazione della distribuzione.Please refer to your distribution's documentation on how to properly edit kernel parameters. Ad esempio, in molte distribuzioni (CentOS, Oracle Linux, SLES 11) è possibile aggiungere manualmente tali parametri al file "/boot/grub/menu.lst".For example, in many distributions (CentOS, Oracle Linux, SLES 11) these parameters may be added manually to the "/boot/grub/menu.lst" file. In Ubuntu è possibile aggiungere il parametro GRUB_CMDLINE_LINUX_DEFAULT alla variabile in "/etc/default/grub".On Ubuntu this parameter can be added to the GRUB_CMDLINE_LINUX_DEFAULT variable on "/etc/default/grub".

Supporto per TRIM/UNMAPTRIM/UNMAP support

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.

Nota

RAID non può inviare comandi di rimozione se le dimensioni del blocco per la matrice sono impostate su un valore inferiore a quello predefinito di 512 KB.RAID may not issue discard commands if the chunk size for the array is set to less than the default (512KB). Questo perché anche la granularità di annullamento del mapping nell'host è di 512 KB.This is because the unmap granularity on the Host is also 512KB. Se le dimensioni del blocco della matrice sono state modificate tramite il parametro --chunk= di mdadm, il kernel può ignorare le richieste TRIM/UNMAP.If you modified the array's chunk size via mdadm's --chunk= parameter, then TRIM/unmap requests may be ignored by the kernel.

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=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  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 /data
    

    RHEL/CentOSRHEL/CentOS

    # sudo yum install util-linux
    # sudo fstrim /data