<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wikiold.home.tartarefr.eu/index.php?action=history&amp;feed=atom&amp;title=Hardware%2FPerc%2FMegaCli%2FDisableAutolearn</id>
	<title>Hardware/Perc/MegaCli/DisableAutolearn - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wikiold.home.tartarefr.eu/index.php?action=history&amp;feed=atom&amp;title=Hardware%2FPerc%2FMegaCli%2FDisableAutolearn"/>
	<link rel="alternate" type="text/html" href="https://wikiold.home.tartarefr.eu/index.php?title=Hardware/Perc/MegaCli/DisableAutolearn&amp;action=history"/>
	<updated>2026-07-10T02:31:03Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wikiold.home.tartarefr.eu/index.php?title=Hardware/Perc/MegaCli/DisableAutolearn&amp;diff=910&amp;oldid=prev</id>
		<title>Didier : Page créée avec « = Introduction = Ce document décrit le déroulement pas à pas de la désactivation de l&#039;autolearn de la batterie du contrôleur RAID PERC sur les serveurs DELL.  En effet c... »</title>
		<link rel="alternate" type="text/html" href="https://wikiold.home.tartarefr.eu/index.php?title=Hardware/Perc/MegaCli/DisableAutolearn&amp;diff=910&amp;oldid=prev"/>
		<updated>2012-10-02T13:20:56Z</updated>

		<summary type="html">&lt;p&gt;Page créée avec « = Introduction = Ce document décrit le déroulement pas à pas de la désactivation de l&amp;#039;autolearn de la batterie du contrôleur RAID PERC sur les serveurs DELL.  En effet c... »&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Introduction =&lt;br /&gt;
Ce document décrit le déroulement pas à pas de la désactivation de l&amp;#039;autolearn de la batterie du contrôleur RAID PERC sur les serveurs DELL.&lt;br /&gt;
&lt;br /&gt;
En effet ce processus se lance tous les 90 jours, quelque soit la charge du serveur ( selon la loi de Murphy, au pire moment ). Cela induit un lag très important sur le service MySQL car le cache en écriture est by-passed durant la fin de la décharge de la batterie ( environ 1 heure ).&lt;br /&gt;
&lt;br /&gt;
La solution consiste donc à supprimer le lancement automatique et de le lancer en tâche programmée ( crontab ) le dimanche.&lt;br /&gt;
&lt;br /&gt;
Nous aurons besoin de deux outils&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
* MegaCLI qui est l&amp;#039;outil de management du-dit contrôleur.&lt;br /&gt;
* Open Manage qui est la suite DELL pour gérer le hardware de ses serveurs.&lt;br /&gt;
&lt;br /&gt;
= Installation des outils =&lt;br /&gt;
== MegaCli ==&lt;br /&gt;
Cet utilitaire n&amp;#039;est pas Open-Source et seul le binaire est disponible. L&amp;#039;utilitaire peut être téléchargé ici&amp;amp;nbsp;:[http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/8.00.48_Linux_MegaCLI.zip http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/8.00.48_Linux_MegaCLI.zip]&lt;br /&gt;
&lt;br /&gt;
Cette archive contient une autre archive contenant 2 RPM. L&amp;#039;installation est triviale&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 # yum install MegaCli-8.00.48-1.i386.rpm Lib_Utils-1.00-09.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
Toutefois un paquet RPM sera créer car le chemin ( /opt/lsi/3rdpartylibs ) n&amp;#039;est pas standard pour une bibliothèque et nécessite une post-installation via «&amp;amp;nbsp;ldconfig&amp;amp;nbsp;».&lt;br /&gt;
&lt;br /&gt;
== OpenManage ==&lt;br /&gt;
L&amp;#039;installation est décrite à la page [http://linux.dell.com/repo/hardware/latest http://linux.dell.com/repo/hardware/latest]&lt;br /&gt;
&lt;br /&gt;
 # wget -q -O - http://linux.dell.com/repo/hardware/latest/bootstrap.cgi | bash&lt;br /&gt;
 # yum install srvadmin-all&lt;br /&gt;
&lt;br /&gt;
Lancement de l&amp;#039;outil&lt;br /&gt;
&lt;br /&gt;
 # /opt/dell/srvadmin/sbin/srvadmin-services.sh enable&lt;br /&gt;
 # /opt/dell/srvadmin/sbin/srvadmin-services.sh start&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
== Suppression du lancement automatique d&amp;#039;apprentissage ==&lt;br /&gt;
 # TMPFILE=$(mktemp -p /tmp bbu.relearn.off.XXXXXXXXXX) &amp;amp;&amp;amp; echo &amp;quot;autoLearnMode=1&amp;quot; &amp;gt; $TMPFILE &amp;amp;&amp;amp; \&lt;br /&gt;
 MegaCli64 -AdpBbuCmd -SetBbuProperties -f$TMPFILE -a0&amp;amp;nbsp;; rm -f $TMPFILE&lt;br /&gt;
&lt;br /&gt;
Vérifier que l&amp;#039;autolearn est désactivé&lt;br /&gt;
&lt;br /&gt;
 # MegaCli64 -AdpBbuCmd -GetBbuProperties -a0&lt;br /&gt;
 &lt;br /&gt;
 BBU Properties for Adapter: 0&lt;br /&gt;
 &lt;br /&gt;
 Auto Learn Period: 7776000 Sec&lt;br /&gt;
 Next Learn time: 383912427 Sec &lt;br /&gt;
 Learn Delay Interval:0 Hours&lt;br /&gt;
 Auto-Learn Mode: Disabled&lt;br /&gt;
 &lt;br /&gt;
 Exit Code: 0x00&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Auto Learn Period&lt;br /&gt;
| Nombre de secondes entre chaque cycle d&amp;#039;autolearn&lt;br /&gt;
|-&lt;br /&gt;
| Next Learn time&lt;br /&gt;
| Nombre de secondes depuis le 01/01/2000 pour déterminer la date du prochain cycle.&lt;br /&gt;
|-&lt;br /&gt;
| Learn Delay Interval&lt;br /&gt;
| Nombre d&amp;#039;heure pour retarder l&amp;#039;exécution du cycle d&amp;#039;autolearn&lt;br /&gt;
|-&lt;br /&gt;
| Auto-Learn Mode&lt;br /&gt;
| Mode d&amp;#039;apprentissage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Exécution de l&amp;#039;apprentissage ==&lt;br /&gt;
La commande suivante lance l&amp;#039;apprentissage.&lt;br /&gt;
&lt;br /&gt;
 # /opt/dell/srvadmin/bin/omconfig storage battery action=startlearn controller=0 battery=0&lt;br /&gt;
&lt;br /&gt;
Pour l&amp;#039;exécuter tous les trois mois ( janvier, avril, juillet, octobre ), le premier dimanche à 08H00, la ligne du «&amp;amp;nbsp;crontab&amp;amp;nbsp;» est&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 0 8 */3 1-7 7 /opt/dell/srvadmin/bin/omconfig storage battery action=startlearn controller=0 battery=0&lt;br /&gt;
&lt;br /&gt;
La même chose avec MegaCli&lt;br /&gt;
&lt;br /&gt;
 # MegaCli64 -AdpBbuCmd -BbuLearn -a0&lt;br /&gt;
&lt;br /&gt;
Pour constater l&amp;#039;état de l&amp;#039;apprentissage lorsque on l&amp;#039;a lancé manuellement&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
 # MegaCli64 -AdpBbuCmd -GetBbuStatus -aAll&lt;br /&gt;
 ...&lt;br /&gt;
 BBU Firmware Status:&lt;br /&gt;
 &lt;br /&gt;
   Charging Status              : Discharging&lt;br /&gt;
   Voltage                                 : OK&lt;br /&gt;
   Temperature                             : OK&lt;br /&gt;
   Learn Cycle Requested                   : Yes&lt;br /&gt;
   Learn Cycle Active                      : Yes&lt;br /&gt;
   Learn Cycle Status                      : OK&lt;br /&gt;
   Learn Cycle Timeout                     : No&lt;br /&gt;
   I2c Errors Detected                     : No&lt;br /&gt;
   Battery Pack Missing                    : No&lt;br /&gt;
   Battery Replacement required            : No&lt;br /&gt;
   Remaining Capacity Low                  : No&lt;br /&gt;
   Periodic Learn Required                 : No&lt;br /&gt;
   Transparent Learn                       : No&lt;br /&gt;
   No space to cache offload               : No&lt;br /&gt;
   Pack is about to fail &amp;amp; should be replaced : No&lt;br /&gt;
   Cache Offload premium feature required  : No&lt;br /&gt;
   Module microcode update required        : No&lt;br /&gt;
 &lt;br /&gt;
 Battery state:&lt;br /&gt;
 &lt;br /&gt;
 GasGuageStatus:&lt;br /&gt;
   Fully Discharged        : No&lt;br /&gt;
   Fully Charged           : No&lt;br /&gt;
   Discharging             : Yes&lt;br /&gt;
   Initialized             : Yes&lt;br /&gt;
   Remaining Time Alarm    : No&lt;br /&gt;
   Remaining Capacity Alarm: No&lt;br /&gt;
   Discharge Terminated    : No&lt;br /&gt;
   Over Temperature        : No&lt;br /&gt;
   Charging Terminated     : No&lt;br /&gt;
   Over Charged            : No&lt;br /&gt;
 &lt;br /&gt;
 Relative State of Charge: 95 %&lt;br /&gt;
 Charger Status: Off&lt;br /&gt;
 Remaining Capacity: 805 mAh&lt;br /&gt;
 Full Charge Capacity: 851 mAh&lt;br /&gt;
 isSOHGood: Yes&lt;br /&gt;
 &lt;br /&gt;
 Exit Code: 0x00&lt;br /&gt;
&lt;br /&gt;
== Firewall pour la WUI OpenManage ==&lt;br /&gt;
On va d&amp;#039;abord autoriser le port d&amp;#039;OpenManage ( 1311 ) sur les frontaux, puis ajouter quelques règles NAT pour accéder aux serveurs du réseau local.&lt;br /&gt;
&lt;br /&gt;
Les ports sont la quatrième partie de l&amp;#039;adresse IP LAN sur trois digits préfixé du chiffre 13.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Injection des règles iptables à chaud avec la plateforme MIT.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
ld1 et ld2&lt;br /&gt;
&lt;br /&gt;
 iptables -I INPUT -s 78.248.44.91 -p tcp --dport 1311 -j ACCEPT&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13070 -j DNAT --to 192.168.0.70:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13080 -j DNAT --to 192.168.0.80:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13100 -j DNAT --to 192.168.0.100:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13105 -j DNAT --to 192.168.0.105:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13110 -j DNAT --to 192.168.0.110:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13115 -j DNAT --to 192.168.0.115:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13120 -j DNAT --to 192.168.0.120:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13125 -j DNAT --to 192.168.0.125:1311&lt;br /&gt;
&lt;br /&gt;
mail3 et mail4&lt;br /&gt;
&lt;br /&gt;
 iptables -I INPUT -s 78.248.44.91 -p tcp --dport 1311 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Injection des règles iptables à chaud avec la plateforme Cogent.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
ld1-cogent et ld2-cogent&lt;br /&gt;
&lt;br /&gt;
 iptables -I INPUT -s 78.248.44.91 -p tcp --dport 1311 -j ACCEPT&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13071 -j DNAT --to 192.168.0.71:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13081 -j DNAT --to 192.168.0.81:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13101 -j DNAT --to 192.168.0.101:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13106 -j DNAT --to 192.168.0.106:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13111 -j DNAT --to 192.168.0.111:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13116 -j DNAT --to 192.168.0.116:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13121 -j DNAT --to 192.168.0.121:1311&lt;br /&gt;
 iptables -t nat -A PREROUTING -i bond0 -s 78.248.44.91 -p tcp --dport 13126 -j DNAT --to 192.168.0.126:1311&lt;br /&gt;
&lt;br /&gt;
mail3-cogent et mail4-cogent&lt;br /&gt;
&lt;br /&gt;
 iptables -I INPUT -s 78.248.44.91 -p tcp --dport 1311 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
= Résolutions des problèmes =&lt;br /&gt;
Il existe une commande pour forcer le mode.&lt;br /&gt;
&lt;br /&gt;
Forcer l&amp;#039;utilisation du cache ( Mode Write Back ) même si la batterie n&amp;#039;est pas présente ou presque déchargée, au lieu de le by-passer ( Mode Write Through ).&lt;br /&gt;
&lt;br /&gt;
 # omconfig storage vdisk action=changepolicy writepolicy=fwb controller=0 vdisk=0&lt;br /&gt;
&lt;br /&gt;
= Tests =&lt;br /&gt;
== Mise en place ==&lt;br /&gt;
Les tests suivants ont été effectués sur la plateforme Cogent.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Host&lt;br /&gt;
! Autolearn&lt;br /&gt;
! Commentaires&lt;br /&gt;
|-&lt;br /&gt;
| wsr1&lt;br /&gt;
| Désactivé&lt;br /&gt;
| learn en cron après la date d&amp;#039;autolearn&lt;br /&gt;
|-&lt;br /&gt;
| wsr2&lt;br /&gt;
| Désactivé&lt;br /&gt;
| learn en cron après la date d&amp;#039;autolearn&lt;br /&gt;
|-&lt;br /&gt;
| wsr3&lt;br /&gt;
| Activé&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| wsr4&lt;br /&gt;
| Désactivé&lt;br /&gt;
| Lancement du learn manuellement avant la date de l&amp;#039;autolearn (omsa)&lt;br /&gt;
|-&lt;br /&gt;
| wsr5&lt;br /&gt;
| Désactivé&lt;br /&gt;
| Lancement du learn manuellement après la date d&amp;#039;autolearn (MegaCli)&lt;br /&gt;
|-&lt;br /&gt;
| wsr6&lt;br /&gt;
| Activé&lt;br /&gt;
| Ajout d&amp;#039;un delay via OMSA ( 48h)&lt;br /&gt;
|-&lt;br /&gt;
| sql1&lt;br /&gt;
| Activé&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| sql2&lt;br /&gt;
| Activé&lt;br /&gt;
| Lancement du learn manuellement avant la date de l&amp;#039;autolearn&lt;br /&gt;
|-&lt;br /&gt;
| mail3&lt;br /&gt;
| Activé&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| mail4&lt;br /&gt;
| Activé&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Résultats : ==&lt;br /&gt;
* La date du prochain autolearn est mise à jour &amp;#039;&amp;#039;&amp;#039;si et seulement si&amp;#039;&amp;#039;&amp;#039; le status de l&amp;#039;autolearn est «&amp;amp;nbsp;Activé&amp;amp;nbsp;». &lt;br /&gt;
* Si l&amp;#039;autolearn est actif, c&amp;#039;est la date d&amp;#039;apprentissage réelle qui est pris pour référence et non la date théorique d&amp;#039;apprentissage.&lt;br /&gt;
* L&amp;#039;autolearn n&amp;#039;est pas effectué dans le mode «&amp;amp;nbsp;Désactivé&amp;amp;nbsp;», même si la désactivation est postérieure à la mise en garde du lancement automatique dans les logs.&lt;br /&gt;
* Le forçage du Mode Write Back n&amp;#039;a pas été possible pendant le cycle d&amp;#039;autolearn avec un niveau de batterie faible ( Une fois en mode Write Through ).&lt;br /&gt;
* Les deux façons de lancer l&amp;#039;apprentissage sont opérationnelles&amp;amp;nbsp;:OMSA et MegaCli.&lt;br /&gt;
* Le delay ne semble pas fonctionné ( exécuter à l&amp;#039;heure prévu malgré les 48H de délai ).&lt;br /&gt;
* Seul les logs d&amp;#039;OpenManage ou le fichier /var/log/messages ( avec omsa démarré )contiennent des informations sur ce qui ce passe.&lt;br /&gt;
* Après un reboot ( via la commande «&amp;amp;nbsp;reboot&amp;amp;nbsp;» ), l&amp;#039;autolearn désactivé reste désactivé.&lt;br /&gt;
* Après un arrêt ( commande «&amp;amp;nbsp;halt&amp;amp;nbsp;», et l&amp;#039;iDrac envoie le statut «&amp;amp;nbsp;Hors Tension&amp;amp;nbsp;» ), l&amp;#039;autolearn désactivé reste désactivé.&lt;br /&gt;
&lt;br /&gt;
== Conclusions : ==&lt;br /&gt;
Le lancement de l&amp;#039;apprentissage doit être effectué régulièrement avec une période de 90 jours et la date de début doit être enregistrée quelque part. Ceci dans le but de monitorer la période séparant deux cycles.&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 date &amp;#039;+%s&amp;#039; &amp;gt; /var/tmp/perc_battery_learn_time&lt;br /&gt;
 &lt;br /&gt;
 /opt/dell/srvadmin/bin/omconfig storage battery action=startlearn controller=0 battery=0&lt;br /&gt;
&lt;br /&gt;
L&amp;#039;autolearn ne peut être reporté ou annulé s&amp;#039;il est activé et surtout &amp;#039;&amp;#039;&amp;#039;aucune action ne pourra interrompre le cycle d&amp;#039;apprentissage&amp;#039;&amp;#039;&amp;#039; une fois démarré . &amp;#039;&amp;#039;&amp;#039;Une action est donc nécessaire avant&amp;#039;&amp;#039;&amp;#039; le lancement du cycle d&amp;#039;apprentissage&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
* Désactivation pure et simple&lt;br /&gt;
* Lancer un cycle d&amp;#039;apprentissage anticipé à une date/heure hors-production.&lt;/div&gt;</summary>
		<author><name>Didier</name></author>
	</entry>
</feed>