Raid Perc Megaraid / Adaptec
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
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
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
# 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