Tout d'abord: à ceux qui croient encore en "RAID0 n'a pas de disque de rechange". Il pourrait avoir un disque de secours manuel, fait par l'homme, qui comprend les niveaux RAID et mdadm. mdadm est un RAID logiciel, il pourrait donc faire beaucoup de choses intéressantes.
Crédits à Zoredache pour l'idée!
Donc, la situation:
- vous disposez d'une matrice RAID0 de deux disques
- vous souhaitez remplacer l'un d'eux sans interruption de la baie
Si le temps d'arrêt est acceptable, vous pouvez toujours faire une copie de bloc de disque avec dd et réassembler le tableau, mdadm fera OK.
Solution: utilisez RAID4 comme solution intermédiaire
RAID0 -> RAID4 -> RAID0
Donc, si vous ne vous souvenez pas de RAID4, c'est simple. Il a un bloc de parité, mais contrairement à RAID5, il n'est pas distribué sur la baie, mais réside sur UN disque. C'est le point, c'est important et c'est la raison pour laquelle RAID5 ne fonctionnera pas.
Ce dont vous aurez besoin: deux autres disques de la même taille que le disque que vous souhaitez remplacer.
Environnement:
- Ubuntu 14.04 Thrusty Thar
- mdadm - v3.2.5 - 18 mai 2012
- / dev / sdb - commencez par le remplacer par le
- / dev / sdc - commencez par
- / dev / sdd - sera utilisé temporairement
- / dev / sde - sera utilisé à la place de sdb
Le guide mdadm de secours à chaud RAID0 ultime;)
sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]
md0 : active raid0 sdc[1] sdb[0]
2096128 blocks super 1.2 512k chunks
Nous avons créé un tableau raid0, il a l'air doux.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
C'est notre point de contrôle - si même un bit diffère dans le résultat /dev/md0
- nous avons échoué.
sudo mdadm /dev/md0 --grow --level=4
md0 : active raid4 sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Nous avons donc développé notre baie pour qu'elle devienne RAID4. Nous n'avons pas encore ajouté le disque de parité, alors faisons-le. La croissance sera instantanée - il n'y a rien à recalculer ou à recalculer.
sudo mdadm /dev/md0 -a /dev/sdd
md0 : active raid4 sdd[3] sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[===>.................] recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec
Nous avons ajouté un sdd
disque de parité. Ceci est important à retenir - l'ordre des disques dans la première rangée n'est pas synchronisé avec l'image de la deuxième rangée! [UU_]
sdd
est affiché en premier, mais en fait c'est le dernier, et ne contient pas les données, mais la parité.
sudo mdadm /dev/md0 -f /dev/sdb
md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
Nous avons rendu notre disque sdb défectueux, pour le supprimer dans les étapes suivantes.
sudo mdadm --detail /dev/md0
State : clean, degraded
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
0 8 16 - faulty spare /dev/sdb
Les détails nous montrent la suppression du premier disque et ici nous pouvons voir le véritable ordre des disques dans la matrice. Il est important de suivre le disque avec parité, nous ne devons pas le laisser dans la baie lors du retour à RAID0.
sudo mdadm /dev/md0 -r /dev/sdb
md0 : active raid4 sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
sdb
est complètement retiré, pourrait être emporté.
sudo mdadm /dev/md0 -a /dev/sde
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
[==>..................] recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec
Nous avons ajouté le remplacement de notre disque sdb. Et c'est parti: maintenant les données de sdb sont récupérées en utilisant la parité. Sweeeeet.
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]
Terminé. En ce moment, nous sommes complètement en sécurité - toutes les données de sdb sont récupérées, et maintenant nous devons supprimer sdd (rappelez-vous, il maintient la parité).
sudo mdadm /dev/md0 -f /dev/sdd
md0 : active raid4 sde[4] sdd[3](F) sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
SDD défectueux.
sudo mdadm /dev/md0 -r /dev/sdd
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Sdd supprimé de notre tableau. Nous sommes prêts à redevenir RAID0.
sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[=>...................] reshape = 7.0% (73728/1048064) finish=1.5min speed=10532K/sec
Aaaaaaand bang!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
Terminé. Regardons la somme de contrôle md5.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
D'autres questions? RAID0 pourrait donc avoir un disque de secours. Cela s'appelle "utilisateur";)