1 votes

Dell Perc 6i tableau raid5: remplacer les lecteurs et étendre VD?

J'ai un Dell T300 avec un Perc 6i, auquel sont connectés 3 disques de 500 Go. Ils sont assemblés en un VD raid 5 d'environ 1000 Go. Cette configuration fonctionne bien, cependant le système se remplit et j'aimerais augmenter la capacité.

Mon idée était quelque chose comme ce qui suit:

  1. Ajouter un nouveau disque de 2 To en tant que disque de secours à chaud du tableau
  2. Retirer l'un des disques de 500 Go, afin que le disque de 2 To le remplace
  3. Une fois la reconstruction terminée, répéter le processus jusqu'à ce qu'il ne reste que des disques de 2 To dans le tableau
  4. Etendre la taille du tableau pour remplir les disques de 2 To, ce qui rendra le VD d'environ 4 To.

Cependant, en consultant la documentation, je ne trouve aucune information sur le point 4. Le Perc 6i est-il capable d'étendre un tableau raid5? Comment?

Ou dois-je procéder complètement différemment pour atteindre mon objectif?

1voto

Je réalise que cette question est maintenant ancienne, mais elle n'a jamais été en fait répondue, et j'aurais pu utiliser un guide quand j'avais besoin de faire quelque chose de similaire. Donc, dans l'intérêt de répondre à la question du PO avec des faits plutôt qu'avec des opinions, voici comment j'ai mis à niveau un ensemble RAID5 existant à 3 disques sur un Dell PE R430 avec un PERC H730P (alias MegaRAID SAS-3 3108 rev2) en utilisant perccli64 v7.1327 s'exécutant sur le noyau Linux 4.15.

