Migration raid5
Contexte
Notre machine est actuellement équipée de 3 disques d'1,5To configurés en RAID5 avec 2 partitions :
- 1 /boot
- 1 LVM
Ces disques étant un peu trop lents (faible nombre d'E/S par seconde), l'objectif est de migrer les données de ces 3 nouveaux disques d'1To, toujours en RAID5, mais nettement plus performants.
Nous avons 2 contraintes :
- la migration doit pouvoir être réalisée "en ligne", tout en maintenant actif les services (seront moins performants pendant la manip', mais pas arrêtés)
- le serveur ne dispose que de 4 emplacements sata
D'autre part, le /boot
n'étant pas pour l'instant dans le LVM, il faudra aussi le déplacer pour l'intégrer dans l'unique array RAID.
Ainsi, le principe sera donc de :
- passer le raid5 (3 disques) en mode dégradé sur 2 disques
- ajouter 2 nouveaux disques et les configurer en raid5 dégradé (1 disque manquant)
- configurer le LVM sur le 2ème raid
- migrer les données LVM vers le nouveau raid5
- recopier le contenu du
/boot
(qui n'était pas dans lvm) dans le/boot
du lvm (utilisation de l'option bind, merci Stéphane ;-)) - réinstaller grub
- enlever les anciens disques et ajouter le 3ème nouveau puis terminer la reconstruction du raid
Lors du 1er lab, nous avions eu un problème pas tout à fait clairement identifié (pb hot-plug sata ? pb grub ?) qui avait rendu le raid inconsistant et non réparable.
Nous sommes donc reparti de zéro et n'avons pas utilisé de hot-plug => arrêt du pc pour changer les disques.
Les étapes 1 à 5 se sont bien passées. Cependant, nous avons rencontré un problème lors de la réinstallation du grub :
error: unknown LVM metadata header.
Nous pensions que cela n'était pas bloquant, étant donné une erreur similaire lors de l'installation de base, et le dernier message :
Installation finished. No error reported.
Cependant, au redémarrage, la machine restait bloquée sur un busybox (et le clavier n'était pas fonctionnel : bug acpi ? ).
Après quelques recherches et redémarrages en live-usb, nous nous sommes rendu compte que la configuration du raid n'était pas enregistrée dans le fichier de conf /etc/mdadm/mdadm.conf
et que grub ne pouvait donc pas générer le nécessaire pour booter. A priori, l'initrd était incomplet (absence du pilote lvm qui n'était pas nécessaire pour l'ancien /boot ?) donc nous l'avons régénéré avec un update-initramfs
.
Enfin, il a fallu utiliser l'option "--recheck" lors du 1er grub-install
afin que celui-ci mette à jour sa "device map". Ce n'est plus nécessaire par la suite.
Avec ces modifications, l'update-grub
fonctionne sans aucune erreur/warning.
Tout le reste s'est très bien passé, ce fut l'occasion de tester les nouveaux disques durs qui s'avèrent performants d'après les premiers tests ; à confirmer avec des accès concurrentiels.
Achat des disques
Raid5
On a acheté chaque disque sur un site différent pour tenter (c'est réussi) d'avoir des séries différentes et donc moins de chance d'avoir les trois qui lâchent en même temps en cas de défaillance :
- http://www.ldlc.com/fiche/PB00129803.html (189,95€)
- http://www.magicpc.fr/disque-dur/Western-Digital-VelociRaptor-1000-go/p-24654/ (192,80€)
- http://www.rueducommerce.fr/Composants/Disque-Dur-interne/Disque-Dur-interne-3-5/WESTERN-DIGITAL/4868546-Disque-dur-interne-3-5-1000-Go-Velociraptor-10-000-tr-min-SATA-III-64-Mo-Bulk-WD1000DHTZ.htm#moid:MO-96EFAM22465194 (181,02€)
Disque 2To (spare raid + tdcpb)
Un petit compte-rendu a été posté sur : https://lists.ffdn.org/wws/arc/grandest/2014-06/msg00027.html |
Matériel à prévoir
- un tournevis
- vis
- nappes SATA
- noter les numéros des disques durs
- tester les secteurs des 3 disques actuels avant d'y aller (soit avec
dd
soit avec/usr/share/mdadm/checkarray
/dev/mdX
) - tester les 4 nouveaux disques en écriture avec la commande
dd
Synthèse des commandes
Phase préliminaire (dégradation de la grappe)
On commence par afficher l'état de nos grappes RAID
Les 2 grappes raid5 (boot et root) actuelles s'étendent sur les disques sda, sdb et sdc, On retire le disque sdc de la grappe (il y a la partition boot et la partition root)
srv :
|
mdadm /dev/md0 --set-faulty /dev/sdc1
mdadm /dev/md1 --remove /dev/sdc2 |
On liste les numéros de série des HDDs et on repère celui qui correspond au faulty
Puis on arrête la machine
On retire le disque dur sdc de la machine (apres l'avoir identifie), et on ajoute 2 des disques neufs à la machine
Préparation de la nouvelle grappe
On partitionne les deux disques neufs et on cree une nouvelle grappe raid5
Command (m for help): o Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): Using default value 1 First sector (2048-1953525167, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-1953525167, default 1953525167): Using default value 1953525167 Command (m for help): t Selected partition 1 Hex code (type L to list codes): fd Command (m for help): p /dev/sdc1 2048 1953525167 976761560 fd Linux raid autodetect Command (m for help): w
Cette commande créer donc une partition de type raid sur l'intégralitée du disque
Même opération que pour le disque sdc
On crée maintenant une grappe RAID sur les deux nouveau disques (en mode dégradé car nous disposont que de 4 emplacements sata)
Vérification
La nouvelle grappe apparaît sous le nom de md2
Migration des données
On transforme le nouveau raid en PV, on l'integre au VG de l'ancien raid et on déplace tout sur le nouveau raid
Intégration du pv dans le vg existant
Et migration des données \o/
La commande est bien longue, mais affiche sa progression au fur et à mesure
On enlève md1 du vg
Et on supprime le pv dessus
Intégration du /boot
On ne souhaite pas de nouveau separer boot sur le nouveau raid donc on copie juste les fichiers
Et on oublie pas d'éditer le fichier fstab (pour retirer le montage de la partition boot)
Ménage
On stoppe les anciens raid5 boot et root et on met à jour la conf mdadm
Et on modifie le fichier de conf mdadm
Il faut remonter la dernière ligne ARRAY (md2) de /etc/mdadm/mdadm.conf à la place des deux anciens ARRAY (md0 et md1)
On régénère l'initrd (pour ajouter lvm) si on était en targeted avant
On install grub sur les deux nouveaux disques
On peux maintenant arrêter la machine et enlever les deux anciens disques
Finitions
On partitionne le nouveau disque, on l'ajoute au seul raid restant et on installe grub dessus
Idem sdc du début (partitionnement)
On intègre ce disque dans la grappe (qui ne sera plus en mode dégradé)
Et on peux prendre un café/bière devant la reconstruction
Il ne reste plus qu'a installer grub sur tous les disques
Et insérer le disque de spare (Pour le disque de 2T (1 partition 1T spare + 1T pour TDCPB))
Une partition de 1T (vérifier le nombre d'octets par rapport aux WD) de type raid + Une partition du reste de type Linux
Benchs sur les disques velocirators en raid5
Lecture
0+16080 records inMB/s] [===================================================================================] 188% 0+16080 records out 2107637760 bytes (2.1 GB) copied, 8.95594 s, 235 MB/s
Écriture
1.79GB 0:00:13 [ 133MB/s] [===================================================================================] 192% 0+14676 records in 0+14675 records out 1923497984 bytes (1.9 GB) copied, 13.828 s, 139 MB/s