Raid Perc Megaraid / Adaptec

De BlaxWiki
Révision datée du 9 janvier 2020 à 16:04 par 127.0.0.1 (discussion)
Aller à la navigationAller à la recherche

Migration de disques durs en Raid entre différentes cartes raid

Cela concerne des raid 1 (mais ne doit pas poser de soucis en raid 5) :

R610 SAS carte Dell 6R vers R620 carte H710 : Rebuild en boucle : KO
R610 carte Perc6I vers R620 carte H710 : ok
R610 carte H700 vers R620 carte H710 : ok

Agrandissement de grappe raid 5 et changement de disques

Si l'on veut agrandir une grappe raid 5, c'est possible en changeant les disques au fur et à mesure. Si on a 3 disques de 100 Go, et qu on veut en mettre 3 de 300 Go, on va remplacer un par un les disques de 100 Go (on attend que le rebuild soit fait puis on passe au suivant). Puis après pour voir la bonne taille de la grappe raid / virtual disk) :
- Eteindre le serveur.
- Aller dans le Bios de la carte RAID (Ctrl+H au boot).
- Faire un clear de la configuration du Raid5
- Faire un Add configuration et reconfigurer le RAID5 avec toute la capacité disponible.
/!\ ATTENTION NE PAS INITIALISER A LA FIN DU PROCESSUS /!\
-> Démarrer la machine.

Puis faire la modification en fsck de la partition en question pour l'agrandir

Changement de batterie

Pour effectuer un bon changement de batterie de carte raid 8408e ou de carte raid , si l on veut juste changer la batterie de la carte raid, il faut obligatoirement la reflasher car :
 - la batterie ne serait pas reconnue (test effectué, batterie chargée, dépleuguée et repluguée sur même carte )
 - de même si la batterie est complément déchargée ou si le câble qui relier la batterie à son support est débranchée (elle doit servir en meme temps de piles de bios car on perd même 
la conf)

Flash bios

Parfois même en changeant de batterie cette dernière n'est pas reconnue, il faut alors flasher le bios de la carte. La procédure ci dessous est à adapter aux différentes carte raid.

    - Booter sur la clé USB (MS-DOS)
    - Taper les commandes suivantes :
    # cd perc6i
    # update.bat

    - Flasher la carte en en suivant les indications données
    - Rebooter le serveur

    - Se connecter sur le serveur et vérifier que la batterie est bien détecté : /var/vision_client/source/raid/MegaCli3 -Adpallinfo -a0 | grep "BBU"
    BBU              : Present

    - Vérifier la version du firmware avec la commande : /var/vision_client/source/raid/MegaCli3 -Adpallinfo -a0 | grep "FW Package
    Build"

Megarc

Checkr raid

megaraid.tar.gz
Script check-raid-status-PERC.pl
 # cp megarc /usr/local/sbin/
 # cp megamgr /usr/local/sbin/
 # ./check-raid-status-PERC.pl

 # cat /var/tmp/raid.status
 OPTIMAL 1.00=ONLINE 1.01=ONLINE

Commandes utiles

./megarc.bin  -dispCfg -a0 : info sur le raid
./megarc.bin -LogPhysInfo -alladp : info disque
./megarc.bin  -ctlrInfo -a0 : info controleur
./megarc.bin  -newCfg -R1 -a0 WB RAA CIO : passe le logical drive en Write back
./megarc.bin  -doRbld -a0 -RbldArray[0:1] : rebuild du disque channel 0 Target 1 (le nouveau disque)

Megacli

Scripts

MegaCli

Placez le fichier "MegaCli" et "check-raid-status-SAS.sh" dans le repertoire "/usr/local/sbin/"

Commandes Utiles