Pour référence, ma topologie :

  • Contrôleur 0
  • Boîtier 32
  • Emplacements 1, 2, 3 (l'emplacement 0 contient un SSD)
  • Ancienne taille du disque dur 4 To (3,637 TiB) x3
  • Taille du Vol 0 7,276 TiB (avant l'expansion)
  • Nouvelle taille du disque dur : 12 To (10,913 TiB)

Veuillez faire attention à la différence entre Terabyte (TB ou 10^12) et Tebibyte (TiB ou 2^40). perccli64 affiche les tailles en Tebibytes, mais utilise "TB" comme suffixe. Je sais... je n'aime pas ça non plus.

Contexte : avec un volume RAID5 d'environ 8 To, nous manquions d'espace. J'avais calculé qu'un volume de 20 TiB était nécessaire, donc j'ai commandé trois disques durs SATA HGST de 12 To. Le plan :

  • Remplacer 1 disque, laisser le volume se reconstruire.
  • Répéter pour le disque 2
  • Répéter pour le disque 3
  • Étendre l'ensemble pour utiliser les disques de plus grande taille
  • Redimensionner le(s) système(s) de fichiers existant(s) pour utiliser le volume plus grand
  • Faire tout cela alors que le système est en fonctionnement et sans accès à iDRAC

Avec les PERCs, il est possible de simplement retirer un disque actif et en insérer un de remplacement, mais je dirigeais cela à travers des mains intelligentes, et je voulais être parfaitement clair sur quel disque retirer, donc j'ai d'abord mis un seul disque hors ligne, en commençant par l'emplacement 1, en exécutant

perccli64 /c0/e32/s1 set offline

AVIS IMPORTANT : cela met le RAID5 dans un état dégradé ! Je recommande de regarder d'abord les statistiques SMART, et si un disque montre des signes d'erreurs, remplacer celui-ci en premier. Si deux disques ou plus montrent des indications de défaillance imminente, ne dégradez pas l'ensemble sans un plan de DR en place et une sauvegarde complète validée et accessible facilement. En fait, une personne intelligente ferait cela de toute façon. Vous pouvez vérifier les stats SMART (après avoir installé smartmontools) avec :

smartctl -a /dev/sdb -d megaraid,n

(remplacez le dernier n par l'emplacement que vous souhaitez examiner).

Une fois hors ligne, pour faciliter l'identification du disque par les mains intelligentes, flasher la LED de localisation avec

perccli64 /c0/e32/s1 start locate

Ensuite, la personne qui se trouve au serveur peut retirer le disque clignotant et en mettre un nouveau. En exécutant :

perccli64 /c0/e32/s1 show

devrait montrer d'abord le disque avec un état "Ofln" (Hors ligne), ensuite non disponible tant qu'aucun n'est présent, ensuite un état "Rbld" (Reconstruction) une fois que le nouveau disque est inséré, et enfin "Onln" (En ligne) une fois la reconstruction terminée.

perccli64 /c0/e32/s1 show rebuild

montrera un pourcentage de progression pendant la reconstruction (ne faites pas confiance aux estimations de temps), et

perccli64 /c0/v0 show

affichera le volume comme "Dgrd" (Dégradé) pendant la reconstruction, puis "Optl" (Optimal) une fois terminée. Mes disques sont SATA, et la charge système est modérément lourde, mais la reconstruction de la partie 4 To du volume sur les nouveaux disques n'a pris qu'environ 15 heures pour chaque disque.

Attendez que l'ensemble soit optimal, puis répétez les mêmes étapes pour les disques restants, dans mon exemple, les emplacements /c0/e32/s2 et /c0/e32/s3.

Une fois que tous les disques sont remplacés, votre topologie devrait montrer un ensemble de volumes d'array optimal composé de disques durs plus grands mais toujours avec la taille d'array plus petite d'origine, dans mon cas 7,276 TiB (affiché incorrectement en tant que TB, pas TiB). L'étape suivante consiste à étendre l'array lui-même, mais vous devrez d'abord faire un peu de calcul...

La commande d'extension perccli64 est assez mal documentée. La seule aide donnée est :

Syntaxe : perccli /cx/vx expand Size= [expandarray]

  DESCRIPTION : Étend le VD à la taille spécifiée dans l'array

  OPTIONS :
    expandarray - étendre l'array si possible pour accommoder la taille donnée
    Size - Si le format de taille n'est pas mentionné, la taille donnée sera traitée en Mo

Ce qui n'est pas clair dans la sortie d'aide, c'est que le paramètre Size, qui est requis, est la taille À AJOUTER à l'array, pas la taille désirée après l'expansion. Nous voulons lui donner la taille du nouvel array en Mio, moins la taille de l'ancien array en Mio. Dans mon cas, 12 To (en réalité 12 000 138 625 024 octets, comme indiqué par smartctl) moins 4 To (en réalité 4 000 781 611 008) donne 7 999 357 014 016. Un RAID5 de trois disques est le double de cela à 15 998 714 028 032 octets, et divisé par 2^20 donne 15 257 562 Mio. Si vous spécifiez trop, il échouera en indiquant un espace insuffisant. Pour éviter cela, retirez quelques gigas, car il arrondit au pourcentage supérieur (!!!) de l'espace total de toute façon... Comme je l'ai dit, la commande d'extension est mal documentée, c'est pourquoi je partage ce que j'ai appris ici.

L'option "expandarray" semble être nécessaire uniquement lorsque la taille de base du disque a changé, comme c'est le cas ici, car en essayant de l'exécuter sans cette option a renvoyé une erreur indiquant un espace insuffisant, mais avec une note supplémentaire indiquant "étendre l'array pour obtenir l'espace supplémentaire". Enfin, un message de diagnostic utile ! J'ai donc exécuté

perccli64 /c0/v0 expand Size=15250000 expandarray

ce qui a rapidement retourné un succès car cela a lancé une tâche d'initialisation en arrière-plan (BGI). Le BGI signifie que le nouvel espace est disponible immédiatement, et vous pouvez visualiser la progression de l'initialisation avec

perccli64 /c0/v0 show bgi

Ce résultat est très mauvais pour estimer le temps restant, car il montre un pourcentage qui commence par la partie qui était déjà existante comme déjà terminée. Je pense qu'il considère la première partie comme initialisée rapidement, et l'inclut lors de l'estimation du temps restant pour la partie qui doit en fait être écrite sur le disque. Alors que 4 To ont pris 15 heures auparavant, et que c'est encore 8 To supplémentaires par disque, je m'attendais à ce que cela prenne environ 30 heures, mais cela pourrait prendre beaucoup plus de temps car il s'exécute à une priorité d'arrière-plan plus basse. Je ne sais pas combien de temps cela a vraiment pris dans mon cas.

Alors que le contrôleur rend magiquement l'espace disponible immédiatement en exécutant la tâche d'initialisation en arrière-plan, nous devons quand même faire en sorte que le système d'exploitation reconnaisse la nouvelle taille du volume. Commencez par une analyse du périphérique SCSI en envoyant '1' à /sys/class/block/sdb/device/rescan (en spécifiant le nom du périphérique correct s'il ne s'agit pas de sdb), après quoi il affiche la nouvelle taille plus grande lors de l'exécution de

blockdev --getsize64 /dev/sdb

Cela termine la partie difficile. Les étapes restantes utilisent des commandes Linux standard. Il existe de nombreux autres tutoriels sur ces étapes, et chaque système est différent, donc je n'entrerai pas dans les détails minutieux. Voici ce qui a fonctionné pour moi. J'ai utilisé parted pour corriger le GPT (il offre la première fois où il essaie d'imprimer la table), puis ajouter une nouvelle partition commençant après le dernier secteur utilisé et se terminant à la fin du disque étendu (commande parted "mkpart pv2 15625877504s 46873438207s"). Encore une fois, vous devrez faire des calculs pour obtenir les bonnes valeurs de secteur. Ensuite, j'ai utilisé la nouvelle partition avec

pvcreate /dev/sdb5

vgextend volgrp /dev/sdb5

lvextend -l +95%FREE /dev/volgrp/logvol

resize2fs /dev/volgrp/logvol

Après cela, la sortie df montrait environ 14 To d'espace supplémentaire, et mon problème de capacité était résolu. Notez que j'ai réservé 5% de l'espace libre au cas où j'aurais besoin d'étendre l'un des autres LV également.

0voto

Sven Points 95985

RAID5 est mort. Ne l'utilisez pas si vous aimez vos données, surtout pas avec des disques de 2 To. De plus, bien que votre méthode puisse fonctionner (je ne connais pas le Perc6i et votre point 4 non plus), cela prendra énormément de temps et pendant ce temps, vos disques seront constamment actifs.

En fonction de vos besoins en production, je vous recommanderais de mettre vos données sur un lecteur temporaire, de retirer les anciens disques, de créer un nouveau RAID (6 ou 10) sur les nouveaux disques et de les remettre là-bas à partir du lecteur temporaire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X