Mémo MegaCli : Utilisation de contrôleur RAID Dell/LSI

Les contrôleurs RAID LSI sont intégrés chez plusieurs constructeurs et nous les retrouvons, entre autre, sur la quasi totalité des serveurs Dell (PowerEdge, T et R XXX, etc) sous les noms de PERC XX ou HYYY.

Ces cartes offrent de grandes possibilités et LSI met à disposition des utilisateurs l’outil MegaCli (et MegaCli64) pour gérer les fonctionnalités de la carte.

Malheureusement, MegaCli est peu ergonomique et rebute plus d’un administrateur système.

Cet article propose un pense bête, une boîte à outils, sur l’utilisation de megacli sous Linux/BSD.

Après un retour rapide sur l’installation de l’outil, différentes commandes seront présentées (celles propre au contrôleur, celles liées aux disques physiques, celles liées aux volumes RAIDs, etc) avant de terminer par quelques exemples.

Note 1 : Bien qu’ayant cherché à être le plus complet possible, de nombreux cas ne sont pas couverts ; n’hésitez pas a compléter cet article avec vos expériences / questions.
Note 2 : Le menu est volontairement enroulé pour éviter de désespérer le lecteur 😉

Table des matières

Installation

L’installation de MegaCli sur un système Linux à déjà été abordé dans les colonnes de ce site (article « Installation Debian sur DELL R710, R410, R510, RXXX (Mise à jour)« ) aussi nous passerons rapidement cette étape.

Debian

Sur Debian vous pourrez utiliser le dépôt « HWraid » (http://hwraid.le-vert.net/) pour utiliser une version packagée du logiciel.

srv ~ # echo "deb http://hwraid.le-vert.net/debian squeeze main" >> /etc/apt/sources.list
srv ~ # apt-get update
...
srv ~ # apt-get install megacli
...

Red-Hat et dérivés

Sur les Red-Hat like le paquet peut être trouvé en ajoutant les dépôts EPEL (voir Ajout des miroirs EPEL (Extra Packages for Enterprise Linux) sous Red Hat like (CentOS, RHEL, SL, …)).

Toutes versions

Si vous préférez utiliser les binaires mis en ligne par LSI, télécharger les (sur http://www.lsi.com), choisissez “PRODUCTS” dans le menu horizontal supérieur, et sélectionner “6Gb/s SATA+SAS RAID“.
Sur la nouvelle page sélectionnez un contrôleur « MegaRAID SAS 9260-xx” où “xx” n’a aucune importance (ex : MegaRAID SAS 9260-16i, 16 ports internal, PCIe 2.0).
Sur la page de la carte, rendez-vous dans « SUPPORT & DOWNLOADS“ et dans “Management Software and Tools” téléchargez la version de MegaCli.

Une fois téléchargée extraire l’archive zip. La version Linux de megacli est diffusé au format RPM.

~/Downloads $ unzip 8.07.07_MegaCLI.zip 
Archive:  8.07.07_MegaCLI.zip
...
  inflating: linux/MegaCli-8.07.07-1.noarch.rpm  
...

Extraire le RPM (voir Extraction de paquets “.deb”, “.rpm”, “.txz”, etc. en cas de besoin) :

fhh@mafalda ~/Downloads $ cd linux/
fhh@mafalda ~/Downloads/linux $ rpm2cpio MegaCli-8.07.07-1.noarch.rpm | bsdtar -xf -
fhh@mafalda ~/Downloads/linux $ ls
MegaCli-8.07.07-1.noarch.rpm  opt

Déposer enfin le contenu de ./opt sur votre serveur avant d’adapter les droits de l’utilitaire et de créer un lien symbolique dans /sbin pour simplifier l’utilisation de l’outil :

fhh@mafalda ~/Downloads/linux $ scp -r opt/MegaRAID root@cosyverif:/opt/
MegaCli                                       100% 2412KB   2.4MB/s   00:00    
MegaCli64                                     100% 2653KB   2.6MB/s   00:00    
libstorelibir-2.so.13.05-0                    100%  498KB 498.2KB/s   00:00    
fhh@mafalda ~/Downloads/linux $ ssh root@cosyverif
srv ~ # chown -R root.root /opt/MegaRAID
srv ~ # find /opt/MegaRAID -type f -exec chmod 700 {} \;
srv ~ # find /opt/MegaRAID -type d -exec chmod 2700 {} \;
srv ~ # ln -s /opt/MegaRAID/MegaCli/MegaCli64 /sbin/megacli
srv ~ # megacli 
Fatal error - Command Tool invoked with wrong parameters
Exit Code: 0x01

Généralités

Dans l’ensemble, les noms des options passées aux commandes sont structurées afin de faciliter la construction des instructions. Les options commencent par :

  • Adp (Adaptateur) pour les commandes propres aux adaptateurs (la carte RAID) ; ex : AdpAllInfo, AdpCount, AdpGetTime, etc ;
  • Cfg (Configuration) pour les commandes propres à la configuration de la carte ; ex : CfgDsply, CfgLdAdd, etc ;
  • Pd ou PD (Physical Drive) pour les instructions destinées aux disques durs physique (le matériel) ; ex : PdLocate, PDClear, PDOffline, etc ;
  • Ld ou LD (Logical Drive) pour ce qui concerne les volumes logiques (les volumes RAID) ; ex : LDGetNum, LDInit, LdPdInfo, etc ;

Les commandes affichent généralement un texte répondant à la demande et terminent par un code de retour précédé par la mention « Exit Code: » :

srv ~ # megacli 
Fatal error - Command Tool invoked with wrong parameters
Exit Code: 0x01

Généralement, un code de retour différent de 0 signifie qu’un problème est survenu lors du traitement de la commande tandis qu’un 0 signifie que la commande a réussi.

Pour alléger la lecture, le code de sortie des commandes ne sera pas systématiquement affiché dans la suite de cet article.

Afficher l’aide

megacli -h

Commandes du contrôleur

Lister les adaptateurs

Cette commande donne le nombre de contrôleurs disponibles sur la machine.

srv ~ # megacli -adpCount
 
Controller Count: 1.
 
Exit Code: 0x01

Le code de retour correspond au nombre de contrôleurs détectés. Ici un contrôleur. La numérotation des contrôleurs commence à 0.

Informations sur la carte

Afficher toutes les informations sur l’adaptateur :

srv ~ # megacli -adpallinfo -aALL
 
Adapter #0
 
==============================================================================
                    Versions
                ================
Product Name    : PERC H710 Mini
Serial No       : 29F026R
FW Package Build: 21.1.0-0007
…
                Device Present
                ================
Virtual Drives    : 1 
  Degraded        : 0 
  Offline         : 0 
Physical Devices  : 7 
  Disks           : 6 
  Critical Disks  : 0 
  Failed Disks    : 0 
…

Note : L’option -aALL affiche les informations sur tous les adaptateurs. Pour les informations du premier contrôleur, nous aurions précisé son numéro « -a0 ».

Informations sur le port PCI de connexion du contrôleur 0

srv ~ # megacli -AdpGetPciInfo -a0
 
PCI information for Controller 0
--------------------------------
Bus Number      : ab20
Device Number   : 0
Function Number : a0

Vérifier l’heure

Obtenir l’heure de l’adaptateur 1 :

srv ~ # megacli -AdpGetTime -a0
 
Adapter 0:
    Date: 03/18/2013
    Time: 16:50:56

Pour changer l’heure, utiliser l’option AdpSetTime :

megacli -AdpSetTime yyyymmdd hh:mm:ss -aN

Logs des adaptateurs

Consulter les logs des adaptateurs :

srv ~ # megacli -AdpAlILog -aALL
…

Pour consulter les évènements intervenus sur l’adaptateur 0, vous pouvez les enregistrer dans un fichier spécifique :

megacli -AdpEventLog <précision> -f <fichier_de_sortie> -a0

Avec précision pouvant être :

  • GetEvents : obtention des évènements ;
  • GetSinceShutdown : évènements depuis l’arrêt ;
  • GetSinceReboot : évènements depuis le dernier reboot ;
  • GetLatest : les derniers évènements ;
  • Clear : nettoyage du journal ;

La criticité des évènements consultés peut être précisée parmi : info, warning, critical ou fatal.

srv ~ # megacli -AdpEventLog -GetEvents -critical -fatal -f evenements.log -aALL
 
Success in AdpEventLog
srv ~ # cat  evenements.log
…
seqNum: 0x00004c23
Time: Fri Jan 18 12:48:38 2013
 
Code: 0x000000fb
Class: 2
Locale: 0x01
Event Description: VD 01/1 is now DEGRADED
Event Data:
===========
Target Id: 1
...

Diagnostique

Lancer un diagnostique de l’adaptateur 0 :

srv ~ # megacli -AdpDiag -a0
 
Performing Diagnostic on Controller 0.
 It will take 20 seconds to complete. Please wait...
Diagnostic Completed on Controller 0.

Voir les logs pour les résultats.

Enclosure Device ID

Il s’agit du numéro (IDentifiant) du logement des disques. Cette information, « Enclosure Device ID », peut être obtenue en interrogeant le contrôleur :

srv ~ # megacli -EncInfo -a0
 
    Number of enclosures on adapter 0 -- 1
 
    Enclosure 0:
    Device ID                     : 32
    Number of Slots               : 8
…

Identifiant de l’enceinte est 32 et elle dispose de 8 slots (emplacement pour disques physique).

Commandes pour disques physiques

Compter les disques physiques

Nombre de disque(s) sur le contrôleur 0 :

srv ~ # megacli -PDGetNum -a0
 
 Number of Physical Drives on Adapter 0: 6

6 disques sur l’adaptateur 0.

Lister les Disques physiques

Lister les disques disponibles sur le contrôleur 0 :

srv ~ # megacli -pdlist -a0
 
…
Enclosure Device ID: 32
Slot Number: 5
Enclosure position: 1
Device Id: 5
WWN: 5000C50054C07E80
Sequence Number: 1
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SAS
 
Raw Size: 558.911 GB [0x45dd2fb0 Sectors]
Non Coerced Size: 558.411 GB [0x45cd2fb0 Sectors]
Coerced Size: 558.375 GB [0x45cc0000 Sectors]
Sector Size:  0
Firmware state: Unconfigured(good), Spun Up
Device Firmware Level: ES65
Shield Counter: 0
Successful diagnostics completion on :  N/A
SAS Address(0): 0x5000c50054c07e81
SAS Address(1): 0x0
Connected Port Number: 1(path0) 
Inquiry Data: SEAGATE ST3600057SS     ES656SL4DQ2C            
FDE Capable: Not Capable
FDE Enable: Disable
Secured: Unsecured
Locked: Unlocked
Needs EKM Attention: No
Foreign State: None 
Device Speed: 6.0Gb/s 
Link Speed: 6.0Gb/s 
Media Type: Hard Disk Device
Drive Temperature :54C (129.20 F)
PI Eligibility:  No 
Drive is formatted for PI information:  No
PI: No PI
Port-0 :
Port status: Active
Port's Linkspeed: 6.0Gb/s 
Port-1 :
Port status: Active
Port's Linkspeed: Unknown 
Drive has flagged a S.M.A.R.T alert : No

Informations sur un disque physique

La syntaxe est du type :

megacli -pdinfo -PhysDrv[E:S] -aC

Le disque est localisé par le “Enclosure Device ID” (E) et le numéro du slot (“Slot Number” S) sur le contrôleur “C”.

Exemple :

affichage de la liste de tous les disques :

srv ~ # megacli -pdlist -a0
…
Enclosure Device ID: 32
Slot Number: 5
Enclosure position: 1
Device Id: 5
WWN: 5000C50054C07E80
Sequence Number: 1
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SAS
…

Affichage des informations du disque sur le slot 5 sur le contrôleur 0 (Enclosure Device ID: 32) :

srv ~ # megacli -pdinfo -PhysDrv[32:5] -a0
 
Enclosure Device ID: 32
Slot Number: 5
Enclosure position: 1
Device Id: 5
WWN: 5000C50054C07E80
Sequence Number: 1
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SAS
…

Passer un disque « offline »

Cette opération revient à désactiver un disque :

srv ~ # megacli -PDOffline -PhysDrv [32:4] -a0
 
Adapter: 0: EnclId-32 SlotId-4 state changed to OffLine.

Passer un disque « online »

Activation d’un disque désactivé :

srv ~ # megacli -PDOnline -PhysDrv [32:4] -a0

Contrôler la reconstruction

Vous pouvez à tous moment voir l’état de la reconstruction d’un disque membre d’un volume RAID :

srv ~ # megacli -pdrbld -showprog -physdrv[32:5] -a0
 
Rebuild Progress on Device at Enclosure 32, Slot 5 Completed 10% in 5 Minutes.

Ou en mode interactif :

srv ~ # megacli -pdrbld -progdsply -physdrv[32:5] -a0
 
      Rebuild progress of physical drives...
 
  Enclosure:Slot               Percent Complete                       Time Elps
       032 :05     ######*****************13 %*********************** 00:06:59
 
    Press <ESC> key to quit...

Marquer un disque comme absent

srv ~ # megacli -PDMarkMissing -PhysDrv[32:4] -a0

Le disque 4 (occupant la position 2 dans le RAID de l’exemple ci dessous) a désormais disparu, aucune information ne peut être obtenue de lui :

srv ~ # megacli -ldpdinfo -a0 | grep -e '^PD:' -e 'Slot Number:' -e 'Virtual Drive:' -e 'Firmware state:'
...
Virtual Drive: 1 (Target Id: 1)
PD: 0 Information
Slot Number: 2
Firmware state: Online, Spun Up
PD: 1 Information
Slot Number: 3
Firmware state: Online, Spun Up
PD: 2 Information

Remplacer un disque disparu

Un disque peut être utilisé pour remplacer un disque absent.

Le disque est désigné par sont identifiant d’emplacement et le slot sur lequel il est connecté.

La matrice dans laquelle il est intégré est précisée (-arrayX ou X est le tableau dans lequel le disque sera inséré) et sa position est fixée (par -rowY où Y est la place du disque dans le tableau) :

srv ~ # megacli -PdReplaceMissing -PhysDrv[32:5] -array1 -row2 -a0
srv ~ # megacli -ldpdinfo -a0 | grep -e '^PD:' -e 'Slot Number:' -e 'Virtual Drive:' -e 'Firmware state:' -e 'RAID Level'
...
Virtual Drive: 1 (Target Id: 1)
RAID Level          : Primary-5, Secondary-0, RAID Level Qualifier-3
PD: 0 Information
Slot Number: 2
Firmware state: Online, Spun Up
PD: 1 Information
Slot Number: 3
Firmware state: Online, Spun Up
PD: 2 Information
Slot Number: 5
Firmware state: Offline
srv ~ # megacli -pdonline -physdrv[32:5] -a0
 
EnclId-32 SlotId-5 state changed to OnLine.
srv ~ # megacli -ldpdinfo -a0 | grep -e '^PD:' -e 'Slot Number:' -e 'Virtual Drive:' -e 'Firmware state:' -e 'RAID Level'
...
Virtual Drive: 1 (Target Id: 1)
RAID Level          : Primary-5, Secondary-0, RAID Level Qualifier-3
PD: 0 Information
Slot Number: 2
Firmware state: Online, Spun Up
PD: 1 Information
Slot Number: 3
Firmware state: Online, Spun Up
PD: 2 Information
Slot Number: 5
Firmware state: Online, Spun Up

Dans cet exemple, nous plaçons le disque du slot 5 dans à la place 2 (-row2) du tableau 1 (-array1) du RAID.

La seconde commande liste les disques constituants les RAIDs.

Le disque est ensuite passé « online ».

Préparer l’extraction d’un disque

srv ~ # megacli -PdPrpRmv -PhysDrv[32:4] -a0
 
Prepare for removal Success

Ajouter un disque de secours (spare)

Pour ajouter un disque de secours (disque de « spare ») pour n’importe quel volume logique :

srv ~ # megacli -PDHSP -Set -PhysDrv [32:6] -a0
 
Adapter: 0: Set Physical Drive at EnclId-32 SlotId-3 as Hot Spare Success.

Quelque soit le volume logique perdant un disque, ce dernier sera remplacé par le disque ci dessus déclaré.

Ajouter un disque de secours dédié (spare)

Pour qu’un disque de spare soit dédié à un volume, utiliser l’option « Dedicated » lors de la déclaration du disque de secours :

srv ~ # megacli -PDHSP -Set -Dedicated -array1 -PhysDrv[32:4] -a0
 
Adapter: 0: Set Physical Drive at EnclId-32 SlotId-4 as Hot Spare Success.
srv ~ # megacli -LDInfo -L1 -a0
Virtual Drive: 1 (Target Id: 1)
...
Number of Dedicated Hot Spares: 1
    0 : EnclId - 32 SlotId - 4

Supprimer un disque de secours (spare)

srv ~ # megacli -PDHSP -Rmv -PhysDrv [32:4] -a0
 
Adapter: 0: Remove Physical Drive at EnclId-32 SlotId-4 as Hot Spare Success.

Utiliser SMART

S.M.A.R.T. permet de contrôler l’état d’usure de vos disque physiques. Voir « SMART : Test des disques sur contrôleur LSI/Perc (serveur DELL) » pour l’utilisation de SMART.

Localiser un disque physique

Vous pouvez faire clignoter les voyants en façade d’un disque pour le localiser précisément dans votre boîtier. Voir « megacli : Identifier un disque sur un serveur DELL » pour plus de détails.

Commandes sur les volumes RAID

Comptabiliser les volumes logiques

Cela donne le nombre de volumes (RAID) créés :

srv ~ # megacli -LDGetNum -a0
 
 Number of Virtual Drives Configured on Adapter 0: 1

Information sur les disques logiques

srv ~ # megacli -LDInfo -Lall -a0
 
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
Size                : 465.25 GB
Sector Size         : 512
Mirror Data         : 465.25 GB
State               : Optimal
Strip Size          : 64 KB
Number Of Drives    : 2
Span Depth          : 1
Default Cache Policy: WriteBack, ReadAdaptive, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAdaptive, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy   : Disk's Default
Encryption Type     : None
Default Power Savings Policy: Controller Defined
Current Power Savings Policy: None
Can spin up in 1 minute: Yes
LD has drives that support T10 power conditions: No
LD's IO profile supports MAX power savings with cached writes: No
Bad Blocks Exist: No
Is VD Cached: Yes
Cache Cade Type : Read Only

Par extention obtenir les informations sur le premier disque logique :

srv ~ # megacli -LDInfo -L0 -a0
…

Une information en particulier

Optenir une information en particulier (ex : la configuration du cache) :

srv ~ # megacli -LDGetProp -Cache -L0 -aALL
 
Adapter 0-VD 0(target id: 0): Cache Policy:WriteBack, ReadAdaptive, Direct, No Write Cache if bad BBU

Quels disques constituent un volume logique ?

Les disques physique membre d’un volume logique sont optenu par l’option « ldpdinfo » :

srv ~ # megacli -ldpdinfo -a0
 
Adapter #0
 
Number of Virtual Disks: 1
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
Size                : 465.25 GB
Sector Size         : 512
Mirror Data         : 465.25 GB
State               : Optimal
Strip Size          : 64 KB
Number Of Drives    : 2
…
PD: 0 Information
Enclosure Device ID: 32
Slot Number: 0
Drive's position: DiskGroup: 0, Span: 0, Arm: 0
…
PD: 1 Information
Enclosure Device ID: 32
Slot Number: 1
Drive's position: DiskGroup: 0, Span: 0, Arm: 1
Enclosure position: 1

Création d’un RAID 5

Dans cet exemple, nous créons un volume logique en RAID 5 (-r5) composé des disques physiques connectés aux slots « 2, 3 et 4 » du premier contrôleur (-a0).
Nous lui dédions le disque du slot 5 en secours (-Hsp[32:5]).

srv ~ # megacli -CfgLdAdd -r5[32:2,32:3,32:4] -Hsp[32:5] -Cache -a0
 
Adapter 0: Created VD 1
Vd association is not supported 
Adapter: 0: Set Physical Drive at EnclId-32 SlotId-5 as Hot Spare Success.
 
Adapter 0: Configured the Adapter!!

Si vous ne souhaitez pas déclarer de disque de spare à votre RAID, ne pas préciser l’option « Hsp ».

Vérification de la création du volume :

srv ~ # megacli -LDGetNum -a0
 
 Number of Virtual Drives Configured on Adapter 0: 2

Nommer un volume logique

Attribution d’un nom à un volume logique

srv ~ # megacli -LDSetProp -Name data -L1 -a0
 
Set name to data on Adapter 0, VD 1 (target id: 1) success

Vérification de l’affectation du nom :

srv ~ # megacli -ldinfo -L1 -a0
…
Name                :data
…

Initialisation du volume

srv ~ # megacli -LDInit -Start -L1 -a0
 
Start Initialization on Virtual Drive 1 (target id: 1) Success.

Détections des volumes sous Linux

Forcer le système à re détecter les caractéristiques d’un volume

echo 1 > /sys/block/sda/device/rescan

Lancer un test de consistance

srv ~ # megacli -LDCC -Start -L0 -a0
 
Start Check Consistency on Virtual Drive 0 (target id: 0) Success.

Contrôler l’avancée du test de consistance :

srv ~ # megacli -LDCC -ShowProg -L0 -a0
 
Check Consistency on VD #0 (target id #0) Completed 12% in 1 Minutes.

Voir l’état du contrôle en temps réel :

srv ~ # megacli -LDCC -ProgDsply -L0 -a0 
 Progress of Virtual Drives...
 
  Virtual Drive #              Percent Complete                       Time Elps
          0         ############           24 %                        00:03:08
 
    Press <ESC> key to quit...

Détruire un volume logique

srv ~ # megacli -CfgLdDel -L1 -Force -a0
 
Adapter 0: Deleted Virtual Drive-1(target id-1)

« -Force » Est parfois nécessaire.

Sélectionner le volume logique à booter

Pour sélectionner le volume logique sur lequel démarrer, utiliser l’option « AdpBootDrive ».

Sur quel volume boot la machine ?

srv ~ # megacli -AdpBootDrive -Get -a0
 
Adapter 0: Boot Virtual Drive - #0 (target id - 0).

Changer la cible (target) pour démarrer sur le second volume (numéroté 1) :

srv ~ # megacli -AdpBootDrive -Set -L1 -a0
 
Boot Virtual Drive is set to #1 (target id #1) on Adapter 0

Vérification :

srv ~ # megacli -AdpBootDrive -Get -a0
 
Adapter 0: Boot Virtual Drive - #1 (target id - 1).

Configuration des « caches »

En général, la carte dispose d’un système de cache protégé par une batterie. Les disques physiques disposent également d’un cache.

Note : Activer tous les caches peut être problématique en cas d’arrêt brusque de la machine.

Consulter l’état du cache d’un RAID

srv ~ # megacli -LDGetProp -Cache -LALL -a0
 
Adapter 0-VD 0(target id: 0): Cache Policy:WriteBack, ReadAdaptive, Direct, No Write Cache if bad BBU
Adapter 0-VD 1(target id: 1): Cache Policy:WriteBack, ReadAdaptive, Direct, Write Cache OK if bad BBU

Ici, on constate que le cache est activé même si la batterie de la carte est défaillante (“Write Cache OK if bad BBU”). Ceci peut provoquer des pertes de données. Il est donc préférable de désactiver le cache en cas de dysfonctionnement de la batterie.

Désactivation du cache sur défaillance batterie

srv ~ # megacli -LDSetProp NoCachedBadBBU -L1 -a0
 
Set No Write Cache if bad BBU on Adapter 0, VD 1 (target id: 1) success

Vérification :

srv ~ # megacli -LDGetProp -Cache -L1 -a0
 
Adapter 0-VD 1(target id: 1): Cache Policy:WriteBack, ReadAdaptive, Direct, No Write Cache if bad BBU

Cache des disques

Si le serveur n’est pas ondulé, il est préférable de désactiver le cache propre aux disques afin d’éviter toute perte de données en cas d’arrêt brusque.

Consultation de l’état des caches disques

srv ~ # megacli -LDGetProp -DskCache -LALL -aALL
 
Adapter 0-VD 0(target id: 0): Disk Write Cache : Disk's Default
Adapter 0-VD 1(target id: 1): Disk Write Cache : Disk's Default

Le cache des disques est activé.

Désactiver le cache des disques sur le volume logique 1 :

srv ~ # megacli -LDSetProp -DisDskCache -L1 -a0
 
Set Disk Cache Policy to Disabled on Adapter 0, VD 1 (target id: 1) success

Vérification

srv ~ # megacli -LDGetProp -DskCache -LALL -aALL
 
Adapter 0-VD 0(target id: 0): Disk Write Cache : Disk's Default
Adapter 0-VD 1(target id: 1): Disk Write Cache : Disabled

Batterie du contôleur

Consulter l’état de la batterie

srv ~ # megacli -AdpBbuCmd -a0
 
BBU status for Adapter: 0
 
BatteryType: BBU
Voltage: 3934 mV
Current: 0 mA
Temperature: 38 C
Battery State: Optimal
…
Relative State of Charge: 98 %
Charger Status: Complete
Remaining Capacity: 461 mAh
Full Charge Capacity: 473 mAh
…

Patrol Read

Le patrol read est une fonctionnalité essayant de détecter le dysfonctionnement d’un disque dur avant la panne (qui pourrait entrainer une perte de données).

Le système, composé d’une série de tests est éxécuté toute les 168 heures par défaut et peut consommer jusqu’à 30% des ressources d’entrée sortie.

Cette valeur peut être modifiée pour limiter l’impacte de cette fonctionnalité sur les performances.

Consulter l’état du Patrol Read

srv ~ # megacli -AdpPR -Info -a0
 
Adapter 0: Patrol Read Information:
 
Patrol Read Mode: Auto
Patrol Read Execution Delay: 168 hours
Number of iterations completed: 6 
Current State: Stopped
Patrol Read on SSD Devices: Disabled

Ressources d’entrées sorties consommées

srv ~ # megacli -AdpGetProp PatrolReadRate -a0
 
Adapter 0: Patrol Read Rate = 30%

Fixer les ressources d’entrées sorties consommées à 2% :

srv ~ # megacli -AdpSetProp PatrolReadRate 2 -a0
 
Adapter 0: Set Patrol Read Rate to 2% success.

Lancer une séquence de test manuellement

srv ~ # megacli -AdpPR -Start -a0
 
Adapter 0: Patrol Read is started.

Désactiver le test automatique

srv ~ # megacli -AdpPR -Dsbl -a0

Arrêter une séquence de test

srv ~ # megacli -AdpPR -Stop -a0

Alarmes du contrôleur

Consulter l’état de l’alarme

srv ~ # megacli -AdpGetProp AlarmDsply -a0
 
Adapter 0: Alarm Status is Missing

Cet adaptateur ne dispose pas d’alarme.

Activer l’alarme :

srv ~ # megacli -AdpSetProp AlarmEnbl -a0
…

Pour désactiver l’alarme remplacer “AlarmEnbl” (Alarm Enable) par “AlarmDsbl” (Alarm Disable). Pour le passage en mode silencieux utiliser l’option “AlarmSilence”.

Votre contrôleur peut ne pas disposer d’alarme. Dans ce cas, les commandes échouerons avec un message explicite :

srv ~ # megacli -AdpSetProp AlarmEnbl -a0
 
Adapter 0: Failed to Set Adapter Properties.
 
FW error description: 
  The required hardware component is not present.

Exemples d’utilisation

Dégradation d’un RAID 5 avec disque de secours

Déclarer un disque “offline” :

srv ~ # megacli -PDOffline -PhysDrv [32:4] -a0
 
Adapter: 0: EnclId-32 SlotId-4 state changed to OffLine.

Si un disque de spare est déclaré, le système reconstruit immédiatement le RAID.

Vérifier la liste des disques physique pour voir l’impacte de la sortie du disque :

srv ~ # megacli -pdlist -aALL
…
Enclosure Device ID: 32
Slot Number: 4
Enclosure position: 1
Device Id: 4
…
Firmware state: Unconfigured(good), Spun Up
…
Enclosure Device ID: 32
Slot Number: 5
Drive's position: DiskGroup: 1, Span: 0, Arm: 2
Enclosure position: 1
Device Id: 5
…
Firmware state: Rebuild
…

Le disque 4 est désormais marqué comme non configuré mais « bon » (“Unconfigured(good)”) et le disque 5 est en cours de reconstruction (“Rebuild”).

Pour confirmer ces informations interroger l’état de rebuild du disque 5 :

srv ~ # megacli -pdrbld -showprog -physdrv[32:5] -a0
 
Rebuild Progress on Device at Enclosure 32, Slot 5 Completed 10% in 5 Minutes.

Ou pour obtenir l’état en temps réel de la reconstruction :

srv ~ # megacli -pdrbld -progdsply -physdrv[32:5] -a0
 
      Rebuild progress of physical drives...
 
  Enclosure:Slot               Percent Complete                       Time Elps
       032 :05     ######*****************13 %*********************** 00:06:59
 
    Press <ESC> key to quit...

Si la reconstruction semble un peu lente, modifier les ressources qui lui sont allouées :

srv ~ # megacli -AdpGetProp RebuildRate -a0
 
Adapter 0: Rebuild Rate = 30%

Passage à 80% des ressources pour la reconstruction :

srv ~ # megacli -AdpSetProp \{RebuildRate -80\} -a0
 
Adapter 0: Set rebuild rate to 80% success.

Note : Attention en augmentant significativement le ratio alloué à la reconstruction, le système peu subir de conséquents ralentissements.

Préparer l’extraction d’un disque :

srv ~ # megacli -PdPrpRmv -PhysDrv[32:4] -a0                                  
 
Prepare for removal Success

Le disque peut être retiré en toute sécurité. Ce qui peut être vérifié en consultant l’état du disque :

srv ~ # megacli -pdInfo -PhysDrv[32:4] –aALL
 
Enclosure Device ID: 32
Slot Number: 4
Enclosure position: 1
Device Id: 4
…
Firmware state: Unconfigured(good), Spun down
…

L’état des volumes logique peut être visualisé également :

srv ~ # megacli -CfgDsply -a0
==============================================================================
Adapter: 0
Product Name: PERC H710 Mini
Memory: 512MB
BBU: Present
Serial No: 20A026R
==============================================================================
Number of DISK GROUPS: 2
 
DISK GROUP: 0
Number of Spans: 1
SPAN: 0
Span Reference: 0x00
Number of PDs: 2
Number of VDs: 1
Number of dedicated Hotspares: 0
Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
Size                : 465.25 GB
…
Physical Disk Information:
Physical Disk: 0
Enclosure Device ID: 32
...
Physical Disk: 1
Enclosure Device ID: 32
Slot Number: 1
...
DISK GROUP: 1
Number of Spans: 1
SPAN: 0
Span Reference: 0x01
Number of PDs: 3
Number of VDs: 1
Number of dedicated Hotspares: 0
...
Physical Disk Information:
Physical Disk: 0
Enclosure Device ID: 32
Slot Number: 2
…
Physical Disk: 1
Enclosure Device ID: 32
Slot Number: 3
…
Physical Disk: 2
Enclosure Device ID: 32
Slot Number: 5
…
Firmware state: Rebuild
...

En résumé :

  • l’adaptateur 0 dispose de 2 volumes logique (Number of DISK GROUPS: 2) :
  • le premier en RAID 1 (RAID Level) est composé de 2 diques (DISK GROUP: 0 puis Number of PDs: 2) situés sur les slots 0 et 1 ;
  • le second est composé de 3 disques en RAID 5 situé sur les slots 2, 3 et 5.
  • Le disque du slot 4 à bien été retiré et le disque de spare (slot 5) à bien pris sa place (en cours de reconstruction “Firmware state: Rebuild”).

Dégradation du volume

Un disque du RAID 5 à disparu, et le disque de spare prend sa place. Pendant la reconstruction du disque disparu sur le spare, l’état du volume logique est considéré comme dégradé :

srv ~ # megacli -pdrbld -showprog -physdrv[32:5] -a0
 
Rebuild Progress on Device at Enclosure 32, Slot 5 Completed 97% in 57 Minutes.
 
srv ~ # megacli -LDInfo L1 -a0
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 1 (Target Id: 1)
Name                :data
RAID Level          : Primary-5, Secondary-0, RAID Level Qualifier-3
…
State               : Degraded
…

Une fois le disque reconstruit, le volume logique repasse en état normal :

srv ~ # megacli -pdrbld -showprog -physdrv[32:5] -a0
 
Device(Encl-32 Slot-5) is not in rebuild process
srv ~ # megacli -LDInfo L1 -a0
...
State               : Optimal
…

Si le volume perd un disque suplémentaire, il sera dégradé et aucun disque de secours ne pourra venir prendre le relais :

srv ~ # megacli -PDOffline -PhysDrv [32:3] -a0
 
Adapter: 0: EnclId-32 SlotId-3 state changed to OffLine.
 
srv ~ # megacli -ldinfo L1 -a0
 
Adapter 0 -- Virtual Drive Information:
Virtual Drive: 1 (Target Id: 1)
…
State               : Degraded
…

Le disque peut ensuite être marqué comme manquant :

srv ~ # megacli -PDMarkMissing -PhysDrv[32:3] -a0
 
EnclId-32 SlotId-3 is marked Missing.

Ré intégration de disques dans les volumes RAID

Le disque 3 à été basculé en hors ligne, puis considéré comme perdu. L’ensemble du volume est à présent dégradé.

Le RAID 5 est désormais composé de 2 disques.

Pour réintégrer les disques une solution consiste à les ajouter comme hot spare (disque de secours à chaud) au volume RAID. La reconstruction commence alors immédiatement :

srv ~ # megacli -PDHSP -Set -PhysDrv [32:3] -a0
 
Adapter: 0: Set Physical Drive at EnclId-32 SlotId-3 as Hot Spare Success.
 
srv ~ # megacli -PDRbld -ShowProg -PhysDrv[32:3] -a0
 
Rebuild Progress on Device at Enclosure 32, Slot 3 Completed 10% in 5 Minutes.

Et après reconstruction le volume logique est de nouveaux en mode de fonctionnement optimal :

srv ~ # megacli -ldinfo l1 -a0
...
State               : Optimal
…

Même principe pour le disque 4 que l’on rajoute :

srv ~ # megacli -PDHSP -Set -PhysDrv [32:4] -a0
 
Adapter: 0: Set Physical Drive at EnclId-32 SlotId-4 as Hot Spare Success.

Pour retirer un disque de secours :

srv ~ # megacli -PDHSP -Rmv -PhysDrv [32:4] -a0
 
Adapter: 0: Remove Physical Drive at EnclId-32 SlotId-4 as Hot Spare Success.

Pour ajouter un disque de secours à un volume dédié :

srv ~ # megacli -PDHSP -Set -Dedicated -Array1 -PhysDrv [32:4] -a0
 
Adapter: 0: Set Physical Drive at EnclId-32 SlotId-4 as Hot Spare Success.
 
srv ~ # megacli -ldinfo L1 -a0
…
Number of Dedicated Hot Spares: 1
    0 : EnclId - 32 SlotId - 4

A ce stade un moyen (pas très élégant) de repositionner le disque 4 comme actif dans le RAID et le disque 5 comme Hot Spare (disque de secours), et de passer le disque 5 comme offline puis de le ré ajouter comme disque de secours :

srv ~ # megacli -PDOffline -PhysDrv [32:5] -a0
 
Adapter: 0: EnclId-32 SlotId-5 state changed to OffLine.
 
srv ~ # megacli -PDRbld -ShowProg -PhysDrv[32:4] -a0
 
Rebuild Progress on Device at Enclosure 32, Slot 4 Completed 1% in 0 Minutes.
 
srv ~ # megacli -PDHSP -Set -Dedicated -Array1 -PhysDrv [32:5] -a0
 
Adapter: 0: Set Physical Drive at EnclId-32 SlotId-5 as Hot Spare Success.
 
srv ~ # megacli -ldinfo L1 -a0
…
State               : Degraded
...
Number of Dedicated Hot Spares: 1
    0 : EnclId - 32 SlotId - 5

Cas des disques « étrangers » (‘Foreign’)

Lors du remplacement d’un disque physique, le disque nouvellement inséré peut être considéré par le contrôleur comme disque étranger (‘Foreign’).

srv ~ # megacli -PdInfo -PhysDrv [32:5] -a0
Enclosure Device ID: 32
Slot Number: 5                     
...
Firmware state: Unconfigured(bad)
...
Foreign State: Foreign
...

Note : Dans le cas ou vous souhaiteriez importer un volume RAID créé sur une machine A (contrôleur A) dans une machine B (contrôleur B), vous utiliserez les options « -CfgForeign -Import ».

Dans ce cas commencer par considérer le disque comme valide :

srv ~ # megacli -PDMakeGood -PhysDrv[32:5] -a0
 
Adapter: 0: EnclId-32 SlotId-5 state changed to Unconfigured-Good.

Vous pouvez rechercher les disques étrangers :

srv ~ # megacli -CfgForeign -Scan -a0
 
There are 1 foreign configuration(s) on controller 0.

Pour que le disque soit exploitable sur votre système, « nettoyer la configuration étrangère » :

srv ~ # megacli -CfgForeign -Clear -a0
 
Foreign configuration 0 is cleared on controller 0.

Le disque peut alors être ajouté aux volume de votre choix.

Ajouter un disque à un volume RAID

Vous pouvez ajouter des disques à un volume RAID existant en utilisant l’option LDRecon (Logical Drive Reconditioning).

Par exemple pour ajouter le disque 32:6 à un RAID 5 :

srv ~ # megacli -LDRecon -Start -r5 -Add -PhysDrv[32:6] -L0 -a0
 
Start Reconstruction of Virtual Drive Success.

2 réflexions au sujet de « Mémo MegaCli : Utilisation de contrôleur RAID Dell/LSI »

  1. Bonjour

    Merci pour la synthèse, c’est pratique.
    J’ai une question à propos de « Ajouter un disque à un volume RAID », est-ce que c’est fiable et sécurisé ? J’ai besoin d’ajouter 12 disques sur un RAID50, vous pensez que c’est faisable ?

    1. Bonjour, dans un cas comme celui ci, le plus pertinent est de ne pas utiliser uniquement le RAID mais de le coupler à du LVM (voir LVM sur ce site).

      Dans le cas d’une machine équipée de X disques, on commence par créer un volume RAID (ex 50). Le volume est ajouté à un volume LVM. Une fois le volume intégralement consommé, on ajoute un boîtier de X disques supplémentaires que l’on assemble en RAID également et que l’on ajoute au pool LVM.
      Ensuite, il ne reste qu’à agrandir son volume LVM jusqu’a consommer toute la place disponible avant de recommencer…
      C’est la solution la plus souple et robuste en linux natif (hors ZFS) et ça vaut le coup d’investir un peu de temps pour y passer …

      Sinon, ajouter des disques peut se faire (je n’ai plus la commande en tête, mais c’est comme ajouter un hot-spare sans le taguer de HS), mais plus il y a de disque plus l’ensemble est fragile (plus il y a de chance de voir des disques défectueux dans l’ensemble). Ensuite, se couplent les problèmes de volumétries, etc… bref, pas forcément une bonne idée…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *