Configurare RAID software in 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. In genere questa configurazione consente di migliorare le prestazioni e la velocità effettiva rispetto all'utilizzo di un unico disco.
Collegamento di dischi dati
Per configurare un dispositivo RAID sono necessari due o più dischi dati vuoti. Il dispositivo RAID viene creato principalmente per migliorare le prestazioni dell'I/O su disco. 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. In questo articolo non verrà illustrato in dettaglio come eseguire il provisioning e collegare dischi dati a una macchina virtuale Linux. 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.
Importante
Non combinare dischi di dimensioni diverse, in questo modo le prestazioni del raidset potrebbero essere limitate a quella del disco più lento.
Installazione dell'utility mdadm
Ubuntu
sudo apt-get update sudo apt-get install mdadm
CentOS e Oracle Linux
sudo yum install mdadm
SLES e openSUSE
zypper install mdadm
Creazione delle partizioni del disco
In questo esempio verrà creata una singola partizione del disco in /dev/sdc. La nuova partizione del disco verrà denominata /dev/sdc1.
Avviare
fdisk
per iniziare la creazione delle partizionisudo 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').
Premere 'n' al prompt per creare una nuova partizione:
Command (m for help): n
Successivamente, premere 'p' per creare una partizione primaria:
Command action e extended p primary partition (1-4)
Premere '1' per selezionare la partizione numero 1:
Partition number (1-4): 1
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à:First cylinder (1-1305, default 1): Using default value 1
Selezionare le dimensioni della partizione, ad esempio digitare '+10G' per creare una partizione da 10 gigabyte. In alternativa, premere
<enter>
per creare un'unica partizione che occupa l'intera unità:Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): Using default value 1305
Successivamente, modificare l'ID e il tipo della partizione dal valore predefinito '83' (Linux) a 'fd' (rilevamento automatico RAID Linux):
Command (m for help): t Selected partition 1 Hex code (type L to list codes): fd
Infine, scrivere la tabella delle partizioni sull'unità e chiudere fdisk:
Command (m for help): w The partition table has been altered!
Creazione dell'array RAID
Nell'esempio seguente verrà eseguito lo striping (livello RAID 0) di tre partizioni situate in tre dischi dati separati (sdc1, sdd1, sde1). Dopo l'esecuzione del comando verrà creato un nuovo dispositivo RAID denominato /dev/md127 . Si noti anche che se i dischi dati facevano precedentemente parte di una matrice RAID inattiva, può essere necessario aggiungere il parametro
--force
al comandomdadm
:sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \ /dev/sdc1 /dev/sdd1 /dev/sde1
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
Nota
Dopo aver apportato queste modifiche nei sistemi SUSE può essere necessario il riavvio. Questo passaggio non è obbligatorio su SLES 12.
Aggiungere il nuovo file a /etc/fstab
Importante
Se il file /etc/fstab non viene modificato in modo corretto, il sistema potrebbe diventare instabile. 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.
Creare il punto di montaggio desiderato per il nuovo file system, ad esempio:
sudo mkdir /data
Quando si modifica /etc/fstab è consigliabile utilizzare l' UUID anziché il nome del dispositivo per fare riferimento al file system. 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"
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
In alternativa, in SLES 11:
/dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee /data ext3 defaults 0 2
Salvare e chiudere /etc/fstab.
Verificare che la voce /etc/fstab sia corretta:
sudo mount -a
Se questo comando genera un messaggio di errore, verificare la sintassi nel file /etc/fstab file.
Eseguire quindi il comando
mount
per assicurarsi che il file system venga montato:mount ................. /dev/md127 on /data type ext4 (rw)
(Facoltativo) Parametri di avvio alternativo
Configurazione di fstab
Molte distribuzioni includono i parametri di montaggio
nobootwait
onofail
, che è possibile aggiungere al file /etc/fstab. 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. Per altre informazioni su questi parametri, fare riferimento alla 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
" 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. Per impostazione predefinita, questa situazione può rendere impossibile l'avvio del sistema.Per informazioni sulla corretta modifica dei parametri del kernel, fare riferimento alla documentazione della distribuzione. Ad esempio, in molte distribuzioni (CentOS, Oracle Linux, SLES 11) è possibile aggiungere manualmente tali parametri al file "
/boot/grub/menu.lst
". In Ubuntu è possibile aggiungere il parametroGRUB_CMDLINE_LINUX_DEFAULT
alla variabile in "/etc/default/grub".
Supporto per TRIM/UNMAP
Alcuni kernel di Linux supportano operazioni TRIM/UNMAP allo scopo di rimuovere i blocchi inutilizzati sul disco. 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. L'eliminazione delle pagine consente di risparmiare sui costi quando si creano file di grandi dimensioni per poi eliminarli.
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. Questo perché anche la granularità di annullamento del mapping nell'host è di 512 KB. Se le dimensioni del blocco della matrice sono state modificate tramite il parametro --chunk=
di mdadm, il kernel può ignorare le richieste TRIM/UNMAP.
Esistono due modi per abilitare la funzione TRIM in una VM Linux. Come di consueto, consultare la documentazione della distribuzione per stabilire 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 comandofstrim
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