MegaCli -LDInfo -LALL -aALL : donne infos essentiels
MegaCli -AdpAllInfo -aALL : Info multiples
MegaCli -CfgDsply -a0 : configuration actuelle du Raid
MegaCli -LDSetProp ADRA -LALL -AALL ; passe le cache en readadaptative 
MegaCli -LDSetProp WB -LALL -AALL ; passe le cache en write back
MegaCli -LDSetProp cached -LALL -AALL ; passe le cache en cached
MegaCli -CfgDsply -aALL donne info serial et autre sur les disques durs
MegaCli -LDGetProp -LALL -aALL : donne des infos sur les logical / virtual drive
MegaCli -AdpBbuCmd -aALL ; info batterie (rajouter -GetBbuCapacityInfo pour avoir moins d'infos)
MegaCli -AdpSetProp AlarmSilence -a0 : coupe l'alarme sonore
MegaCli -PDList -aALL : lister les disques physiques (permet de récupérer Enclosure Device ID (E) et le Slot Number (S))
MegaCli-2.00 -EncInfo -aALL : info sur la carte controleur

# Commandes disques & raid
Dans les commandes "-PhysDrv[E:S]" - E = Enclosure devide ID / S = Slot number . Il peut arriver parfois que la commande "MegaCli -PDList -aALL" ne retourne pas d'enclosure (N/A),
dans ce cas là il suffit just de mettre uniquement le slot number (exemple : ./MegaCli3 -pdinfo -PhysDrv[:4] -a0)


MegaCli -PDMakeGood -PhysDrv [E0:S0] -aAll : passe un disque en Unconfigured Good
MegaCli -PdPrpRmv -PhysDrv [E0:S0] -a0 : demande à deconnecter le disque proprepement
MegaCli -PDClear -ProgDsply -PhysDrv [E0:S0,E1:S1,...] -a0 : effectue un "Clear" sur un disque
MegaCli -PDRbld -ProgDsply -PhysDrv [E0:S0,E1:S1,...] -a0 : checke l'état d'un Rebuilt (ou ./MegaCli3  -PDRbld -ShowProg -PhysDrv [E0:S0] -aALL)
MegaCli -PdReplaceMissing -PhysDrv [E:S] -ArrayN -rowN -aN : Replace missing drive. The number N of the array parameter is the Span Reference you get using '${megacli} -CfgDsply 
-aALL' and tr N of the row parameter is the  Physical Disk in that span or array starting with zero (it is not the physical disk.  
MegaCli -PDRbld -Start -PhysDrv [E:S] -aN : rebuild drive

Pour créer un raid avec de nouveaux disques, il faut que le disque soit dans les 2 états suivants (état visible avec la commande MegaCli -PDList -a0)
 - Foreign State: None (si il est en état Foreign State:Foreign, il faut faire un ./MegaCli3 -CfgForeign -Clear -aALL , ca le fait sur tous les disques, on ne peut pas préciser le 
E:S, mais si il y a deja des disques dans une grappe raid en prod, ca ne changera rien)
 - Firmware state: Unconfigured(good), Spun Up (si pas en good : ./MegaCli3 -PDMakeGood -PhysDrv[E] -aN)

MegaCli -CfgLdAdd -r(0|1|5) [E:S, E:S, ...] -aN : create RAID 0, 1, 5 drive (./MegaCli2 -CfgLdAdd -r 5 [32:2, 32:3, 32:4] -a0, où ici l'enclosure est 32, et les id des disques 2,3,4)
MegaCli -CfgSpanAdd -r10 -Array0[E:S,E:S] -Array1[E:S,E:S] -aN : create RAID 10 drive

MegaCli -PDOffline -PhysDrv [E:S] -aN : passe un disque en offline
MegaCli -PDMarkMissing -PhysDrv [E:S] -aN : marque un disque en missing
MegaCli -PDHSP -Set -PhysDrv [E:S] -aN : spécifie un global hotspare
MegaCli3 -LDRecon -Start -r5 -Add -PhysDrv[:3] -L0 -a0 : ajout d'un disque (phy :3) dans une grappe raid 5

# Commandes liées à la batterie

Lorsque le taux d'erreur de la carte est > 5/6%, elle ne peut pas passer en writeback, il faut alors envoyer un relearn (qui va décharger puis recharger la batterie)
# Extraire la configuration de la carte :
MegaCli –AdpAllInfo -a0 > LSIconfiguration.txt

# Lancer un calibrage / relearn de la BBU (batterie)
MegaCli -adpbbucmd -bbulearn –a0

# Si commande ok, le résultat est le suivant (si il y a un failed, c est que la batterie est morte ou pas encore assez rechargée, il faut attendre
Adapter 0: BBU Learn Succeeded.

# Extraire les logs de la carte 
MegaCli.exe -adpeventlog -getevents -f logsas.txt –a0
MegaCli.exe -AdpEventLog -GetEvents -f events.log -aALL
MegaCli3 -AdpEventLog -Clear -aALL # clean des logs

# Vérifier qu il n y a pas de relearn en cours / voir les infos de relearn
./MegaCli3 -AdpEventLog -GetEvents -f /tmp/raid.log -a0
grep "Time\|Event Desc" /tmp/raid.log | grep -v Patrol  | tac | uniq -w 4 | tac

# Extraire le statut de la BBU
MegaCli -AdpBbuCmd -a0 > LSIBBUstatus.txt

On doit pouvoir alors la passer en writeback, cached....

Passage d'un raid 1 en raid 5

Certaines cartes raid (comme les perc perc h710) permettent de passer une grappe raid 1 en raid 5 (il faut bien sur rajouter au minimum 1 disque) à chaud et sans perde de données. On a donc ici un raid 1 sur 2 disques, et on rajoute un nouveau disque qui a pour slot number 6. La commande à lancer : ./MegaCli3 -LDRecon -Start -r5 -Add-PhysDrv[:6] -L1 -a0

Check du raid

Placez une crontab dans "/etc/crontab" :

# Check du raid
*/5 * * * * root /usr/local/sbin/check-raid-status-SAS.sh

Mettre en place un check_http2 avec "Optimal" en chaine de caractères.

Cas de disque Failed

En cas de changement de disque (disque neuf) il n'y a pas besoin de faire ces manipulations, le Rebuilt doit se faire automatiquement. Pensez à vérifier l'état du Rebuilt voir s'il se fait correctement.

Repérer le disque deffectueux :

# MegaCli -PDList -a0
Adapter #0

Enclosure Number: 1
Slot Number: 3
Device Id: 4
Sequence Number: 6
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
Raw Size: 70007MB [0x88bb93a Sectors]
Non Coerced Size: 69495MB [0x87bb93a Sectors]
Coerced Size: 68664MB [0x861c000 Sectors]
Firmware state: Unconfigured(bad)
SAS Address(0): 0x500000e013e0db32
SAS Address(1): 0x0
Inquiry Data: FUJITSU MAX3073RC       D206DRA3P6C02MPP

Enclosure Number: 1
Slot Number: 255
Device Id: 248
Sequence Number: 0
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
Raw Size: 0MB [0x0 Sectors]
Non Coerced Size: 9007199254740480MB [0xfffffffffff00000 Sectors]
Coerced Size: 0MB [0x0 Sectors]
Firmware state: Unconfigured(good)
Inquiry Data: LSI     SGPIO           N/A 

Enclosure Number: 1
Slot Number: 2
Device Id: 3
Sequence Number: 15
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
Raw Size: 70007MB [0x88bb93a Sectors]
Non Coerced Size: 69495MB [0x87bb93a Sectors]
Coerced Size: 68664MB [0x861c000 Sectors]
Firmware state: Online
SAS Address(0): 0x500000e013e0dc12
SAS Address(1): 0x0
Inquiry Data: FUJITSU MAX3073RC       D206DRA3P6C02MPY

Enclosure Number: 0
Slot Number: 255
Device Id: 65535
Sequence Number: 0
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
Raw Size: 0MB [0x0 Sectors]
Non Coerced Size: 9007199254740480MB [0xfffffffffff00000 Sectors]
Coerced Size: 0MB [0x0 Sectors]
Firmware state: Unconfigured(good)
Inquiry Data: 

Passer le disque en "Unconfigured (Good)"

MegaCli -PDMakeGood -PhysDrv [1:3] -aAll

En ligne de commande, dire au serveur que nous retirons le disque :

MegaCli -PdPrpRmv -physdrv [1:3] -a0

Ensuite retirer le disque à la main et le remplacer et le Rebuilt se fera automatiquement. Si le rebuild ne se lance pas, il faut passer le nouveau disque en global hotspare

Vous pouvez ensuite checker l'état du Rebuilt avec cette commande :

MegaCli -PDRbld -ProgDsply -PhysDrv [1:3] -a0


Check Adaptec

2015S

# cd /usr/local/src
# wget http://i2o.shadowconnect.com/raidutils/raidutils-0.0.6.tar.bz2
# tar xjf raidutils-0.0.6.tar.bz2 && cd raidutils-0.0.6
# for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17; do mknod /dev/dpti$i c 151 $i; done
# ./configure
# make
# make install
# /usr/local/bin/raidutil -L logical 2>&1 | sed -e 's/$/<br>/' > /var/www/raid.html

Vérifier que "http://aaa.bbb.ccc.ddd/raid.html" retourne bien Optimal dans l'output.

Si c'est le cas, mettre en place le fichier "check_raid.sh" :

#!/bin/sh
/usr/local/bin/raidutil -L logical 2>&1 | sed -e 's/$/<br>/' > /var/www/raid.html
exit 0
# cp check_raid.sh /usr/local/libexec
# chmod 700 /usr/local/libexec/check_raid.sh

Mettre ca dans la crontab:

# Check du raid
*/5 * * * * root /usr/local/libexec/check_raid.sh

Puis mettre en place un check_http2 dans clarawatch en recherchant le mot 'Optimal' dans la page /raid.html


Si jamais le script affiche deux RAID alors qu'il y en a qu'un (on a pas compris pourquoi), remplacer la ligne centrale de ce script avec:

/usr/local/bin/raidutil -d0 -L logical 2>&1 | sed -e 's/$/<br>/' > /var/www/raid.html

2120S

Linux Debian

Adaptec-2120S-2.6-0.tar.gz

# cd /
# tar -zxvf adaptec_2120S.tar.gz

Créer le fichier "raid.commands" dans le repertoire "/usr/local/raid/" :

open afa0
logfile start raid.current.config
container list
disk list
logfile end 
exit

Créer le fichier "check_raid.sh" toujours dans "/usr/local/raid/" :

#!/bin/bash
cd /usr/local/raid/
/usr/sbin/afacli < raid.commands

Ensuite faite la commande suivante :

# cd /usr/local/raid/
# /usr/sbin/afacli < raid.commands