Condividi tramite


Configurare RAID software su Linux

Si tratta di uno scenario comune per usare RAID software in macchine virtuali Linux in Azure per presentare più dischi dati collegati come un singolo dispositivo RAID. In genere questo può essere usato per migliorare le prestazioni e consentire una maggiore velocità effettiva rispetto all'uso di un solo disco.

Collegamento di dischi dati

Per configurare un dispositivo RAID sono necessari due o più dischi dati vuoti. Il motivo principale per la creazione di un dispositivo RAID è migliorare le prestazioni dell'I/O del disco. In base alle esigenze di I/O, è possibile scegliere di collegare dischi archiviati nell'archiviazione Standard, con un massimo di 500 operazioni di I/O/ps per disco o l'archiviazione Premium con un massimo di 5000 operazioni di I/O/ps per disco. Questo articolo non illustra in dettaglio come effettuare il provisioning e collegare dischi dati a una macchina virtuale Linux. Vedere l'articolo di Microsoft Azure collegare un disco per istruzioni dettagliate su come collegare un disco dati vuoto a una macchina virtuale Linux in Azure.

Importante

Non combinare dischi di dimensioni diverse, in questo modo le prestazioni del raidset sarebbero limitate a quello del disco più lento.

Installare l'utilità mdadm

  • Ubuntu

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

    sudo yum install mdadm
    
  • SLES e openSUSE

    zypper install mdadm
    

Creare le partizioni del disco

In questo esempio viene creata una singola partizione disco in /dev/sdc. La nuova partizione del disco verrà denominata /dev/sdc1.

  1. Iniziare fdisk a creare partizioni

    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 partizione new:

    Command (m for help): n
    
  3. Premere quindi "p" per creare una partizione primary:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Premere "1" per selezionare il numero di partizione 1:

    Partition number (1-4): 1
    
  5. Selezionare il punto iniziale della nuova partizione oppure premere <enter> per accettare l'impostazione predefinita per posizionare la partizione all'inizio dello spazio disponibile nell'unità:

    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. In alternativa, premere <enter> crea una singola partizione che si estende sull'intera unità:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. Modificare quindi l'ID e il tipo della partizione dall'ID predefinito '83' (Linux) all'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 di partizione nell'unità e uscire da fdisk:

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

Creare la matrice RAID

  1. L'esempio seguente eseguirà lo "striping" (livello RAID 0) delle tre partizioni situate su tre dischi dati separati (sdc1, sdd1, sde1). Dopo aver eseguito questo comando viene creato un nuovo dispositivo RAID denominato /dev/md127 . Si noti anche che se questi dischi dati in precedenza fanno parte di un'altra matrice RAID inattiva, potrebbe essere necessario aggiungere il --force parametro al mdadm comando:

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

    CentOS, Oracle Linux, SLES 12, openSUSE e Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 : abilitare boot.md e creare mdadm.conf

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

    Annotazioni

    Un riavvio potrebbe essere necessario dopo aver apportato queste modifiche nei sistemi SUSE. Questo passaggio non è obbligatorio in SLES 12.

Aggiungere il nuovo file system a /etc/fstab

Importante

La modifica non corretta del file /etc/fstab potrebbe comportare un sistema non avviabile. In caso di dubbi, fare riferimento alla documentazione della distribuzione per informazioni su come modificare correttamente questo file. È inoltre consigliabile creare una copia di backup del file /etc/fstab prima della modifica.

  1. Creare il punto di montaggio desiderato per il nuovo file system, ad esempio:

    sudo mkdir /data
    
  2. Quando si modifica /etc/fstab, l'UUID deve essere usato per fare riferimento al file system anziché al nome del dispositivo. Usare l'utilità blkid per determinare l'UUID per il nuovo 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:

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

    Oppure su SLES 11:

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

    Salvare e chiudere /etc/fstab.

  4. Verificare che la voce /etc/fstab sia corretta:

    sudo mount -a
    

    Se questo comando genera un messaggio di errore, controllare la sintassi nel file /etc/fstab.

    Eseguire quindi il comando mount per assicurarsi che il file system sia montato:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Facoltativo) Parametri di avvio sicuri

    configurazione fstab

    Molte distribuzioni includono i nobootwait parametri di montaggio o nofail che possono essere aggiunti al file /etc/fstab. Questi parametri consentono fallimenti durante il montaggio di un file system specifico e permettono al sistema Linux di continuare il processo di avvio anche se non è in grado di montare correttamente il file system RAID. Per altre informazioni su questi parametri, vedere la documentazione della distribuzione.

    Esempio (Ubuntu):

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

    Parametri di avvio di Linux

    Oltre ai parametri precedenti, il parametro del kernel "bootdegraded=true" può consentire all'avvio del sistema anche se il RAID viene percepito come danneggiato o danneggiato, ad esempio se un'unità dati viene rimossa inavvertitamente dalla macchina virtuale. Per impostazione predefinita, questo potrebbe comportare anche un sistema non avviabile.

    Per informazioni su come modificare correttamente i parametri del kernel, vedere la documentazione della distribuzione. Ad esempio, in molte distribuzioni (CentOS, Oracle Linux, SLES 11) questi parametri possono essere aggiunti manualmente al file "/boot/grub/menu.lst". In Ubuntu questo parametro può essere aggiunto alla GRUB_CMDLINE_LINUX_DEFAULT variabile in "/etc/default/grub".

Supporto TRIM/UNMAP

Alcuni kernel di Linux supportano operazioni TRIM/UNMAP allo scopo di rimuovere i blocchi inutilizzati sul disco. Queste operazioni sono particolarmente utili nell'archiviazione standard per informare Azure che le pagine eliminate non sono più valide e possono essere rimosse. L'eliminazione delle pagine può ridurre i costi se si creano file di grandi dimensioni e quindi li si elimina.

Annotazioni

RAID potrebbe non eseguire comandi di eliminazione se la dimensione del blocco per la matrice è impostata su meno del valore predefinito (512 KB). Ciò è dovuto al fatto che anche la granularità di unmap dell'host è di 512 KB. Se le dimensioni del blocco della matrice sono state modificate tramite il parametro di --chunk= mdadm, le richieste TRIM/unmap potrebbero essere ignorate dal kernel.

Esistono due modi per abilitare la funzione TRIM in una VM Linux. Come di consueto, consultare la propria distribuzione per ottenere l'approccio consigliato.

  • Usare l'opzione di montaggio discard in /etc/fstab, ad esempio:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • In alcuni casi l'opzione discard può avere implicazioni sulle prestazioni. In alternativa, è possibile eseguire il comando fstrim manualmente dalla riga di comando oppure aggiungerlo a crontab per eseguirlo a intervalli regolari:

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL/CentOS

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