Un ajout d’un disque dur durant un grow mdadm
Un grow mdadm est nécessaire qu’à deux moment. Le premier, vous faite un grow pour remplacer les disques durs existant par ceux de plus grande capacité. Le deuxième, lorsque vous ajouter un nouveau disque dur pour passer de 8To à 10To par exemple et que vous disposer d’un slot libre, chanceux 😉
Mais, l’opération sur le RAID à du être arrêtée par une coupure de courant… Si vous n’êtes pas équipé d’un UPS… Faite le! Mais pour cette fois, voici l’opération :
Voici donc l’état du RAID après redémarrage de la machine :
root@omv:~# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active (auto-read-only) raid5 sdb[0] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] 41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [6/6] [UUUUUU] unused devices: <none>
Pour reprendre le RAID à son état d’augmentation (reshape), voici la commande utilisée :
root@omv:~# mdadm --readwrite /dev/md0 root@omv:~# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[0] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] 41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [6/6] [UUUUUU] [========>............] reshape = 40.1% (4207616/10477056) finish=2.2min speed=45568K/sec
Voilà vous êtes sauvé, mais pensez à 3 choses à l’avenir :
- l’utilisation d’un fichier de sauvegarde de l’état du grow mdadm en lisant la suite de l’article
- Équipez vous d’un UPS!
- Mais surtout pensez à sauvegarder vos données essentielles ailleurs! Un RAID n’est en rien une garantie de protection des données! Il permet une tolérance au panne disque, un gain de bande passante, rien de plus.
Source : unix.stackexchange.com
Éviter la perte de données lors d’un grow mdadm
Le reshape lors d’un crash prend du temps et peu ne pas aboutir!
Tout d’abord il faut vérifier l’état de votre RAID mdadm avant de faire un grow! S’il y a un secteur défectueux cela va foirer à tous les coups…
Voici comment vérifier et lancer un check manuel du RAID :
root@omv:~# cat /sys/block/md0/md/sync_action idle root@omv:~# echo check > /sys/block/md0/md/sync_action root@omv:~# cat /sys/block/md0/md/sync_action check
Vous pouvez voir l’état d’avancement du check via mdstat :
root@omv:~# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] 52385280 blocks super 1.2 level 5, 512k chunk, algorithm 2 [6/6] [UUUUUU] [>....................] check = 1.0% (108552/10477056) finish=7.9min speed=21710K/sec unused devices: <none>
Une fois que c’est vérifié, pour éviter des problèmes lors d’un grow mdadm, le mieux est d’utiliser l’option de fichier de backup :
mdadm --grow --raid-devices=4 --backup-file=/root/grow_md1.bak /dev/md1
Cette option permet de reprendre un grow raid plus surement en cas d’arrêt de la machine.
Source : raid.wiki.kernel.org
Réduire le temps de synchronisation d’un RAID mdadm
Pour réduire le temps de synchronisation d’un RAID5 ou RAID6 mdadm lors d’un resync ou d’un grow, vous pouvez aller vérifier et modifier certains paramètres :
Vitesse min et max de la synchronisation mdadm
# sysctl dev.raid.speed_limit_min # sysctl dev.raid.speed_limit_max
C’est une valeur en Kio :
- le minimum peut être 50000 pour 50Mo/s
- Le maximum peut être mise à 500000 pour 500Mo/s si votre raid n’est pas utilisé actuellement
Vous gagnez un peu en performance avec ces options :
Façon old school :
echo 50000 > /proc/sys/dev/raid/speed_limit_min echo 500000 > /proc/sys/dev/raid/speed_limit_max
En utilisant sysctl :
sysctl -w dev.raid.speed_limit_min=50000 sysctl -w dev.raid.speed_limit_max=500000
Vous n’avez qu’à ajouter ces paramètres via le fichier /etc/sysctl.conf pour fixer au redémarrage de la machine.
Augmenter la taille de bloc
Cet option se fait pour chaque périphérique RAID mdadm, donc pour chaque mdX. Il s’agit du paramètre « readahead » qui est défini en bloc de 512 octets :
Pour un bloc de 32Mio :
blockdev --setra 65536 /dev/md0
Augmenter le cache
Pour moi, c’est option qui donne le meilleur résultat : l’optimisation de la taille du cache des tripes mdadm. L’option n’est donc valable que pour les RAID5 et RAID6.
La formule pour la taille est de la forme suivante :
memory_consumed = system_page_size * nr_disks * stripe_cache_size
Un nombre intéressant est 16Mio, si vous ne voulez pas aller plus loin. Voici pour md0 :
# echo 16384 > /sys/block/md0/md/stripe_cache_size
Vous réduirez déjà par 2 le temps de synchronisation comme dans mon cas :
root@omv:~# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] 52385280 blocks super 1.2 level 5, 512k chunk, algorithm 2 [6/5] [_UUUUU] [======>..............] recovery = 32.7% (3427852/10477056) finish=9.9min speed=11788K/sec unused devices: <none> root@omv:~# echo 16384 > /sys/block/md0/md/stripe_cache_size root@omv:~# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active raid5 sdb[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] 52385280 blocks super 1.2 level 5, 512k chunk, algorithm 2 [6/5] [_UUUUU] [========>............] recovery = 40.5% (4244444/10477056) finish=4.0min speed=25918K/sec
Source : cyberciti.biz
Avec tout ça, vous êtes sur la bonne voie!
Laisser un commentaire