Outils pour utilisateurs

Outils du site


nut

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nut [2010/01/12 21:57] thierrynut [2012/03/01 14:42] (Version actuelle) thierry
Ligne 1: Ligne 1:
 ====== Nut ====== ====== Nut ======
 +
 +===== Mise en garde =====
 +L'electricité, c'est un peu le souffle de la vie, pour des machines.
 +
 +Les pilotes "series" et "usb" ne se comportent pas toujours comme attendu.
 +
 +Par exemple, avec un pilote série:
 +  ups.delay.shutdown=10
 +Ca coupe le jus dans les 10 secondes prochaines !
 +
 +Dixit 'Arjen de Korte' :
 +**//I assume you're using the 'mge-shut' driver, right? In this driver, the parameters are actually timer (not delay) values which will start running immediately after writing them. This is confusing at best. If you only want to change the delay values, you must use the 'ondelay' and 'offdelay' parameters in 'ups.conf'.
 +//**
 +
 +Mais pas sur un pilote USB: ca ne fait rien.
 +
 +Jouer avec 'ondelay' ou 'offdelay' ne fait rien non plus.
 +
 +De plus, il est vain de vouloir controler l'arret de l'onduleur lorsqu'on recoit un signal "LOWBATT": c'est trop tard, vous avez 20 secondes (plus ou moins selon les onduleurs) pour arreter votre systeme.
 +
 +Si votre système a besoin de 30 secondes de plus, c'est mort! **Même s'il vous reste encore 30% de charge ou plus !**
 +
 +J'ai perdu beaucoup de temps autour de ces incohérences, et c'est bien dommage.
 +
 +Dixit 'Arjen de Korte' :
 +**//You should always do your setup (and testing) with a non-critical load connected. Testing with a live server is definitely not recommended, unless you've prepared your server to lose power unexpectedly.//**
 +
 +Ok. Mais il faudrait aussi unifier le comportement de vos pilotes.
  
 ===== Liens ===== ===== Liens =====
-  * http://opensource.mgeups.com/howto.htm +  *http://www.networkupstools.org/
-  * http://opensource.mgeups.com/install/debian.htm+
   * http://www.rt74.eu/index.php?post/2008/06/23/Comment-installer-Nut-pour-un-onduleur-MGE-USB   * http://www.rt74.eu/index.php?post/2008/06/23/Comment-installer-Nut-pour-un-onduleur-MGE-USB
   * Compatibilité: http://www.networkupstools.org/compat/stable.html   * Compatibilité: http://www.networkupstools.org/compat/stable.html
Ligne 193: Ligne 220:
 === upsd.conf === === upsd.conf ===
  
 +Sous Squeeze:
 +  LISTEN 0.0.0.0
 +
 +Obsolete (ne plus utiliser) :
   ACL all 0.0.0.0/0   ACL all 0.0.0.0/0
   ACL localhost 127.0.0.1/32   ACL localhost 127.0.0.1/32
   ACL lan1 192.168.0.0/24   ACL lan1 192.168.0.0/24
-  ACL lan2 192.168.0.0/24+  ACL lan2 192.168.1.0/24
      
   ACCEPT localhost lan1 lan2   ACCEPT localhost lan1 lan2
Ligne 205: Ligne 236:
   [user]   [user]
   password        = <MOT_DE_PASSE_SECRET>   password        = <MOT_DE_PASSE_SECRET>
-  allowfrom       = localhost lan1 lan2+  #<OBSOLETE>#allowfrom       = localhost lan1 lan2
   actions         = SET   actions         = SET
   instcmds        = ALL   instcmds        = ALL
Ligne 219: Ligne 250:
      
   # TJ -----------------------------   # TJ -----------------------------
-  # 03/08/2008 +  # Ca coupe le courant a la toute fin. 
-  # En fait ca ne fonctionne pas, et d'ailleurs, est-ce une bonne idée ? +  # D'aprés mes tests: ca ne casse pas le RAID . 
-  # Je pense qu'il est préférable que l'on redemarre le PC avec "wakeonlan"+  # Par contre: bien laissé le temps au "slavede s'arreter!
   # ----------   # ----------
-  #POWERDOWNFLAG /etc/killpower+  POWERDOWNFLAG /etc/nut/killpower
      
   NOTIFYCMD /sbin/upssched   NOTIFYCMD /sbin/upssched
Ligne 238: Ligne 269:
   NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC   NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
   NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC   NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
-  NOTIFYFLAG FSD SYSLOG+WALL+  NOTIFYFLAG FSD SYSLOG+EXEC+WALL
   NOTIFYFLAG COMMOK SYSLOG+EXEC   NOTIFYFLAG COMMOK SYSLOG+EXEC
   NOTIFYFLAG COMMBAD SYSLOG+EXEC   NOTIFYFLAG COMMBAD SYSLOG+EXEC
Ligne 253: Ligne 284:
 J'ai surtout personnalisé le truc pour recevoir des mails sur l'etat de l'onduleur ! J'ai surtout personnalisé le truc pour recevoir des mails sur l'etat de l'onduleur !
  
-Le **''POWERDOWNFLAG''** est resté un mystere pour moi:\\ +Le **''POWERDOWNFLAG''** fonctionne, mais il faut bien ajuster les droits pour autoriser le daemon (nut) a creer un fichier dans **''/etc/nut''** . Donc pour cela: 
-Alors que les scripts sont là (y compris **''/etc/init.d/halt''**), impossible d'éteindre l'onduleur, au lieu d'eteindre le PC de par lui-même. Le fichier nommé par le flag ''POWERDOWNFLAG'' n'est jamais créé...+  # cd /etc/nut 
 +  # chown root:nut . 
 +  # chmod 0770 .
  
-L'autre problème évoqué [[http://eu1.networkupstools.org/doc/1.4.1/shutdown.html|ici]], est le RAID qu'il vaut mieux arreter proprement: Orje ne sais pas trop comment faire ca "proprement"''mdadm --readonly --scan'' ? ).+est resté un mystere pour moi:\\ 
 +Alors que les scripts sont là (y compris **''/etc/init.d/halt''**)impossible d'éteindre l'onduleur, au lieu d'eteindre le PC de par lui-même. Le fichier nommé par le flag ''POWERDOWNFLAG'' n'est jamais créé...
  
 +| :!: D'aprés mes tests, il n'y a pas de problème avec un RAID. |
 +| :!: S'il y a des slaves, il faut qu'ils aient le temps de s'arreter. |
  
-Au final, je crois que c'est mieux ainsi: dés que la batterie est trop faible, la machine s'eteind. Il faudra la rallumer manuellement, eventuellement par un petit coup de "wakeonlan". 
  
 === upssched.conf === === upssched.conf ===
Ligne 290: Ligne 325:
  
 === upssched-cmd === === upssched-cmd ===
 +
 +== new ==
 +
 +| :!: NOUVEAU SCRIPT |
 +
 +J'ai créé un nouveau script parce qu'a l'occasion de l'installation d'un slave (un "ReadyNAS Duo"), je me suis rendu compte que l'arret de l'onduleur est toujours effectué 20 secondes aprés le signal "LOWBATT".
 +
 +J'ai eu beau rechercher un moyen de changer cela: im-po-ssible. => Lorsque je recois un signal "LOWBATT", l'onduleur coupe 20 secondes plus tard !
 +
 +Ni le maitre, ni les slaves n'ont le temps de s'arreter en 20 secondes.
 +
 +Donc, j'ai refait un scripte qui donne une dizaine de minutes de sursis avant l'arret volontaire et propre, du maitre et de ces esclaves.
 +
 +Dans le même temps, ce script examine le pourcentage de charge des batteries de l'onduleur. Donc voici les nouvelles conditions:
 +  -En dessous de 80% de charge, on "force shutdown"
 +  -Aprés 12 minutes sur batterie, on "force shutdown"
 +
 +( Le nom de mon onduleur est "upscave" ... A adapter selon le votre. )
 +
 +  #! /bin/sh
 +  #
 +  # This script should be called by upssched via the CMDSCRIPT directive.
 +  #
 +  # Here is a quick example to show how to handle a bunch of possible
 +  # timer names with the help of the case structure.
 +  #
 +  # This script may be replaced with another program without harm.
 +  #
 +  # The first argument passed to your CMDSCRIPT is the name of the timer
 +  # from your AT lines.
 +  
 +  NAME=`basename $0`
 +  MYBATTLOW="80"
 +  
 +  case $1 in
 +  
 +        # TJ ----------------------------
 +        ups-on-batt)
 +                  BATTCHARGE="$( upsc upscave battery.charge )"
 +                logger -t "$NAME" "Coupure de courant! Charge: $BATTCHARGE"
 +                echo "Coupure de courant a la cave! Charge: $BATTCHARGE" | mail -s "$NAME: $1" root@localhost
 +                  if [  "$BATTCHARGE" -le "$MYBATTLOW" ]; then
 +                    logger -t "$NAME" "Charge $BATTCHARGE : Arret maintenant."
 +                  echo "Charge $BATTCHARGE : Arret maintenant." | mail -s "$NAME: $1" root@localhost
 +                    /sbin/upsmon -c fsd
 +                  fi
 +                ;;
 +        ups-on-line)
 +                logger -t "$NAME" "Retour du courant."
 +                echo "Retour du courant a la cave." | mail -s "$NAME: $1" root@localhost
 +                ;;
 +        onbatt|onbatt2|onbatt3|onbatt4|onbatt5)
 +                  BATTCHARGE="$( upsc upscave battery.charge )"
 +                logger -t "$NAME" "Coupure de courant [ $1 ] - confirme ! Charge: $BATTCHARGE"
 +                echo "Coupure de courant a la cave!!! Charge: $BATTCHARGE" | mail -s "$NAME: $1" root@localhost
 +                  if [  "$BATTCHARGE" -le "$MYBATTLOW" ]; then
 +                    logger -t "$NAME" "Charge $BATTCHARGE : Arret maintenant."
 +                  echo "Charge $BATTCHARGE : Arret maintenant." | mail -s "$NAME: $1" root@localhost
 +                    /sbin/upsmon -c fsd
 +                  fi
 +                ;;
 +  
 +        onbatt-fsd)
 +                  BATTCHARGE="$( upsc upscave battery.charge )"
 +                logger -t "$NAME" "Coupure de courant - force shutdown ! Charge: $BATTCHARGE"
 +                echo "Coupure de courant a la cave!!! force shutdown ! Charge: $BATTCHARGE" | mail -s "$NAME: $1" root@localhost
 +                  # stop au plus vite s'il y a une panne de jus
 +                  /sbin/upsmon -c fsd
 +                ;;
 +  
 +        ups-low-batt)
 +                logger -t "$NAME" "Charge faible."
 +                echo "Charge batterie faible." | mail -s "$NAME: $1" root@localhost
 +                ;;
 +  
 +        ups-shutdown)
 +                logger -t "$NAME" "Shutdown en cours..."
 +                echo "Le Shutdown est en cours..." | mail -s "$NAME: $1" root@localhost
 +                ;;
 +  
 +        ups-fsd)
 +                logger -t "$NAME" "FSD en cours..."
 +                echo "Le FSD est en cours..." | mail -s "$NAME: $1" root@localhost
 +                ;;
 +  
 +        ups-no-comm)
 +                logger -t "$NAME" "Communication absente"
 +                echo "Il n'y a plus de communication avec l'onduleur..." | mail -s "$NAME: $1" root@localhost
 +                ;;
 +  
 +        # -------------------------------
 +  
 +        upsgone)
 +                logger -t "$NAME" "The UPS has been gone for awhile"
 +                ;;
 +        *)
 +                logger -t "$NAME" "Unrecognized command: $1"
 +                # TJ ----------------------------
 +                echo "UPS info: $1" | mail -s "$NAME: Unrecognized command" root@localhost
 +                # -------------------------------
 +                ;;
 +  esac
 +
 +Bien sur, il faut adapter **''upssched.conf''** en conséquence:
 +  # cat upssched.conf | egrep "^AT"
 +  AT ONBATT * START-TIMER onbatt 120      ; # 2 minutes
 +  AT ONLINE * CANCEL-TIMER onbatt
 +  AT ONBATT * START-TIMER onbatt2 240     ; # 4 minutes
 +  AT ONLINE * CANCEL-TIMER onbatt2
 +  AT ONBATT * START-TIMER onbatt3 360     ; # 6 minutes
 +  AT ONLINE * CANCEL-TIMER onbatt3
 +  AT ONBATT * START-TIMER onbatt4 480     ; # 8 minutes
 +  AT ONLINE * CANCEL-TIMER onbatt4
 +  AT ONBATT * START-TIMER onbatt5 600     ; # 10 minutes
 +  AT ONLINE * CANCEL-TIMER onbatt5
 +  AT ONBATT * START-TIMER onbatt-fsd 720  ; # 12 minutes : force shutdown
 +  AT ONLINE * CANCEL-TIMER onbatt-fsd
 +  AT COMMBAD * START-TIMER upsgone 10
 +  AT COMMOK * CANCEL-TIMER upsgone
 +  AT ONBATT * EXECUTE ups-on-batt
 +  AT ONLINE * EXECUTE ups-on-line
 +  AT LOWBATT * EXECUTE ups-low-batt
 +  AT FSD * EXECUTE ups-fsd
 +  AT SHUTDOWN * EXECUTE ups-shutdown
 +  AT NOCOMM * EXECUTE ups-no-comm
 +
 +Pour résumer:\\
 +Dans mon cas, lorsque je recois un signal "LOWBATT", c'est que mon systeme va être coupé salement dans 20 secondes.
 +
 +== old ==
  
   #! /bin/sh   #! /bin/sh
Ligne 346: Ligne 511:
                 ;;                 ;;
   esac   esac
- 
- 
- 
- 
- 
  
  
Ligne 539: Ligne 699:
  
 ===== commandes ===== ===== commandes =====
 +==== couper vite, mais proprement ====
 Forcer l'arret du "maitre" comme si il y a avait eu une coupure de courant: Forcer l'arret du "maitre" comme si il y a avait eu une coupure de courant:
   # upsmon -c fsd   # upsmon -c fsd
 La procedure "shutdown" est immédiatement engagé. La procedure "shutdown" est immédiatement engagé.
  
-Couper le jus dans 10 secondes ! +==== couper le jus ==== 
-  # upsrw -s ups.delay.shutdown=10 -u user -p <MOT_DE_PASSE_SECRET> upscave@localhost+ 
 +Couper le jus dans "X" secondes ! 
 +<del>''upsrw -s ups.delay.shutdown=10 -u user -p <MOT_DE_PASSE_SECRET> upscave@localhost''</del> 
 + 
 +  # /sbin/upsdrvctl shutdown 
 + 
 +"X" est fonction de la conf de l'onduleur: généralement, 20 secondes. 
 + 
 +==== oups ! ==== 
 + 
 +A force de jouer, je me retrouve avec un onduleur avec ça: 
 +  battery.charge.low=10 
 + 
 +Corriger comme ca: 
 +  $ upsrw -s battery.charge.low=30 -u <USER> -p <PASS> <UPS_NAME> 
 + 
 +==== oups !!!! ==== 
 + 
 +Lorsque je recois un signal "LOWBATT" , même s'il reste 30% de charge, l'onduleur coupe dans les 20 secondes qui suivent. 
 + 
 +Impossible de changer cela. 
 + 
 +==== changer ====
  
 +  upsrw -s battery.charge.low=30 -u <user> -p <pass> <ups_name>
  
 +  upsrw -s ups.delay.shutdown=180 -u <user> -p <pass> <ups_name>
nut.1263333461.txt.gz · Dernière modification : 2010/01/12 21:57 de thierry