|
|
| (9 intermediate revisions by 4 users not shown) |
| Line 25: |
Line 25: |
| needs a new battery every four years, under optimal operating | | needs a new battery every four years, under optimal operating |
| conditions. | | conditions. |
|
| |
| The end of ConfigExample book says:
| |
|
| |
| Joe's server will still be allright
| |
| if power drops off in the night.
| |
| That 8 year old pack
| |
| of battery backup
| |
| will easily handle th connection lost
| |
|
| |
|
| = Components of NUT Software = | | = Components of NUT Software = |
| Line 102: |
Line 94: |
| # upsmon initiate shutdown once this threshold is reached. | | # upsmon initiate shutdown once this threshold is reached. |
| "lowbatt = 40" | | "lowbatt = 40" |
| | |
| | # ignore it if the UPS reports a low battery condition |
| | # without this, system will shutdown only when ups reports lb, |
| | # not respecting lowbatt option |
| | "ignorelb" |
| ]; | | ]; |
| }; | | }; |
| Line 135: |
Line 132: |
| # declarations. upsd.users | | # declarations. upsd.users |
| users."nut-admin" = { | | users."nut-admin" = { |
| passwordFile = "${../resources/ups-passwd.txt}"; | | # A file that contains just the password. |
| | passwordFile = "/etc/nixos/ups-passwd.txt"; |
| upsmon = "primary"; | | upsmon = "primary"; |
| }; | | }; |
| Line 150: |
Line 148: |
| powerValue = 1; | | powerValue = 1; |
| user = "nut-admin"; | | user = "nut-admin"; |
| passwordFile = "${../resources/ups-passwd.txt}"; | | passwordFile = "/etc/nixos/ups-passwd.txt"; |
| type = "primary"; | | type = "primary"; |
| }; | | }; |
| Line 207: |
Line 205: |
| }; | | }; |
| </syntaxhighlight> | | </syntaxhighlight> |
| | | [[Category:Hardware]] |
| = Delay UPS Shutdown =
| |
| | |
| As part of the system shutdown process, there needs to be an action to
| |
| send a message to the UPS to tell it that some time later, it too will
| |
| shut down. Note that the UPS does not shutdown at the same time as the
| |
| system it protects. The UPS shutdown is delayed. By default the delay
| |
| is 20 seconds. The absence of AC power to the protected system for a
| |
| sufficient time has the effect of resetting the BIOS options, and in
| |
| particular the option Restore power on AC return. This BIOS option
| |
| will be needed to restart the box.
| |
| | |
| During the system shutdown, systemd service unit runs the command
| |
| upsdrvctl shutdown. This tells the UPS that it is to shut down
| |
| offdelay seconds later. The system powers down before offdelay seconds
| |
| have passed. Wall power returns before the UPS shuts down Less than
| |
| offdelay seconds have passed. The UPS continues it's shutdown
| |
| process.
| |
| | |
| After offdelay seconds the UPS shuts down, disconnecting it's
| |
| outlets. The beeping stops. With some UPS units, there is an audible
| |
| clunk. An interval of ondelay-offdelay seconds later: After ondelay
| |
| seconds the UPS turns itself on, and repowers it's outlets. The system
| |
| BIOS option Restore Power on AC return has hopefully been selected and
| |
| the system powers up.
| |
| | |
| There is a danger that the system will take longer
| |
| than the default 20 seconds to shut down. If that were to happen, the UPS shutdown
| |
| would provoke a brutal system crash. We have adjusted offdelay above, to solve this issue.
| |
| | |
| | |
| <syntaxhighlight lang="nix">
| |
| # copied from ConfigExamples 3.0 book, Appendix B.2.
| |
| systemd.services.nut-delayed-ups-shutdown = {
| |
| unitConfig = {
| |
| Description = "Initiate delayed UPS shutdown";
| |
| Before = "umount.target";
| |
| DefaultDependencies = false;
| |
| };
| |
| serviceConfig = {
| |
| Type = "oneshot";
| |
| ExecStart = ''${pkgs.bash}/bin/bash -c\
| |
| "${pkgs.util-linux}/bin/logger -t\
| |
| nut-delayed-ups-shutdown 'upsdrvctl shutting down UPS';\
| |
| ${pkgs.nut}/bin/upsdrvctl shutdown"'';
| |
| };
| |
| wantedBy = [ "final.target" ];
| |
| };
| |
| </syntaxhighlight>
| |