Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress
3 participants
Page 1 sur 1
Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress
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*)
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 ]
Créons note array raid ...
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:
</ajout>
Revenons-en à la création de notre array avec --auto :
Vérifions l'espace que nous offre notre nouveau périférique /dev/md1:
fdisk me dit:
Remplissons le pour le plaisir ...
--> 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:
--> 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:
------------------------------
------------------------------
------------------------------
------------------------------
[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:
--> 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 ...
faisons mourrir hda11 (et cette fois-ci on va directement le retirer du raid)
Par curiosité, vous pouvez aussi jeter un oeil dans vos messages kernel ... le systeme raid est assez bavard:
On controle avec nos md5 (comme d'hab que toutes nos données sont lisibles et non corrompues):
On ajoute désormais /dev/hda15 (considérant qu'il ait été réparé depuis l'exercice précédent):
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.
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:
[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 !
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 ...
et /dev/hda1 est le /boot de mon système ... je vais avoir du mal au prochain reboot
kaboom, j'vais essayer de récupérer tout ça si je retrouve mon cd rescue centos
Bon weekend à vous !
--ddm [Depeche Mode -- Never let me down again .... c'est mon /boot qui parle ?]
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
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 ]
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
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
</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.
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
- 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
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
- Code:
[root@localhost raid1]# mdadm /dev/md1 --fail /dev/hda15
mdadm: set /dev/hda15 faulty in /dev/md1
- 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
--> 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
- 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]
- 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]
------------------------------
------------------------------
------------------------------
------------------------------
[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.
- Code:
[root@localhost mnt]# mkfs.ext3 /dev/md4
[...]
[root@localhost mnt]# mount /dev/md4 /mnt/raid5
- Code:
[root@localhost mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/md4 1.9G 35M 1.8G 2% /mnt/raid5
--> 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
- 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]
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
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
- 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]
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
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]
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]
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
[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
- 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_]
- 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
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 ...
et /dev/hda1 est le /boot de mon système ... je vais avoir du mal au prochain reboot
kaboom, j'vais essayer de récupérer tout ça si je retrouve mon cd rescue centos
Bon weekend à vous !
--ddm [Depeche Mode -- Never let me down again .... c'est mon /boot qui parle ?]
ddm- Messages : 55
Date d'inscription : 06/11/2007
Re: Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress
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
Re: Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress
Rectification...the_major_nmy_s a écrit:et dire que moi des que je dis bin bash on me prends pour un malade.....
Tu veux dire quand tu dis "#!/bin/bash"... mdrr vous êtes de grands malades...
-- [Now Listening : JJ Lionel - La Danse de Canards...] Ducks Song - Fuck off otha zik, Drink Téquila Boom Boom Powa !!!
ness- Messages : 56
Date d'inscription : 05/11/2007
Re: Exercice RAID: scénarii sur RAID1 et RAID5: ajouts, suppress
Juste pour vous dire que pour la certif on demande de faire du raid6 ^_^
avec 4 partitions minimales...
avec 4 partitions minimales...
ness- Messages : 56
Date d'inscription : 05/11/2007
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|