[HOWTO] Un hard-disk mostruoso: il raid

Forum dedicato agli studenti del corso linux e a tutti gli amanti del pinguino!

Moderatore: matteo

[HOWTO] Un hard-disk mostruoso: il raid

Messaggioda matteo » dom dic 17, 2006 3:48 am

A proposito di fault-tolerance, abbiamo parlato del raid dischi.

Mi sembra giusto che vi dica qualcosa di più, dal momento che è una cosa che si può testare anche in casa, cosa che mi è servita, per necessità, proprio oggi (ma guarda un po' i casi della vita :-).
Parlando di raid abbiamo accennato al mirror, dicendo semplicemente che i dati vengono scritti in contemporanea su entrambi i dischi, ed abbiamo detto che esiste hardware o software, ma non siamo entrati nel dettaglio dicendo come funziona e che ne esistono diversi tipi.

Come concetto generale, possiamo considerare un raid come un modo per gestire un insieme di dischi, e ci sono diversi modelli di gestione, da usare a seconda delle esigenze.
I principali sono linear, raid 0, raid 1, raid 5; gli altri sono pressochè sconosciuti, e comunque non li ho visti mai implementati. In più ci sono le combinazioni di alcuni di questi, quindi il raid 0+1 o il raid 1+0.
Quando si parla di raid, la prima cosa che viene in mente è il raid 1, che sarebbe il mirror. Vediamoli tutti.

linear: è il sistema che consente di concatenare più di un disco di dimensioni anche differenti tra di loro, per formare quella che si chiama unità logica o volume o metadevice (/dev/mdX), singola, con dimensione la somma dei due dischi. Il sistema scriverà sul disco come se fosse tutto uno, quindi riempito il disco continua a scrivere nell'altro. E' il tipo più semplice (ed intuitivo) di raid. E' chiaro che essendo legati, se si rompe un disco si è perso tutto il volume, tuttavia se si è rotto il secondo disco si può sperare di recuperare buona parte dei dati che si trovano sul primo; li si copieranno su una partizione di appoggio, si sostituisce il disco rotto, si ricrea il volume e si rimettono dentro i dati.

raid 0: anche chianato stripe, come nel linear verrà creata una unità logica pari alla somma delle dimensioni, però punta alle performance. Innanzitutto è necessario che i dischi siano esattamente della stessa dimensione. Quando il sistema scrive, mette un po' su un disco e un po' su un'altro, tipo i primi 128K (questo valore si chiama chunk) sul 1°disco, da 128 a 256 sul secondo, da 256 a 384 sul primo, da 384 a 512 sul secondo e così via, con il vantaggio di sfruttare al massimo i dischi, visto che scriveranno e leggeranno in contemporanea. Lo svantaggio di questo sistema è che se si rompe un disco è persa l'intero volume.

raid 1: anche chiamato mirror, è il sistema che gestisce il fault-tolerance. Di due dischi identici, viene creata una singola unità logica della dimensione di un solo disco. Quando andrò a scrivere, i miei dati verranno inviati in contemporanea su entrambi i dischi, in modo che siano sempre sicronizzati, così se si rompe un disco il secondo continua tranquillamente a funzionare senza perdita di dati. Ovviamente questo comporta un rallentamento in scrittura, ma questo viene ricompensato da una velocità di lettura raddoppiata perchè, essendo i dati su entrambi i dischi, posso permettermi di leggere un pezzo di file da un disco e un pezzo dall'altro.

raid 0+1: il raid 1 porta lo svantaggio di avere la dimensione del volume grande quanto i dischi, ma se noi necessitiamo di volumi più grandi, grandi magari il doppio di un disco, possiamo prendere due dischi e formare un nuovo volume in 'stripe', quindi prendere altri due dischi e mirrorare quel volume, ottenendo quindi uno 0+1, cioè il mirror di uno stripe. Le performance sono quelle sommate dei due raid. Lo svantaggio è che se si rompe un disco, quando si mette quello nuovo va effettuato il resync di TUTTO il volume, anche quello dei dischi buoni.

raid 1+0: uguale allo 0+1 con la differenza che prima vengono presi i vari i dischi in coppia e messi in mirror, e poi, considerando ormai ognuno di questi come disco singolo indipendente, vengono messi in stripe. Questo è il massimo delle performance, che sono le stesse dello 0+1, con l'aggiunta che se si rompe un disco questo viene sostituito e il resync avviene del singolo disco, visto che le coppie sono indipendenti tra di loro.

raid 5: i raid 1, 0+1, 1+0, hanno il difetto di un alto consumo di dischi; pensate di fare un volume di 400Gb con dischi da 100Gb; ho bisogno di 8 dischi, con uno spreco quindi di ben 4 dischi. Il 'raid 5' sfrutta un sistema di parità che consente di ridondare tutti i dischi su un ulteriore disco, ottenendo uno spreco minimo, 1 disco, e mantenendo l'alta affidabilità. Se io ho 5 dischi da 100Gb, il raid 5 riesce a fare un volume di 400Gb e, con opportuni calcoli, riesce a mettere informazioni sul quinto disco in modo tale che se uno di questi si rompe, tutto il volume può essere recuperato. E' importante affrettarsi e cambiare subito il disco rotto, perchè una ulteriore rottura comporta la distruzione dell'intero volume. Le performance di un raid 5 sono buone il lettura, visto che legge in contemporanea su più dischi, ma pessime in scrittura, visto che deve continuamente ricalcolare la parità e scriverla su tutti i dischi; oltre alla lentezza dovutà alla scrittura, si può notare anche un aumento del consumo della cpu, quindi sarebbe da evitare se non si possiede un controller raid hardware. Non è necessario che i dischi siano 5, possono essere da 3 in su, ma conviene non portarlo a valori troppo alti (8 dischi o più) per evitare ulteriori cali di performance e aumento della probabilità di perdita dei dati.

raid 5+1 o 1+5: a voi intuire che cos'è!!! Io lo considero un orrore, ma l'ho visto implementato sul campo del lavoro.

Tutto quello che ho detto riguardo ai dischi, vale anche per singole partizioni. Possiamo mirrorare una partizione del primo disco con una del secondo disco, purchè le partizioni siano identiche. Posso anche mirrorare due partizioni dello stesso disco, ma è chiaro che sia contro-producente, in quanto non avrei il fault-tolerance ed avrei un calo di performance. Idem per lo stripe.


Ma veniamo alla pratica.
Dal lungo storico di vita del mio harddisk, si sono accavallati numerosi ripartizionamenti e ridimensionamenti senza mai un azzeramento totale della tabella delle partizioni, e nel susseguirsi delle numerose installazioni di varii windows e vari linux, il mio disco è divenuto un colabrodo. Per capirci:

Codice: Seleziona tutto
   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        9819    78871086    7  HPFS/NTFS
/dev/hda2            9820       10584     6144862+  83  Linux
/dev/hda3           10585       14946    35037765    f  W95 Ext'd (LBA)
/dev/hda5           10585       12999    19398456    b  W95 FAT32
/dev/hda6           13000       13729     5863693+  83  Linux
/dev/hda7           13730       13852      987966   82  Linux swap
/dev/hda8           13853       14946     8787523+  83  Linux


Io ora ho installato la mia slamd64 (slackware a 64bit) su /dev/hda8 che è la più grande Linux.
Mi sono ritrovato, a posteriori, di necessitare di una partizione con circa 7Gb di spazio libero... cosa fare?
Ho pensato di mettere la /dev/hda2 e la /dev/hda6 in linear, e ci ho messo sopra la /home.

Ecco i passi.
Per prima cosa tocca dire al kernel che quelle partizioni andranno in raid.
Codice: Seleziona tutto
# fdisk /dev/hda
Command (m for help): t
Partition number (1-8): 6
Hex code (type L to list codes): L
[...]
17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto
[...]
Hex code (type L to list codes): fd

Command (m for help): p
   Device Boot      Start         End      Blocks   Id  System
/dev/hda6           13000       13729     5863693+  fd  Linux raid autodetect

Command (m for help): t
Partition number (1-8): 2
Hex code (type L to list codes): fd

Command (m for help): p
   Device Boot      Start         End      Blocks   Id  System
/dev/hda2            9820       10584     6144862+  fd  Linux raid autodetect

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


La tabella delle partizioni è pronta. Molto probabilmente vi dirà che è 'busy' e che vuole il reboot. Ignorate l'errore ed andate avanti.

Avendo settato "Linux raid autodetect", il kernel cercherà, ad ogni reboot, se per quella partizione è stato fatto un raid, ed eventualmente, lo starterà (ovvero crea in /dev/ il metadevice, che prende nome /dev/md0 o /dev/md/0).
Andiamo ora ad inizializzare il metadevice.

Dobbiamo creare un file /etc/raidtab
Codice: Seleziona tutto
raiddev /dev/md0
       raid-level              linear
       nr-raid-disks           2
       persistent-superblock   1
       device                  /dev/hda2
       raid-disk               0
       device                  /dev/hda6
       raid-disk               1

credo che i valori siano abbastanza intuitivi, ad eccezione "persistent-superblock". Io avevo fatto l'errore di metterlo a 0, il che mi ha comportato il dover ridistruggere il raid e ricrearlo (in teoria potevo lasciarlo a zero, ma è meglio di no). Spiego:
Nelle vecchie versioni, "Linux raid autodetect" non c'era, e ad ogni boot il kernel non lo riconosceva automaticamente, finchè non veniva digitato il comando 'raid0run /dev/md0' o 'raidstart /dev/md0' che creava il metadevice a partire dal file di configurazione. Questo perchè la configurazione del raid era scritta solamente in quel file. Io dovevo montare md0 su /home, cosa che avviene in /etc/rc.d/rc.S che quindi ho dovuto modificare mettendoci il raidstart prima del comando mount.
Nelle nuove versioni la configurazione viene scritta anche sul superblock delle partizioni che faranno il metadevice, così il kernel le legge automaticamente.

Dopo la creazione di questo file di configurazione è necessario inizializzare il metadevice:
Codice: Seleziona tutto
# mkraid /dev/md0
handling MD device /dev/md0
analyzing super-block
disk 0: /dev/hda2, 6144862kB, raid superblock at 6144768kB
disk 1: /dev/hda6, 5863693kB, raid superblock at 5863616kB


vediamo cosa è venuto fuori:
Codice: Seleziona tutto
# cat /proc/mdstat
md0 : active linear hda6[1] hda2[0]
      12008384 blocks 0k rounding

# cat /proc/partitions
major minor  #blocks  name
   3     2    6144862 hda2
   3     6    5863693 hda6
   9     0   12008384 md0

# expr 6144862 + 5863693
12008555

md0 è la somma di hda2 e hda6 (meno qualche byte)

Codice: Seleziona tutto
# mke2fs -j /dev/md0
# mount /dev/md0 /mnt/hd

# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda8              8649544   7068660   1141508  87% /
/dev/md/0             11819888    131228  11088244   2% /mnt/hd

# ls /mnt/hd
lost+found/

ed ora migriamoci la /home
Codice: Seleziona tutto
# cd /home
# ls
ftp/  matteo/
# mv * /mnt/hd

rimontiamo il raid su /home
Codice: Seleziona tutto
# umount /mnt/hd
aggiungere a /etc/fstab
/dev/md0        /home                ext3        defaults         0   0
# cd /
# mount /home
# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hda8              8649544   4102388   4107780  50% /
/dev/md/0             11819888   3097512   8121960  28% /home

ed ecco quà che sono riuscito a sfruttare i 'buchi' del mio hard-disk.
Nonostate il raid sia sullo stesso disco, non avrò alcun calo (né aumento) di performance. In pratica, con il 'linear', è come se avessi ripartizionato ed ottenuto una partizione contigua.

Il giochetto è stato abbastanza semplice. Lo è un po' meno se si tratta di fare un raid con il disco di root, in quanto si tratta di andare a giocare con gli initrd. Inoltre il solo raid supportato lì è il raid 1; gli altri sono possibili utilizzando qualche trucchetto non supportato e non documentato.

Non posso fare ora esempi di altri raid perchè non ho l'hardware necessario, ma vi rimando agli HOWTO un po' più ufficiali di questo.
http://www.pluto.it/files/ildp/HOWTO/Software-RAID-HOWTO/Software-RAID-HOWTO.html
http://www.pluto.it/files/ildp/HOWTO/Software-RAID-0.4x-HOWTO/Software-RAID-0.4x-HOWTO.html
http://www.pluto.it/files/ildp/HOWTO/Root-RAID-HOWTO/Root-RAID-HOWTO.html

Matteo
matteo
 
Messaggi: 327
Iscritto il: ven mar 17, 2006 10:22 am

Messaggioda apotenziani » gio feb 15, 2007 4:39 pm

ciao,


vorrei apportare il mio piccolo contributo che spero sia di utilità...
Da qualche tempo le soluzioni Enterprise hanno cercato con le aziende produttrici di storage di ovviare alle problematiche elencate sopra circa i vari tipi di RAID. I sottosistemi di storage più o meno costosi e scalabili implementano normalmente RAID 5 (abbstanza performanti grazie all'utilizzo di chaching e storage processors ridondati) "spalmati" su più dischi. Ovviamente i set di dischi (anche detti bay) sono diversi e dispongono di "spare disks" cioè dischi dormienti pronti nel caso un disco componente il RAID si danneggi.
Tali set di dischi indentificano uno o più "RAID groups" all'interno dei quali è possibile tagliare LUN (logical unit number o dischi...) indifferentemente con diverse tipologie di RAID che convivono insieme.
Per quella che è la mia esperienza a parte l'utilizzo dei RAW devices tutte le applicazioni dell'azienda su piattaforma UX lavorano in VxFS (l'evoluzione del veritas presente anche in Linux che sicuramente conoscerete) con doppio livello di ridondanza:

**CASO1**
per il sistema operativo (montato su dischi locali) abbiamo il mirroring SW:

es:

root@SERVER:/>bdf | grep vg00
/dev/vg00/lvol3 409600 266848 141664 65% /
/dev/vg00/lvol1 298928 151928 117104 56% /stand
/dev/vg00/lvol8 8912896 896736 7954256 10% /var
/dev/vg00/lvol7 3260416 1600824 1646696 49% /usr
/dev/vg00/lvol4 2048000 280880 1753704 14% /tmp
/dev/vg00/lvol6 2277376 1984432 290664 87% /opt
/dev/vg00/lvol5 32768 8920 23848 27% /home

ora per velocità mostrerò solo il LV della /stand (che contiene il kernel):

root@RMDOCCO2:/>lvdisplay -v /dev/vg00/lvol1|more
--- Logical volumes ---
LV Name /dev/vg00/lvol1
VG Name /dev/vg00
LV Permission read/write
LV Status available/syncd
Mirror copies 1
Consistency Recovery MWC
Schedule parallel
LV Size (Mbytes) 304
Current LE 19
Allocated PE 38
Stripes 0
Stripe Size (Kbytes) 0
Bad block off
Allocation strict/contiguous
IO Timeout (Seconds) default

--- Distribution of logical volume ---
PV Name LE on PV PE on PV
/dev/dsk/c0t6d0 19 19
/dev/dsk/c3t6d0 19 19


notiamo che il LV :/dev/vg00/lvol1 ha i sui LE bei due volumi (PV) 19 per ognuno. Successivamente:
--- Logical extents ---
LE PV1 PE1 Status 1 PV2 PE2 Status 2
00000 /dev/dsk/c0t6d0 00000 current /dev/dsk/c3t6d0 00000 current
00001 /dev/dsk/c0t6d0 00001 current /dev/dsk/c3t6d0 00001 current
00002 /dev/dsk/c0t6d0 00002 current /dev/dsk/c3t6d0 00002 current
00003 /dev/dsk/c0t6d0 00003 current /dev/dsk/c3t6d0 00003 current
...tagliato...

vediamo che i LE sono allocati "uno-ad-uno" sui due volumi realizzando il RAID SW VXFS.
Il comando è il seguente:

lvextend -m 1 <LV> <PV>

**CASO 2**

se si dispone di sottosistemi di storage quli EMC^2 SYMMETRIX o CLARIION, IBM SHARK DS8000 il mirroring o RAID SW diviene superfluo in quanto ci sono dei specifici SW che si agganciano ai driver che garantiscono sia il bilanciamento del Throughput che il fault tolerance in caso di rottura di un canale e l'uouput di lvdisplay sarà piàù o meno simile al seguente:

--- Distribution of logical volume ---
PV Name LE on PV PE on PV
/dev/dsk/c23t3d3 12750 12750

--- Logical extents ---
LE PV1 PE1 Status 1
00000 /dev/dsk/c23t3d3 00000 current
00001 /dev/dsk/c23t3d3 00001 current
00002 /dev/dsk/c23t3d3 00002 current
00003 /dev/dsk/c23t3d3 00003 current
--resto omesso---


come vediamo i quasi 13000 extents sono allocati su un solo PV.



AP
apotenziani
 
Messaggi: 20
Iscritto il: gio feb 15, 2007 3:54 pm

Messaggioda matteo » gio mar 15, 2007 2:26 pm

apotenziani ha scritto:Per quella che è la mia esperienza a parte l'utilizzo dei RAW devices tutte le applicazioni dell'azienda su piattaforma UX lavorano in VxFS

Per la mia esperienza (Sun Solaris), da qualche anno a questa parte utilizziamo veritas filesystem solamente nelle vecchie macchine. A partire dal cluster 3.0 sun ha cominciato ad utilizzare di più l'UFS (per gli altri che leggono: Unix File System; fs nativo dei SO unix). Sinceramente io mi trovo bene con entrambi.

root@RMDOCCO2:/>lvdisplay -v /dev/vg00/lvol1|more
lvextend -m 1 <LV> <PV>

Ma come volume management cosa usi?
Nel mio ambiente per tutti i cluster e le vecchie macchine viene utilizzato Veritas Volume Manager. Per tutte le altre viene utilizzato Solstice Disk Suite (preinstallato per default a partire da solaris 9)

Matteo
matteo
 
Messaggi: 327
Iscritto il: ven mar 17, 2006 10:22 am

Messaggioda apotenziani » gio mar 15, 2007 6:12 pm

Io uso LVM HP (che poi è una customizzazione del Veritas Volume manager).
Lo stesso una IBM sulle nuove piattaforme Porwer P5.
Or ora torno da una presentazione sulla virtualizzazione e sul muiltipartizionamenti e micropartizionamento...cambiano un po i comandi (ad es. invece di esservi vgextend c'è extendvg) ma la sostanza del sistema di management non cambia.


A.
apotenziani
 
Messaggi: 20
Iscritto il: gio feb 15, 2007 3:54 pm

MINI-howto: RAID1 con slackware12

Messaggioda nemo » ven nov 02, 2007 2:04 am

posto un MINI-howto (senza nessuna pretesa e suscettibile di perfezionamento) a margine del vostro HOWTO, che è davvero molto interessante.

ATTENZIONE l'how-to ha subito qualche modifica e integrazione. consiglio di seguire le evoluzioni su
http://www.slacky.eu/wikislack/index.php?title=RAID1_con_Slackware_12.0
quanto segue potrebbe non essere aggiornato.
_______________________________________________________

PROBLEMA GENERALE: configurare e installare un RAID1 tra due dischi SATA con SLACKWARE 12

PROBLEMA SPECIFICO: il comando mkraid è scomparso dalla slack12, in quanto deprecato. viene soppiantato dal comando mdadm

AZIONI SVOLTE: lette chilate intere di manuali, HOW-TO, forum eccetera eccetera, la stragrande parte delle quali scritta - superfluo a dirsi - per mkraid; seguiti i vari post di www.frattocchie.it (SEMPRE molto utili)

SOLUZIONE: [armarsi di pazienza: dopo vari tentativi la cosa funziona] la procedura suggerita qui non è la strada più breve ma tutto sommato è quella più semplice e seguendola è possibile installare il RAID1 in circa tre quarti d'ora (il tempo ha sempre la sua importanza). postate un emoticon sorridente quanti siete riusciti a farlo con questo MINI-howto :) ; postate un emoticon arrabbiato quanti non siete riusciti a farlo con questo MINI-howto :(

MATERIALE NECESSARIO: un PC con due HD possibilmente di uguale capacità e certamente funzionanti; i CD di installazione slackware 12; carta e penna

PROCEDURA:
0) introdurre il CD n.1 di installazione slackware 12
1) effettuare il login come root e avviare il partizionamento del disco 1
# fdisk /dev/sda
STEP 1.1: si suppone di voler realizzare 4 partizioni primarie: /- /boot - /swap - /var. nell'esempio che segue si presenta la sequenza di azioni previste per realizzare la prima partizione primaria di 50Mb che verrà utilizzata per /boot

Codice: Seleziona tutto
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-30401, default 1): <CR>
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-30401, default 30401): +50M


STEP 1.2: la medesima operazione di STEP 1.1 va ripetuta per le altre tre partizioni.

STEP 1.3: occorre cambiare l'id del filesystem e scegliere la partizione SWAP. la partizione 2 viene contrassegnata come SWAP e il suo id viene sostituito con 82

Codice: Seleziona tutto
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82


STEP 1.4: occorre cambiare l'id del filesystem e scegliere il LINUX RAID che consentirà al kernel di riconoscere i dischi contrassegnati per montarli nel RAID

Codice: Seleziona tutto
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd


STEP 1.5: l'operazione STEP 1.4 deve essere eseguita per le partizioni 1 - 3 - 4 (non per la SWAP)

STEP 1.6: al termine del partizionamento digitare
Codice: Seleziona tutto
Command (m for help): p
    Device Boot      Start      End        Blocks     Id  System
/dev/sda1          <START>    <END>      <BLOCKS>    fd   Linux raid autodetect 
/dev/sda2          <START>    <END>      <BLOCKS>    82   Linux swap
/dev/sda3          <START>    <END>      <BLOCKS>    fd   Linux raid autodetect 
/dev/sda4          <START>    <END>      <BLOCKS>    fd   Linux raid autodetect


copiare la tabella che viene riprodotta, compresi i numeri <START>, <END>, <BLOCKS>. torneranno utili per la partizione del secondo disco e in ogni caso per ripetere la partizione qualora le operazioni non andassero a buon fine

STEP 1.7: conclusa la sostituzione dei tipi di filesystem occorre scrivere la tabella delle partizioni con l'opzione w

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


STEP 1.8: il primo disco risulta partizionato. occorre ripetere le operazioni per il secondo disco: quindi digitare # fdisk /dev/sdb e ripetere STEP 1.1 - STEP 1.2 - STEP 1.3 - STEP 1.4 - STEP 1.5 utilizzando i dati che si sono copiati nello STEP 1.6. eseguire anche le operazioni STEP 1.7

2) creare il RAID1

STEP 2.1: digitare nella riga di comando
# mdadm -Cv /dev/md1 -l1 -n2 /dev/sda1 /dev/sdb1
e rispondere "y" alla domanda se si vuole creare il device
(il comando appena digitato ha detto: -Cv = crea in modo descrittivo il primo device raid /dev/md1 ---> -l1 = con un livello di RAID 1 ---> -n2 = che utilizza due dischi ---> [nome dei due dischi])

STEP 2.2: ripetere la medesima operazione per la partizione 3 e la partizione 4
ATTENZIONE alla successione della numerazione, che salta la partizione 2 in quanto è la partizione di SWAP
/dev/md1 ---> /dev/sda1 /dev/sdb1
/dev/md2 ---> /dev/sda3 /dev/sdb3
/dev/md3 ---> /dev/sda4 /dev/sdb4

