Tengo un servidor doméstico (HP Proliant ML310 G4) que compré a mi empleador hace aproximadamente un mes. El servidor ejecuta Debian Linux y lo uso para casi todo. Puedo salir adelante haciendo esto porque mis necesidades no son tan exigentes, por lo que el servidor rara vez está bajo cargas pesadas en un momento dado. Este servidor tiene una matriz RAID1 de 2 TB (con un repuesto dinámico) administrado por mdadm que uso para compartir archivos en mi red a través de Samba. Estoy ejecutando el sistema operativo desde un disco duro más pequeño que no es parte de la matriz.
Tengo el servidor alimentado a través de un pequeño UPS de 255 vatios porque lo necesito para soportar pequeñas fluctuaciones de energía sin caer. Esto es muy importante porque un apagado repentino y sucio (causado por un corte de energía o un apagón) puede arruinar la matriz RAID, lo que ya sucedió en una ocasión.
En caso de una falla de energía, estoy estimando que el UPS tiene solo 10-15 minutos de energía. Puede haber más, pero no quiero suponer automáticamente que la hay. Esto es suficiente para superar los apagones que duran unos minutos o menos. Sin embargo, si la alimentación se apaga durante varias horas, necesito que el servidor se apague automáticamente antes de que falle la alimentación del UPS. Con suerte, esto evitará que la integridad de RAID se mangue en esas situaciones.
Este tipo de cosas es fácil en una computadora portátil b / c, tiene sensores incorporados para determinar cuándo funciona con batería, pero este servidor no (por lo que sé). Tengo una configuración de red inusual donde mi módem DSL está separado de mi enrutador. El enrutador también está en el UPS, lo que me permite ingresar SSH a través de mi computadora portátil y apagar el servidor en caso de una falla de energía. Desafortunadamente, esto solo funciona si estoy allí en el momento de hacerlo. Necesito una solución que siempre funcione si estoy allí para intervenir o no.
Como mi módem DSL no está en el UPS, se apagaría con todo lo demás si falla la alimentación. Lo configuré así deliberadamente porque tengo una idea sobre cómo resolver este problema: estaba pensando en escribir un script que hiciera ping a google.com o algún otro sitio de alto tráfico / alta disponibilidad. Si el ping se completa con éxito, el servidor seguirá ejecutándose. Si el ping falla (porque el módem está apagado), la secuencia de comandos pensaría que está apagado y le indicará al servidor que se apague. Agregaría el script a Cron y lo ejecutaría cada 5 minutos. Con suerte, eso le daría al servidor suficiente tiempo para apagarse antes de que el UPS se quede sin energía.
Antes de tomar la molestia de escribir el guión, me gustaría saber si hay una mejor manera de hacer lo que necesito. Gracias de antemano por cualquier ayuda.