No dia 22 de maio de 2016, a energia elétrica foi desligada na parte da
manhã na Engenharia da UFMG para que a subestação fotovoltaica instalada
seja ligada. O sistema do servidor kvm.cefala.org foi desligado
graciosamente, de acordo com o arquivo syslog
:
May 22 08:35:39 CEFALA apcupsd[1168]: Initiating system shutdown!
May 22 08:35:39 CEFALA apcupsd[1168]: User logins prohibited
May 22 08:35:39 CEFALA systemd[24851]: Stopping Default.
May 22 08:35:39 CEFALA systemd[24851]: Stopped target Default.
May 22 08:35:39 CEFALA systemd[24851]: Stopping Basic System.
May 22 08:35:39 CEFALA systemd[24851]: Stopped target Basic System.
May 22 08:35:39 CEFALA systemd[24851]: Stopping Paths.
May 22 08:35:39 CEFALA systemd[24851]: Stopped target Paths.
May 22 08:35:39 CEFALA systemd[24851]: Stopping Timers.
May 22 08:35:39 CEFALA systemd[24851]: Stopped target Timers.
May 22 08:35:39 CEFALA systemd[24851]: Stopping Sockets.
May 22 08:35:39 CEFALA systemd[24851]: Stopped target Sockets.
May 22 08:35:39 CEFALA systemd[24851]: Starting Shutdown.
May 22 08:35:39 CEFALA systemd[24851]: Reached target Shutdown.
May 22 08:35:39 CEFALA systemd[24851]: Starting Exit the Session...
May 22 08:35:39 CEFALA systemd[24851]: Received SIGRTMIN+24 from PID 27192 (kill).
May 22 08:35:39 CEFALA smartd[1127]: smartd received signal 15: Terminated
May 22 08:35:39 CEFALA rsyslogd: [origin software="rsyslogd" swVersion="8.4.2" x-pid="1197" x-info="http://www.rsyslog.com"] exiting on signal 15.
O nobreak do servidor aguentou 40 minutos e o sistema de detecção de baixa autonomia das baterias funcionou a contento:
May 22 07:55:56 CEFALA apcupsd[1168]: Running on UPS batteries.
[…]
May 22 08:35:39 CEFALA apcupsd[1168]: Battery charge below low limit.
Entretanto, quando a energia elétrica foi restabelecida, o servidor não voltou ao ar. O processo de boot foi interrompido, devido a problemas no sistema de arquivos que já existiam antes do nobreak entrar em ação:
May 22 08:35:37 CEFALA kernel: [2818552.456483] EXT4-fs error (device md3): ext4_read_dirblock:902: inode #103025245: block 32: com\ m find:Directory hole found
Para evitar que o servidor fique fora do ar em situações como esta no
futuro, eu fiz as modificações abaixo, de modo a forçar a verificação do
sistema de arquivos, via fsck
, no momento do boot (inspiradas em uma
questão
do StackExchange):
- Criação do arquivo vazio
/forcefsck
, na raiz do sistema de arquivos. A presença deste arquivo é detectada pelo script de inicialização do sistema/etc/init.d/checkfs.sh
. Entretanto, em sua execução, este script apaga o arquivo/forcefsck
. - Para a coisa ficar perene, o arquivo
/etc/default/grub
deve ser modificado com a adição de"forcefsck"
na variávelGRUB_CMDLINE_LINUX
. O script/etc/init.d/checkfs.sh
detecta a presença da opçãoforcefsck
em/proc/cmdline
. Existe também a opção do kernelfsck.mode=force
, mas eu não encontrei documentação sobre ela para sistemas Debian. - Enfim, para que o
fsck
seja executado sem intervenção humana, adicionei a linhaFSCKFIX=yes
no arquivo/etc/default/rcS
.
Como não é possível, e nem desejável, fazer o teste desta nova configuração, teremos que esperar pelo próximo apagão e que ele ocorra num momento em que o sistema de arquivos contenha erros.
Update: A natureza nos deu uma mão e fez com que o teste acima pudesse ser realizado. No dia 21 de junho de 2016, houve falta de energia elétrica no CEFALA. O nobreak aguentou em torno de 40 minutos e o shutdown e o reboot foram realizados como esperado. Além disto, a partição /dev/md3 continha erros, que foram corrigidos convenientemente pelo fsck. Estas são as linhas relevantes do arquivo syslog:
Jun 21 09:32:03 CEFALA apcupsd[1133]: Battery charge below low limit.
Jun 21 09:32:03 CEFALA apcupsd[1133]: Initiating system shutdown!
Jun 21 09:32:03 CEFALA apcupsd[1133]: User logins prohibited
Jun 21 09:32:03 CEFALA smartd[1112]: smartd received signal 15: Terminated
Jun 21 09:32:03 CEFALA rsyslogd: [origin software="rsyslogd" swVersion="8.4.2" x-pid="1406" x-info="http://www.rsyslog.com"] exiting on signal 15.
Jun 21 10:21:00 CEFALA rsyslogd: [origin software="rsyslogd" swVersion="8.4.2" x-pid="1399" x-info="http://www.rsyslog.com"] start
Jun 21 10:21:00 CEFALA hdparm[282]: Setting parameters of disc: (none).
Jun 21 10:21:00 CEFALA keyboard-setup[283]: Setting preliminary keymap...done.
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] Initializing cgroup subsys cpuset
Jun 21 10:21:00 CEFALA mdadm-raid[280]: Generating udev events for MD arrays...done.
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] Initializing cgroup subsys cpu
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] Initializing cgroup subsys cpuacct
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04)
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.16.0-4-amd64 root=UUID=2cfbd920-4a21-4bcd-9e07-4b7337f6ea74 ro quiet
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] e820: BIOS-provided physical RAM map:
Jun 21 10:21:00 CEFALA systemd-fsck[487]: /dev/md3: recovering journal
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009a3ff] usable
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] BIOS-e820: [mem 0x000000000009a400-0x000000000009ffff] reserved
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000008c11afff] usable
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] BIOS-e820: [mem 0x000000008c11b000-0x000000008c1fafff] ACPI NVS
Jun 21 10:21:00 CEFALA kernel: [ 0.000000] BIOS-e820: [mem 0x000000008c1fb000-0x000000008c4e7fff] ACPI data
O MRTG implementado pelo Arlindo e explicado num outro artigo, mostra como a carga da bateria evoluiu durante o apagão:
[N.B.: Segundo Arlindo, a existência das faixas brancas de menor espessura ao longo do gráfico não é algo que está relacionado à saúde do nobreak, mas ao script de coleta de dados via USB.]