STEP 2.3: formattare il filesystem del RAID. digitare nella riga di comando
# mke2fs -j /dev/mdN
dove N sta per il numero del device di RAID. ripetere per md1 - md2 - md3

STEP 2.4: formattare il filesystem della partizione SWAP. digitare nella riga di comando
# mkswap /dev/sda2
# mkswap /dev/sdb2
non inseriremo nel RAID le partizioni di SWAP; in questo modo il RAID funzionerà con una SWAP pari a /dev/sda2 + /dev/sdb2. nel caso uno dei due dischi si degradi, l'altro avrà a disposizione solo la propria SWAP

STEP 2.5: verificare la condizione del RAID. digitare nella riga di comando
# cat /proc/mdstat
comparirà la lista dei 4 devices appena creati; leggendo qualcosa del genere
md1 : active raid1 sdb1[1] sda1[0]
<numero> blocks [2/2] [UU]
vuol dire che il RAID è installato attivo e sincronizzato
può anche comparire la parola DELAYED ---> il device deve essere ancora sincronizzato
SUGGERIMENTO: attendere che tutti i devices siano sincronizzati prima di eseguire l'installazione della slackware

3) installare SLACKWARE 12

STEP 3.1: avviare il setup da riga di comando
# setup

STEP 3.2: rispondere ok senza modificare nulla nella tabella delle partizioni SWAP

STEP 3.3: installare le partizioni target nel solito modo. invece che l'indicatore dei dischi (p.e. /dev/sda1) comparirà l'indicatore del device RAID (/dev/md1). operare come al solito fino al termine dell'installazione

STEP 3.4: installazione di LILO: scegliere il modo expert
--> selezionare la prima opzione, per impostare i parametri generali
--> modificare le opzioni secondarie che interessano
--> MODIFICARE il dispositivo di boot predefinito (/dev/sda) in /dev/md1 (quello dove ora si trova il boot del RAID)
--> selezionare l'opzione per la costruzione dell'avvio di LINUX
--> MODIFICARE il dispositivo di root scegliendolo tra quelli proposti dalla tabella /dev/md2
--> selezionare l'installazione di LILO

STEP 3.5: quando è terminata la configurazione uscire dal programma regolarmente MA NON riavviare il sistema

4) installazione di LILO
con il file di LILO appena costruito e installato non sono stati occupati gli MBR di entrambi i dischi. nel caso si rompesse uno dei due potrebbe essere un problema far ripartire la macchina. PRIMA di riavviare il sistema eseguire una nuova installazione con la seguente procedura

STEP 4.1: montare il device root del RAID. digitare da riga di comando
# mount /dev/md2 /mnt/hd

STEP 4.2: editare il file lilo.conf del RAID. digitare da riga di comando
# vi /mnt/hd/etc/lilo.conf
inserire (p.e. dopo la riga boot = /dev/md1) la seguente riga
raid-extra-boot = "/dev/sda,/dev/sdb"
salvare e chiudere vi

STEP 4.3: installare LILO. digitare da riga di comando
# /mnt/hd/sbin/lilo -v -C /mnt/hd/etc/lilo.conf
(stiamo dicendo al sistema di andare ad eseguire lilo che si trova nella partizione montata e di installare il file lilo.conf che si trova nel medesimo device. si poteva fare lo stesso portandosi nella partizione /mnt/hd e digitando #chroot . --> complichiamoci la vita, va')

STEP 4.4: riavviare il sistema

5) creazione di un nuovo file /etc/mdadm.conf
il file /etc/mdadm.conf è stato pensato come omolodo del file /etc/raidtab. può essere creato manualmente oppure si può farlo creare da mdadm. ora che il RAID è funzionante possiamo seguire questa seconda strada.

STEP 5.1: duplichiamo il file esistente prima che venga sovrascritto. è sempre utile averlo, anche solo per studiarlo. digitare nella riga di comando
# cp /etc/mdadm.conf /etc/mdadm.conf.old

STEP 5.2: creiamo il nuovo file. digitare nella riga di comando
# mdadm --detail --scan > /etc/mdadm.conf
nel caso vi fossero problemi in futuro, sarà possibile riavviare un device con il seguente comando
# mdadm -As /dev/mdN (dove N è il numero del device. il comando andrà a leggersi i dati nel file di configurazione: -As ---> assembla e fai lo scan)[/b]
Ultima modifica di nemo il sab nov 10, 2007 11:20 pm, modificato 1 volta in totale.

Sapere una cosa è saggezza
Sapere come farla è sapienza
Farla è virtù

______________________________________

Immagine
nemo
 
Messaggi: 22
Iscritto il: sab nov 11, 2006 3:17 pm
Località: Linux City

Ottimo articolo

Messaggioda apotenziani » lun nov 05, 2007 10:53 am

Ottimo articolo,


ora sarebbe interessante una procedura simile (RAD 1 cioè mirroring) creato con l'LVM...
Una domanda...perchè hai scelto di non mirrorare la swap?


ciao
Ale.
apotenziani
 
Messaggi: 20
Iscritto il: gio feb 15, 2007 3:54 pm

Re: Ottimo articolo

Messaggioda nemo » lun nov 05, 2007 8:33 pm

apotenziani ha scritto:Ottimo articolo,

ora sarebbe interessante una procedura simile (RAD 1 cioè mirroring) creato con l'LVM...
Una domanda...perchè hai scelto di non mirrorare la swap?

ciao
Ale.


grazie del complimento, la mia speranza è solo che sia utile ad altri.

non ho fatto il mirroring della swap perchè è fondamentalmente inutile.

la logica del mirroring è conservare informazioni in duplice copia, in modo tale che se un supporto presentasse dei problemi, l'altra copia, perfettamente identica, sarebbe in grado di far funzionare ugualmente il sistema.
c'è da considerare che il software mirroring sottrae risorse al sistema, e se si può risparmiare su qualcosa bisogna farlo.
la swap, come sai, è un'area del disco riservata a uno scambio di informazioni con la ram, e con lo spegnimento del sistema viene praticamente azzerata, al contrario delle altre partizioni. perciò il mirroring su quest'area non ha senso. esiste però una ragione interessante da considerare per evitare il mirroring sulla swap...
se si ha a disposizione un grosso disco, si può tranquillamente impostare una swap pari al doppio della ram operativa. il sistema allocherà i dati della ram nella partizione di swap fino al suo esaurimento.
se il mirror riguardasse anche la swap non si noterebbero benefici di alcun genere. i dati verrebbero allocati nel device RAID della swap, cioè, in altri termini, nella partizione swap di ENTRAMBI i dischi. nella procedura scelta da me, il sistema riconosce di avere DUE partizioni swap e quindi di poter allocare una quantità doppia di memoria. questa cosa, che è ininfluente sotto ogni punto di vista, può tornare utile il giorno in cui io volessi aumentare la ram del mio pc, senza dover toccare più il software: il RAID1 avrebbe a disposizione una swap pari a partizione1 + partizione2.
qualora invece un disco si degradasse (è l'evento per il quale il mirroring è progettato), la swap sarebbe pari a quella della partizione del disco funzionante. ci sarebbero minimi problemi di rendimento solo nel caso che io avessi aumentato la ram.

insomma, al termine della tediosa spiegazione (che spero abbia chiarito qualcosa) ti dirò: è un vezzo che mi sono concesso! :lol:

alla prox!

Sapere una cosa è saggezza
Sapere come farla è sapienza
Farla è virtù

______________________________________

Immagine
nemo
 
Messaggi: 22
Iscritto il: sab nov 11, 2006 3:17 pm
Località: Linux City

Messaggioda apotenziani » mar nov 06, 2007 10:08 am

ciao,


in linea di massima il tuo ragionamento è quasi corretto dico "quasi" poichè mirrorare la swap area spesso non è utile ma NECESSARIO.
In uno scenario di produzione dove non posso permettermi fermi macchina facciamo quaesta ipotesi:

RAM = 10GB
swap= 5 GB su vol1 (pri 1)
5 GB su vol2 (pri 2)

swap allocata al tempo t0 = 8 GB.
Cosa accadrebbe se perdessi all'istante T0 il volume 1 o 2 ?
Semplice... crash di sistema!
Un mirroring della swap invece eviterebbe di fatto questo scenario anche ponderato che, come sai, i demoni che si occupano della sincronizzazione dei mirroring lavorano con in background con una prioorita molto bassa e di fatto consumano molte poche risorse...

spero di averti chiarito l'utilità dello swap mirroring...


ciao
Ale.
apotenziani
 
Messaggi: 20
Iscritto il: gio feb 15, 2007 3:54 pm

Messaggioda nemo » sab nov 10, 2007 11:17 pm

apotenziani ha scritto:ciao,


in linea di massima il tuo ragionamento è quasi corretto dico "quasi" poichè mirrorare la swap area spesso non è utile ma NECESSARIO.
In uno scenario di produzione dove non posso permettermi fermi macchina facciamo quaesta ipotesi:

RAM = 10GB
swap= 5 GB su vol1 (pri 1)
5 GB su vol2 (pri 2)

swap allocata al tempo t0 = 8 GB.
Cosa accadrebbe se perdessi all'istante T0 il volume 1 o 2 ?
Semplice... crash di sistema!
Un mirroring della swap invece eviterebbe di fatto questo scenario anche ponderato che, come sai, i demoni che si occupano della sincronizzazione dei mirroring lavorano con in background con una prioorita molto bassa e di fatto consumano molte poche risorse...

spero di averti chiarito l'utilità dello swap mirroring...


ciao
Ale.


ci sono ragioni a favore e ragioni contro sia per l'uno che per l'altro sistema. non sei stato l'unico a sollevare qualche obiezione, per cui in ogni caso ho corretto il mini how-to http://www.slacky.eu/wikislack/index.php?title=RAID1_con_Slackware_12.0 in modo da indicare il sistema per mettere in RAID anche la swap.

grazie del tuo intervento! ;)

Sapere una cosa è saggezza
Sapere come farla è sapienza
Farla è virtù

______________________________________

Immagine
nemo
 
Messaggi: 22
Iscritto il: sab nov 11, 2006 3:17 pm
Località: Linux City

Messaggioda apotenziani » mar nov 13, 2007 12:39 pm

Ottimo lavoro nemo!


aggiungo un po di accademia al discorso dicendo che forse per lo swap mirroring sarebbe opportuno valutare il rapporto SLA/costo storage per poter davvero dare un giudizio....il resto lo vedo pura filosofia.




ciao,
Ale.
apotenziani
 
Messaggi: 20
Iscritto il: gio feb 15, 2007 3:54 pm


Torna a Unix, Linux & reti

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti

cron