MegaRAID est un contrôleur RAID matériel fabriqué par LSI (désormais Broadcom), que l’on retrouve dans une large gamme de serveurs physiques. Ici à Jaguar Network, nous utilisons de tels contrôleurs (bien que nos derniers serveurs soient désormais livrés essentiellement avec des PERC). Nous utilisons l’outil megacli pour administrer ces contrôleurs depuis Linux.

Le but de ce mémo est de lister les commandes utiles et les arguments de cet outil. Ce n’est pas une documentation exhaustive de l’outil, juste un résumé des commandes fréquemment utilisées.

Commandes de diagnostic

MegaCli peut être utilisé pour diagnostiquer plusieurs types d’objets. Les plus intéressants sont :

  • L’adaptateur : il s’agit de l’adaptateur physique en lui-même, connecté aux disques et qui expose les disques logiques RAID au système d’exploitation ;
  • Les disques logiques : ce sont les aggrégats RAID présentés au système d’exploitation ;
  • Les disques physiques : ce sont les disques durs physiques utilisés par le contrôleur ;
  • La batterie de sauvegarde (BBU) : cette batterie est utilisé pour conserver les données en cache dans le contrôleur en cas de panne de courant.

Les arguments de la commande MegaCli ne sont pas les plus faciles à retenir. Nous allons donc reprendre ici les commandes que nous utilisons le plus souvent pour diagnostiquer nos contrôleurs MegaaRAID sur Linux.

Informations sur l’adaptateur

# megacli -AdpAllInfo -a0

Cette liste exhaustive reprend l’ensemble des paramètres et informations liées au contrôleur en lui-même. Si vous avez plusieurs contrôleurs dans la même machine, il faudra adapter l’argument -a0 pour indiquer l’ID du contrôleur souhaité, ou -aALL pour les lister tous.

Les disques physiques

# megacli -PDList -aALL

Les champs intéressants sont :

  • Media Error Count
  • Predictive Failure Count
  • Firmware state
  • Drive has flagged a S.M.A.R.T alert

Les disques logiques

# megacli -LDInfo -Lall -aALL

Les champs intéressants sont :

  • RAID Level
  • Default Cache Policy & Current Cache Policy: si la politique de cache est WriteThrough alors qu’elle devrait être WriteBack, attendez-vous à des performances réduites
  • State: should be Optimal

Si un important iowait est constaté sur le serveur, la Cache Policy a très probablement basculé en WriteThrough (écrit à travers le cache, sans l’utiliser) au lieu de WriteBack.
Cela est souvent dû à une batterie de backup défectueuse, ou un cycle de réapprentissage automatique.

Batterie de backup

# megacli -AdpBbuCmd -aALL

Il y a plusieurs informations utiles à vérifier avec cette commande :

  • Voltage, Current, Temperature, Battery State: un aperçu rapide de l’état de santé de la batterie
  • Charging Status: devrait être à None
  • Learn Cycle Active: si Yes, cela pourrait être la raison de performances réduites
  • Relative State of Charge: devrait être 100%
  • Next Learn time: quand le prochain cycle d’réapprentissage sera déclenché

Un cycle de réapprentissage va provoquer le vidage complet de la batterie et la charger de nouveau, afin d’en déterminer la capacité. Cette opération est effectuée automatiquement par le contrôleur de manière régulière afin de suivre l’évolution de la capacité de cette batterie.
Un effet de bord de cette procédure est que lorsque le niveau de charge de la batterie passe en dessous d’un certain seuil, le contrôleur la considérera comme étant défectueuse et arrêtera de cacher les commandes d’I/O, impactant parfois fortement les performances du stockage.

Configuration

Vous pouvez également utiliser MegaCli pour paramétrer divers aspects du contrôleur RAID.

Passer un disque physique Online

# megacli -PDOnline -PhysDrv [enclosure:slot] -a0

Passer un disque physique Offline

# megacli -PDOffline -PhysDrv [enclosure:slot] -a0

Marquer un disque physique comme Missing

# megacli -PDMarkMissing -PhysDrv [enclosure:slot] -a0

Préparer un disque à l’arrachement

# megacli -PdPrpRmv -PhysDrv [enclosure:slot] -a0

Reconstruire un disque membre d’un RAID

# megacli -PDRbld -Start -PhysDrv [enclosure:slot] -a0
 # megacli -PDRbld -Stop -PhysDrv [enclosure:slot] -a0
 # megacli -PDRbld -ShowProg -PhysDrv [enclosure:slot] -a0
 

Repasser le statut d’un disque en Good

# megacli -PDMakeGood -PhysDrv[enclosure:slot] -a0

Forcer la politique de cache en WriteBack

Cette commande peut être utilisée pour forcer l’utilisation du cache (WriteBack) même si la batterie est considérée comme étant défectueuse par le contrôleur. Très utile en cas d’incident causé par un cycle de réapprentissage. Attention, en cas de coupure de courant, vous vous exposez à un risque de perte de données !

# megacli -LDSetProp ForcedWB -Immediate -Lall -aALL