Les onduleurs intègrent eux même un seuil de batterie faible à partir duquel votre machine va commencer à s'éteindre. Le problème c'est que ce seuil n'est pas forcément adapté à toutes les machines. Pour certaines, l'onduleur aurait pu tenir encore un peu, alors que pour d'autre, la séquence d'arrêt est interrompue en plein milieu. J'ai par exemple eu le problème avec une machine sous CentOS 5 qui virtualise 5 VM. Pendant l'arrêt, l'ensemble des VM est mis en pause, et la mémoire est dumpée sur le disque dur, c'est une opération assez longue. Et bien souvent la dernière ou les deux dernières VM n'ont pas le temps d'être sauvegardées. On se retrouve donc avec un dump mémoire tronqué, et a démarrage suivant, libvirt va essayer d'injecter ça dans qemu, qui va planter lamentablement.
Il va d'abord falloir ajouter ou ajuster un utilisateur dans /etc/ups/upsd.users. L'utilisateur devra avoir les droits de changer les valeurs de l'onduleur:
[upsmaster] password = passw0rd allowfrom = localhost actions = set upsmon master
L'important est d'ajouter la ligne actions = set
Il faut ensuite que nut prenne ce changement en compte
/etc/init.d/ups restart
Il ne reste plus qu' à ajuster le seuil. Enfin, avant d'ajuster, on va quand même voir le seuil actuel avec:
upsc UPS battery.charge.low
Et pour régler une nouvelle valeur:
upsrw -s battery.charge.low=30 UPS