09 - November - 2012

RIPRISTINARE RAID 1 SU DEBIAN SQUEEZE CON LVM

Il Raid è un sistema per garantire uno o entrambi dei seguenti vantaggi:

 

  • Ridondanza dei dischi rigidi, ovvero protezione contro eventuali perdite di dati e/o interruzione di servizio causati a guasti di uno o più dischi rigidi
  • Aggregazione dello spazio in partizioni più grandi e aumento della banda disponibile, ovvero della velocità di lettura/scrittura dei dati su dischi rigidi.

 

Esistono varie modalità di Raid, quello di cui ci occuperemo in questa guida è il RAID1.

RAID1:

Garantisce ridondanza poiché il sistema continuerà a funzionare fintanto che almeno uno dei 2 dischi è attivo; può garantire un minimo di miglioramento per quanto riguarda la lettura dei dati, ma implica una minima riduzione della velocità in scrittura rispetto al disco singolo. Richiede un minimo di 2 dischi. Viene anche detto mirroring perchè i dati vengono replicati suentrambi i dischi specularmente.

 

Creare RAID software dopo l’installazione (mdadm)

 

Il servizio che si occupa di gestire il raid software su linux si chiama mdadm, per installarlo basta digitare da terminale:

 

  • root@nightwolf:/home/seawolf# apt-get install mdadm


Con il comando fdisk -l vediamo la lista completa dei device installati sul nostro pc:

 

Disk /dev/sdc: 250.1 GB, 250059350016 bytes

255 heads, 63 sectors/track, 30401 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x04b3d6d6

Device Boot Start End Blocks Id System

/dev/sdc1 1 30401 244196001 8e Linux LVM

Disk /dev/sdd: 250.1 GB, 250059350016 bytes

255 heads, 63 sectors/track, 30401 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x99d673a0

 Device Boot Start End Blocks Id System

/dev/sdd1 1 30401 244196001 8e Linux LVM

 

Nel mio caso ho scelto i dischi da 250Gb identificati dai device /dev/sdc e /dev/sdd

 

N.B.

Avendo installato il sistema operativo con i volumi logici (LVM), anche i dischi su cui verrà creato il raid dovranno avere come partizionamento LVM.

  • root@nightwolf:/home/seawolf# mdadm –create –verbose /dev/md0 – -level=1 – - raid-devices=2 /dev/sdc1 /dev/sdd1

Per verificare che il volume sia corretto digitare:

 


Dovrebbe comparire qualcosa di simile a:

 

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid1 sdc1[0] sdd1[1]

244194841 blocks super 1.2 [2/2] [UU]

 

A questo punto il volume raid può esser formattato con il filesystem che si desidera; ad esempio per creare un file system xfs è necessario digitare:

 

  • mkfs.xfs /dev/md0

 

 

 

Rendere permanenti i volumi RAID

 

Il file di configurazione per i volumi raid si trova in /etc/mdadm ed è denominato mdadm.conf

nel quale verrà poi memorizzata la struttura del raid.

Da terminale digitiamo:

  • root@nightwolf:/home/seawolf# mdadm –detail –scan >> /etc/mdadm/mdadm.conf

 

Per poter utilizzare il raid e memorizzarci i dati dentro, è necessario montarlo come una normale partizione, per esempio nel mio caso ho creato una directory denominata barracuda dentro /media con il comando mkdir.

 

 

Creare i volumi LVM sopra il RAID

 

Dopo aver creato il raid, occorre creare i volumi con LVM affinchè sia tutto funzionante.

In una normale installazione di linux senza volumi basta aggiungere la riga dentro /etc/fstab con il punto di mount della directory creata e il filesystem con cui si è formattato il raid. Con LVM occorre invece creare i volumi (vedremo come farlo in questi successivi step):

 

Creazione del Physical Volume:

 

 

Dove md0 è il nostro volume raid

 

Con il comando pvscan, possiamo controllare i volumi di LVM sulla nostra linux box, l’output dovrebbe esser simile a questo:

 

  • root@nightwolf:/home/seawolf# pvscan

PV /dev/sdb1 VG WD lvm2 [465,76 GiB / 0 free]

PV /dev/sda5 VG nightwolf lvm2 [465,52 GiB / 0 free]

PV /dev/md0 VG Seagate lvm2 [232,88 GiB / 0 free]

Total: 3 [1,14 TiB] / in use: 3 [1,14 TiB] / in no VG: 0 [0 ]

Con il comando pvdisplay, possiamo controllare il Physical Volume. L’output dovrebbe esser simile a:

 

— Physical volume —

PV Name /dev/sdc1

VG Name Seagate

PV Size 232,88 GiB / not usable 673,00 KiB

Allocatable yes (but full)

PE Size 4,00 MiB

Total PE 59618

Free PE 0

Allocated PE 59618

PV UUID 9hB2x1-FLCe-BYFV-OaOf-5EPn-8iQF-riagup

— Physical volume —

PV Name /dev/sdd1

VG Name Seagate

PV Size 232,88 GiB / not usable 673,00 KiB

Allocatable yes (but full)

PE Size 4,00 MiB

Total PE 59618

Free PE 0

Allocated PE 59618

PV UUID XQKMLl-VqTG-kYUp-RAdn-cgLZ-pqfY-NCj6qG

 

Creazione del Volume Group:

  • root@nightwolf:/home/seawolf# vgcreate Seagate /dev/md0

 

Dove Seagate è il nome che ho dato al volume /dev/md0

 

Con il comando vgdisplay, possiamo vedere i Volume Group creati sul nostro sistema. L’output dovrebbe esser simile a questo:

 

— Volume group —

VG Name Seagate

System ID

Format lvm2

Metadata Areas 2

Metadata Sequence No 2

VG Access read/write

VG Status resizable

MAX LV 0

Cur LV 1

Open LV 1

Max PV 0

Cur PV 2

Act PV 2

VG Size 465,77 GiB

PE Size 4,00 MiB

Total PE 119236

Alloc PE / Size 119236 / 465,77 GiB

Free PE / Size 0 / 0

VG UUID PHebaQ-sP0L-CI43-hleh-KZXq-fOds-bfdn9d

Infine creiamo il Logical Volume:

  • root@nightwolf:/home/seawolf# lvcreate -l 100%FREE –name Barracuda Seagate

 

In alternativa, se si dovesse ricevere il messaggio :Insufficient Free Extents for a Logical Volume”, indicare il numero di extents liberi nella creazione del logical Volume.

Nel mio caso, gli extents liberi erano 59617

 

  • root@nightwolf:/home/seawolf# lvcreate -l 59617 –name Barracuda Seagate

 

Dove Barracuda è il nome del Logical Volume appea creato, mentre Seagate è il nome del Volume Group.

 

Con il comando lvdisplay, possiamo vedere i Volume Group creati sul nostro sistema. L’output dovrebbe esser simile a questo:

 

— Logical volume —

LV Name /dev/Seagate/Barracuda

VG Name Seagate

LV UUID gBUX2t-uu7k-kivV-MiRL-TO5C-mahp-2lWwP2

LV Write Access read/write

LV Status available

# open 1

LV Size 465,77 GiB

Current LE 119236

Segments 2

Allocation inherit

Read ahead sectors auto

- currently set to 256

Block device 254:2

Ora formattiamo il volume LVM completo con il file system desiderato, nel mio caso ho partizionato i dischi con XFS, da terminale digitiamo quindi:

  • root@nightwolf:/home/seawolf# mkfs.xfs /dev/mapper/Seagate-Barracuda

 

Su Debian, i volumi vengono creati dentro la directory /dev/mapper.

 

A questo punto inseriamo la riga del nostro volume dentro /etc/fstab e l’operazione è conclusa.

 

  • root@nightwolf:/home/seawolf# pico /etc/fstab 

# /etc/fstab: static file system information.

# <file system> <mount point> <type> <options> <dump> <pass>

 /dev/mapper/Seagate-Barracuda /media/barracuda xfs defaults,noatime,nodiratime,logbufs=8 0 2

 

 

Principali comandi per il RAID

 

Avviare un Array:

# mdadm -As /dev/md0

 

Stoppare un Array

# mdadm -S /dev/md0

 
Aggiungere un disco all’array md0:

# mdadm /dev/md0 –add /dev/sde1

 
Rimuovere un disco dall’array md0:

# mdadm /dev/md0 –fail /dev/sdc1 –remove /dev/sdc1

 
Esaminare un array:

# mdadm -E /dev/md0

 

Monitorare un array:

# mdadm – -monitor – -delay=60 /dev/md0

 

Ottenere informazioni sugli array in esecuzione

#cat /proc/mdstat

 

Si dovrebbe ottenere un output simile a questo:

 

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active raid1 sdc1[0] sdd1[1]

244194841 blocks super 1.2 [2/2] [UU]

 

 

Se invece per un qualche motivo il raid dovesse impostarsi in modalità read-only:

 

md0 : active (auto-read-only) raid1 sdc1[0] sdd1[1]

244194841 blocks [2/2] [UU] resync=PENDING

 

Occorre dare il comando (da root):

  • root@nightwolf:/home/seawolf# mdadm –readwrite /dev/md0

 

E la sincronizzazione ripartirà.

 

Grazie per la lettura

 

Stay Tuned

Andrea

 

Licenza Creative Commons
RIPRISTINARE RAID 1 SU DEBIAN SQUEEZE CON LVM by Andrea Finessi is licensed under a Creative Commons Attribuzione – Non commerciale – Condividi allo stesso modo 2.5 Italia License.

Leave a Reply