Eu tenho um servidor doméstico (HP Proliant ML310 G4) que comprei do meu empregador há um mês ou mais. O servidor roda o Debian Linux e eu o uso para quase tudo. Posso fazer isso porque minhas necessidades não são tão exigentes, por isso o servidor raramente está sob cargas pesadas a qualquer momento. Este servidor possui um array RAID1 de 2 TB (com um hot spare) gerenciado pelo mdadm que eu uso para compartilhar arquivos na minha rede via Samba. Estou executando o sistema operacional em um disco rígido menor que não faz parte da matriz.
O servidor é alimentado por um pequeno no-break de 255 watts porque preciso suportar pequenas flutuações de energia sem cair. Isso é muito importante porque um desligamento repentino e imundo (causado por queda de energia ou blecaute) pode danificar o array RAID, o que já aconteceu em uma ocasião.
No caso de uma falha de energia, estou estimando que o no-break tenha apenas 10 a 15 minutos de energia. Pode haver mais, mas não quero assumir automaticamente que existe. Isso é suficiente para superar apagões que duram alguns minutos ou menos. No entanto, se a energia cair por várias horas, preciso que o servidor se desligue automaticamente automaticamente antes que a energia do no-break falhe. Esperamos que isso evite que a integridade do RAID seja processada nessas situações.
Esse tipo de coisa é fácil em um laptop porque ele possui sensores embutidos para determinar quando ele está funcionando com bateria, mas esse servidor não (tanto quanto eu sei). Eu tenho uma configuração de rede incomum em que meu modem DSL é separado do meu roteador. O roteador também está no no-break, o que me permite fazer o SSH através do meu laptop e desligar o servidor em caso de falta de energia. Infelizmente, isso só funciona se eu estiver lá no momento. Eu preciso de uma solução que sempre funcione, esteja lá para intervir ou não.
Como meu modem DSL não está no no-break, ele ficaria com o restante se a energia falhar. Configurei-o dessa maneira deliberadamente, porque tenho uma idéia de como resolver esse problema: estava pensando em escrever um script que faria ping no google.com ou em algum outro site de alto tráfego / alta disponibilidade. Se o ping for concluído com êxito, o servidor continuará em execução. Se o ping falhar (porque o modem está desligado), o script pensará que a energia está desligada e diria ao servidor para desligar. Eu adicionaria o script ao Cron e o executaria a cada 5 minutos. Esperamos que isso dê ao servidor tempo suficiente para desligar antes que o no-break fique sem energia.
Antes de me dar ao trabalho de escrever o script, gostaria de saber se há uma maneira melhor de fazer o que preciso. Agradecemos antecipadamente por qualquer ajuda.