Configurazione RAID1 in Linux CentOS 7

La tecnica RAID (Redundant Array of Inexpensive/Independent Disks) permette di raggruppare tra loro i dischi installati in un computer e di visualizzarli e utilizzarli come un unico volume.
Vi sono diverse tipologie di RAID (vedere qui le caretteristiche), e nel presente articolo verranno illustrati i passi per la creazione di RAID1, che permette di configurare i dischi in modo che uno sia la copia speculare dell’altro.
In questo modo avremo il vantaggio di non perdere i dati nel caso uno dei dischi dovesse guastarsi. Anche la tolleranza ai guasti è alta, infatti il numero massimo di dischi difettosi consentiti è n – 1 (dove n è il numero di dischi che compongono il RAID1).
I dischi dovranno essere della stessa dimensione, pena il ridimensionamento al disco più piccolo degli altri dischi appartenenti al RAID.
La scelta di altri tipi di RAID cambia di poco le seguenti istruzioni, ma occorre tenere presente che in funzione del livello RAID da configurare occorre avere a disposizione il corretto numero di dischi.

Preparazione

Per questo esempio verranno utilizzati due dischi da 1 TB ciascuno.

Cominciamo con l’elencare i dischi da utilizzare per la configurazione del RAID1:

[root@localhost ~]# lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sda               8:0    0   20G  0 disk
 ├─sda1            8:1    0    1G  0 part /boot
 └─sda2            8:2    0   19G  0 part
   ├─centos-root 253:0    0   17G  0 lvm  /
   └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
 sdb               8:16   0    1G  0 disk
 sdc               8:32   0    1G  0 disk
 sr0              11:0    1  4.3G  0 rom

I dischi che possiamo utilizzare sono sdb e sdc.

Ora utilizziamo il comando parted per creare una nuova tabella delle partizioni MBR su ciascuno dei due dischi. Ciò comporterà la cancellazione totale dei dischi:

[root@localhost ~]# parted /dev/sdb mklabel msdos
 Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will   be lost. Do you want to continue?
 Yes/No? Yes
 Information: You may need to update /etc/fstab.

[root@localhost ~]# parted /dev/sdc mklabel msdos
 Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
 Yes/No? Yes
 Information: You may need to update /etc/fstab.

Partizionamento

Ora utilizziamo fdisk per creare una partizione in ciascuno dei dischi presenti, tranne che in /dev/sda che contiene la partizione di boot e i file di sistema.
La procedura di seguito descritta fa riferimento a /dev/sdb, e occorre replicarla anche per il disco /dev/sdc.

[root@localhost ~]# fdisk /dev/sdb
 Welcome to fdisk (util-linux 2.23.2).

 Changes will remain in memory only, until you decide to write them.
 Be careful before using the write command.

 Command (m for help): n
 Partition type:
    p   primary (0 primary, 0 extended, 4 free)
    e   extended
 Select (default p): p
 Partition number (1-4, default 1): 1
 First sector (2048-2097151, default 2048): 2048
 Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151): 2097151
 Partition 1 of type Linux and of size 1023 MiB is set

 Command (m for help): t
 Selected partition 1
 Hex code (type L to list all codes): fd
 Changed type of partition 'Linux' to 'Linux raid autodetect'

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

 Calling ioctl() to re-read partition table.
 Syncing disks.

In grassetto sono riportate le opzioni selezionate. In alcuni casi è sufficiente accettare il valore di default riportato premendo invio, ma ho voluto comunque riportare i valori da inserire per completezza.

Abbiamo quindi creato una nuova partizione /dev/sdb1 su disco /dev/sdb, e l’abbiamo impostata come Linux raid autodetect selezionando l’opzione fd.

Applicando la procedura a tutti e due i dischi, avremo per ciascuno di esso una nuova partizione da utilizzare per il nostro RAID1.

Creazione RAID1

Creiamo ora la configurazione RAID1 con mdadm. Se non presente sul sistema occorre installarlo con yum:

[root@localhost ~]# yum install -y mdadm 

Verifichiamo i dischi per essere sicuri che sia tutto pronto per la configurazione:

[root@localhost ~]# mdadm --examine /dev/sd[bc]
 /dev/sdb:
    MBR Magic : aa55
 Partition[0] :      2095104 sectors at         2048 (type fd)
 /dev/sdc:
    MBR Magic : aa55
 Partition[0] :      2097089 sectors at           63 (type fd)

Possiamo vedere che le nuove partizioni creati sono di tipo fd, e cioè Linux raid auto.

Digitiamo il seguente comando per creare una nuova configurazione RAID1 con le due partizioni create precedentemente:

[root@localhost ~]# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
 mdadm: Note: this array has metadata at the start and
     may not be suitable as a boot device.  If you plan to
     store '/boot' on this device please ensure that
     your boot-loader understands md/v1.x metadata, or use
     --metadata=0.90
 Continue creating array? y
 mdadm: Defaulting to version 1.2 metadata
 mdadm: array /dev/md0 started.

L’opzione –create specifica di creare una nuova configurazione RAID su /dev/md0.
L’opzione –level=1 indica il livello di RAID da applicare, mentre –raid-devices=2 indica quanti dispositivi assegnare alla configurazione RAID che si sta creando.

Verifichiamo che il RAID sia stato configurato correttamente su /dev/md0 :

[root@localhost ~]# cat /proc/mdstat
 Personalities : [raid1]
 md0 : active raid1 sdc1[1] sdb1[0]
       1046528 blocks super 1.2 [2/2] [UU]
 unused devices: 

Possiamo vedere che 2 dischi su 2 [UU] sono in uso per il RAID1 appena creato.

Ora dobbiamo creare il filesystem su /dev/md0. Scegliamo il filesystem ext4:

[root@localhost ~]# mkfs.ext4 /dev/md0
 mke2fs 1.42.9 (28-Dec-2013)
 Filesystem label=
 OS type: Linux
 Block size=4096 (log=2)
 Fragment size=4096 (log=2)
 Stride=0 blocks, Stripe width=0 blocks
 65408 inodes, 261632 blocks
 13081 blocks (5.00%) reserved for the super user
 First data block=0
 Maximum filesystem blocks=268435456
 8 block groups
 32768 blocks per group, 32768 fragments per group
 8176 inodes per group
 Superblock backups stored on blocks:
         32768, 98304, 163840, 229376
 Allocating group tables: done
 Writing inode tables: done
 Creating journal (4096 blocks): done
 Writing superblocks and filesystem accounting information: done

Creiamo il folder dove montare /dev/md0, ad esempio /data:

[root@localhost ~]# mkdir /data

E montiamo il disco RAID:

[root@localhost ~]# mount /dev/md0 /data

Inseriamo le informazioni di mount anche nel file /etc/fstab in modo da permettere il mounting in automatico all’avvio del sistema:

/dev/md0        /data   ext4    defaults        0       0

Prima di effettuare il riavvio verifichiamo che venga montato correttamente. Smontiamo quindi il disco e rimontiamolo tramite file /etc/fstab:

[root@localhost ~]# umount /data
[root@localhost ~]# mount -av
 /                        : ignored
 /boot                    : already mounted
 swap                     : ignored
 /data                    : successfully mounted

Salvataggio

L’ultimo passo consiste nello salvare la configurazione RAID appena creata aggiungendola al file /etc/mdadm.conf:

[root@localhost ~]# mdadm --detail --scan --verbose >> /etc/mdadm.conf

Conclusione

Se abbiamo a disposizione più dischi nel nostro sistema e vogliamo avere un sistema ridondato ove salvare dati importanti, RAID è la scelta giusta. Con un minimo esborso e qualche minuto di lavoro, avremo creato quanto basta per mettere al sicuro il nostro sistema.

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *