Administration REDHAT Technocité
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le deal à ne pas rater :
Cartes Pokémon 151 : où trouver le coffret Collection Alakazam-ex ?
Voir le deal

Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress

3 participants

Aller en bas

Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress Empty Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress

Message  ddm Sam 1 Déc - 17:24

Salut à tous,

Si ça peut intéresser quelqu'un ... voici deux exercices sur RAID.
Il vous faudra cette fois un peu plus de temps que les LVM.

Je passe les détails de la création des partitions, fdisk est votre ami, et il est bien documenté.
N'oubliez pas que si vous avez un disque SATA ou SCSI, vous serez limités à 16 partoches sur un disque.

Préalable: nous disposons de 7 partitions d' 1 GB telles que: (et oui, j'ai pas de sata, donc ce sont des hda*)

Code:
  Device Boot      Start        End      Blocks  Id  System
/dev/hda9            7522        7646    1004031  fd  Linux raid autodetect
/dev/hda10          7647        7771    1004031  fd  Linux raid autodetect
/dev/hda11          7772        7896    1004031  fd  Linux raid autodetect
/dev/hda12          7897        8021    1004031  fd  Linux raid autodetect
/dev/hda13          8147        8271    1004031  fd  Linux raid autodetect
/dev/hda14          8022        8146    1004031  fd  Linux raid autodetect
/dev/hda15          8272        8396    1004031  fd  Linux raid autodetect
Exercice 1: RAID1
Créer un raid 1 (mirroring) avec hda13 et hda15 ... créer un système de fichier et le remplir avec des données.
- Vérifier l'espace utilisable
- Faire décéder hda15, noter ce qu'il se passe dans le RAID
- tester si le systeme de fichiers est toujours utilisable
- remplacer le disque mort par un neuf... disons hda10
- constater la fin de la synchronisation sur le nouveau disque

Exercice 2: RAID5
- monter un raid5 avec 3 disques/partitions (le minimum), créer un système de fichiers, le remplir
utiliser hda11, hda12, hda14
- constater la taille "utile" du raid5 (ndlr.: la taille utilisable)
- faire mourrir un disque (hda11), constater que tout fonctionne toujours
- remplacer ce disque (hda15), constater la synchronisation
- ajouter un disque de "spare" (hda9)
- tuer le hda12, constater que le spare le remplace automatiquement
- tuer le hda14, constater que le système fonctionne toujours mais est dégradé
- tuer un disque supplémentaire et constater que le système de fichiers devient corrompu.

------------------------------
------------------------------

Exercice 1:

[Avant tout, un peu de musique, et laissons notre lecteur favori randomizer un peu la playlist...
verdict: Let's go to bed -- The Cure ... c'est pas vraiment d'actualité, mais pourquoi pas Smile]

Créons note array raid ...

Code:
[root@localhost mnt]# mdadm --create /dev/md1 --verbose --level=1 --raid-devices=2 /dev/hda13 /dev/hda15
mdadm: error opening /dev/md1: No such file or directory
Premier problème: CentOS n'a qu'un device /dev/md0 par défaut dans /dev. et moi j'ai envie d'utiliser md1 (par pure provocation).
Solutions: on peut soit créer manuellement /dev/md1 avec la commande mknod avec 9 en majeur et 1 en mineur, mais dans ce cas présent, laissons faire mdadm qui a une directive spéciale pour ça: --auto

<ajout>
Pour être complet, nous aurions pu créer à la main le /dev/md1 en tappant la commande suivante:

Code:
mknod /dev/md1 b 9 1
chmod 640 /dev/md1
le chmod n'est pas obligatoire, mais c'est pour que tous les droits des /dev/md* soient pareils
</ajout>

Revenons-en à la création de notre array avec --auto :

Code:
[root@localhost mnt]# mdadm --create /dev/md1 --auto=md1 --verbose --level=1 --raid-devices=2 /dev/hda13 /dev/hda15
mdadm: size set to 1003904K
mdadm: array /dev/md1 started.
Parfait !

Vérifions l'espace que nous offre notre nouveau périférique /dev/md1:
fdisk me dit:
Code:
Disk /dev/md1: 1027 MB, 1027997696 bytes
Création d'un systeme de fichier et montage ...

Code:
[root@localhost mnt]# mkfs.ext3 /dev/md1
[...]
[root@localhost mnt]# mount /dev/md1 /mnt/raid1
[root@localhost mnt]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md1              965M  18M  899M  2% /mnt/raid1
[1979 - Smashing Pumpkins ... souvenirs...]

Remplissons le pour le plaisir ...

Code:
[root@localhost raid1]# dd if=/dev/hdb of=/mnt/raid1/data.dat bs=1024k count=940
[root@localhost raid1]# md5sum data.dat > data.dat.md5
Faisons mourrir prématurément hda15:

Code:
[root@localhost raid1]# mdadm /dev/md1 --fail /dev/hda15
mdadm: set /dev/hda15 faulty in /dev/md1
Constatons l'état du raid1:

Code:
[root@localhost raid1]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hda15[2](F) hda13[0]
      1003904 blocks [2/1] [U_]

--> le hda15 est (F) --> faulty
--> [U_] indique qu'une des deux unités seulement fonctionne

Vérifions que même avec un disque mort, il est toujours possible d'utiliser note systeme de fichier construit sur le raid1 md1:

Code:
[root@localhost raid1]# md5sum data.dat > data.data.md5.b
[root@localhost raid1]# cat *md5*
8831267c7e6d3157369e6d07224a2248  data.dat
8831267c7e6d3157369e6d07224a2248  data.dat
--> Nous venons de lire un fichier de 940 MB et d'écrire sur le systeme de fichiers
--> les MD5 sont toujours pareils, nos données sont toujours intactes

[Karma Police -- Radiohead ... yeeeeee! il paraît qu'ils seront à Werchter 2008 !]

Ajoutons hda10 comme disque actif dans le raid pour remplacer hda15:

Code:
[root@localhost raid1]# mdadm /dev/md1 --add /dev/hda10
mdadm: added /dev/hda10
constation la synchro du raid (il se reconstruit):

Code:
[root@localhost raid1]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hda10[3] hda15[2](F) hda13[0]
      1003904 blocks [2/1] [U_]
      [===>.................]  recovery = 16.8% (169472/1003904) finish=0.8min speed=16947K/sec

[...]

      [===============>.....]  recovery = 77.8% (783104/1003904) finish=0.2min speed=16634K/sec

[...]

[root@localhost raid1]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hda10[1] hda15[2](F) hda13[0]
      1003904 blocks [2/2] [UU]
--> parfait ! notre raid1 est à nouveau en pleine forme, mais contient toujours hda15 marqué en faulty. On peut le retirer, ça ne changera rien à l'état du raid1 puisqu'il a déjà 2 unités correctes (hda10 et hda13)

Code:
[root@localhost raid1]# mdadm /dev/md1 --remove /dev/hda15
mdadm: hot removed /dev/hda15

[root@localhost raid1]# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 hda10[1] hda13[0]
      1003904 blocks [2/2] [UU]
--> Et voila, fin de l'exercice 1!

------------------------------
------------------------------
------------------------------
------------------------------

[En passant, c'est maintenant Polly de Nirvana (unplugged in NY) qui passe, tout est calme...]

Pour rappel:
Exercice 2: RAID5
- monter un raid5 avec 3 disques/partitions (le minimum), créer un système de fichiers, le remplir
utiliser hda11, hda12, hda14
- constater la taille "utile" du raid5 (ndlr.: la taille utilisable)
- faire mourrir un disque (hda11), constater que tout fonctionne toujours
- remplacer ce disque (hda15), constater la synchronisation
- ajouter un disque de "spare" (hda9)
- tuer le hda12, constater que le spare le remplace automatiquement
- tuer le hda14, constater que le système fonctionne toujours mais est dégradé
- tuer un disque supplémentaire (hda15) et constater que le système de fichiers devient corrompu.

Création du RAID5:

Code:
[root@localhost mnt]# mdadm --create /dev/md4 --auto=md4 --level=5 --raid-devices=3 /dev/hda11 /dev/hda12 /dev/hda14
mdadm: array /dev/md4 started.
Système de fichier .. et montage..

Code:
[root@localhost mnt]# mkfs.ext3 /dev/md4
[...]
[root@localhost mnt]# mount /dev/md4 /mnt/raid5
Taille utile:

Code:
[root@localhost mnt]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md4              1.9G  35M  1.8G  2% /mnt/raid5
--> La taille utile dans un RAID5 est théoriquement la taille de tous les disques sauf 1
--> Nous avons ici 3 disques de 1GB donc :
--> taille = 1GB * (3 disques -1)
--> = 1GB * 2
--> = 2GB

ça correspond (à +- 100MB, n'en faisons pas un fromage).

remplissons ...

Code:
[root@localhost mnt]# dd if=/dev/zero of=/mnt/raid5/data5.dat bs=1024k count=1830 && md5sum /mnt/raid5/data5.dat > /mnt/raid5/data5.dat.md5
tout va bien et l'état de notre raid5 est dans /proc/mdstat:

Code:
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md4 : active raid5 hda14[2] hda12[1] hda11[0]
      2007808 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md1 : active raid1 hda10[1] hda13[0]
      1003904 blocks [2/2] [UU]
C'est bien le md4 qui nous intéresse ici...

faisons mourrir hda11 (et cette fois-ci on va directement le retirer du raid)

Code:
[root@localhost ~]# mdadm /dev/md4 --fail /dev/hda11 --remove /dev/hda11
mdadm: set /dev/hda11 faulty in /dev/md4
mdadm: hot removed /dev/hda11
[The Killers -- Mr. Brightside ... un peu de rythme !!]

Par curiosité, vous pouvez aussi jeter un oeil dans vos messages kernel ... le systeme raid est assez bavard:

Code:
[root@localhost ~]# dmesg | grep raid5 | tail -1
raid5: Disk failure on hda11, disabling device. Operation continuing on 2 devices
et effectivement, le raid5 est toujours là, avec un disque de moins:

Code:
[root@localhost raid5]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md4 : active raid5 hda14[2] hda12[1]
      2007808 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]
--> [_UU] --> Il lui manque une unité pour être healthy

On controle avec nos md5 (comme d'hab que toutes nos données sont lisibles et non corrompues):

Code:
[root@localhost raid5]# md5sum /mnt/raid5/data5.dat > /mnt/raid5/data5.dat.md5.b && cat /mnt/raid5/*md5*
0246b33cf2fb34f6d18116432e96a3d7  /mnt/raid5/data5.dat
0246b33cf2fb34f6d18116432e96a3d7  /mnt/raid5/data5.dat
--> Parfait
On ajoute désormais /dev/hda15 (considérant qu'il ait été réparé depuis l'exercice précédent):

Code:
[root@localhost ~]# mdadm /dev/md4 --add /dev/hda15
mdadm: added /dev/hda15
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md4 : active raid5 hda15[3] hda14[2] hda12[1]
      2007808 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]
      [=>...................]  recovery =  5.3% (53504/1003904) finish=1.4min speed=10700K/sec
[...]
      [=========>...........]  recovery = 46.5% (468864/1003904) finish=0.8min speed=10474K/sec
[...]
      [===================>.]  recovery = 95.1% (956160/1003904) finish=0.0min speed=10476K/sec

[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md4 : active raid5 hda15[0] hda14[2] hda12[1]
      2007808 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
--> Nos 3 unités sont synchronisées [UUU]

Nous allons désormais ajouter à notre raid5 un "spare" (hda9) disk, c'est à dire un disque qui sera utilisé par le raid5 si un autre disque venait à devenir faulty.

Code:
[root@localhost ~]# mdadm /dev/md4 --add /dev/hda9
mdadm: added /dev/hda9

[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md4 : active raid5 hda9[3](S) hda15[0] hda14[2] hda12[1]
      2007808 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
--> On voit que hda9 est marqué comme spare dans le raid array grace au "(S)" qui le suit.

Donc, nous allons maintenant marquer comme faulty le disque hda12, et tout de suite après, le hda9 devrait se synchroniser dans le raid array sans que nous ayons rien à faire:

Code:
[root@localhost ~]# mdadm /dev/md4 --fail /dev/hda12
mdadm: set /dev/hda12 faulty in /dev/md4

[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md4 : active raid5 hda9[3] hda15[0] hda14[2] hda12[4](F)
      2007808 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
      [=>...................]  recovery =  6.0% (61184/1003904) finish=1.5min speed=10197K/sec
[...]
      [======>..............]  recovery = 30.9% (312192/1003904) finish=1.1min speed=10070K/sec
[...]
      [===================>.]  recovery = 96.2% (967168/1003904) finish=0.0min speed=10041K/sec
--> en effet, hda12 est en "(F)" failure et hda9 n'est plus marqué comme spare "(S)" -> il a été intégré et s'est synchronisé automatiquement.

[Suds & Soda -- Deus .... Un peu de belge ! Vive Tom Barman ! ]

Bon, nous voila au moment du scénario catastrophe .. deux disques nous lachent .. d'abord hda14, ensuite hda15
Je suis pas certain qu'on puisse le forcer à tuer le raid, mais on va essayer !

Code:
[root@localhost ~]# mdadm /dev/md4 --fail /dev/hda14
mdadm: set /dev/hda14 faulty in /dev/md4
Tout fonctionne toujours bien mais ...

Code:
[root@localhost ~]# mdadm /dev/md4 --fail /dev/hda15
mdadm: set /dev/hda15 faulty in /dev/md4

[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md4 : active raid5 hda9[1] hda15[3](F) hda14[4](F) hda12[5](F)
      2007808 blocks level 5, 64k chunk, algorithm 2 [3/1] [_U_]
là, théoriquement, notre raid5 est raide mort.

Code:
[root@localhost raid5]# md5sum /mnt/raid5/data5.dat > /mnt/raid5/data5.dat.md5.c && cat /mnt/raid5/*md5*
md5sum: /mnt/raid5/data5.dat: Input/output error

[root@localhost raid5]# ls -la
ls: reading directory .: Input/output error
[Tryo -- La main verte .... euhhh .. je vais passer les détails de cette chanson .. 0:-) ]

Donc, clairement, le raid est cette fois-ci irrécupérable.
Il n'y a vraiment plus rien à faire.
Même en ajoutant des devices à votre raid 5, il sera incapable de reconstuire les données perdues

--> N'oubliez pas que le système RAID ne vous dispense JAMAIS de faire des backups.

Fin des deux exercices pour vous ... mais je viens de me rendre compte que je viens de faire une fausse manoeuvre:
dd if=/dev/zero of=/dev/hda1 ..... au lieu de /dev/hda11 ... Sad
et /dev/hda1 est le /boot de mon système ... je vais avoir du mal au prochain reboot Smile
kaboom, j'vais essayer de récupérer tout ça si je retrouve mon cd rescue centos

Bon weekend à vous ! study

--ddm [Depeche Mode -- Never let me down again .... c'est mon /boot qui parle ?]
ddm
ddm

Messages : 55
Date d'inscription : 06/11/2007

Revenir en haut Aller en bas

Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress Empty Re: Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress

Message  the_major_nmy_s Sam 1 Déc - 18:07

et dire que moi des que je dis bin bash on me prends pour un malade.....

the_major_nmy_s

Messages : 37
Date d'inscription : 05/11/2007

Revenir en haut Aller en bas

Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress Empty Re: Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress

Message  ness Sam 1 Déc - 21:46

the_major_nmy_s a écrit:et dire que moi des que je dis bin bash on me prends pour un malade.....
Rectification...
Tu veux dire quand tu dis "#!/bin/bash"... mdrr vous êtes de grands malades... Surprised




-- [Now Listening : JJ Lionel - La Danse de Canards...] Ducks Song - Fuck off otha zik, Drink Téquila Boom Boom Powa !!!
ness
ness

Messages : 56
Date d'inscription : 05/11/2007

Revenir en haut Aller en bas

Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress Empty Re: Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress

Message  ness Lun 3 Déc - 2:53

Juste pour vous dire que pour la certif on demande de faire du raid6 ^_^
avec 4 partitions minimales...
ness
ness

Messages : 56
Date d'inscription : 05/11/2007

Revenir en haut Aller en bas

Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress Empty Re: Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser