Reinicie un linux cuando rootfs no esté disponible

Oct 08 2020

¿Cómo se puede hacer que un dispositivo basado en Linux se reinicie una vez que su rootfs deja de estar disponible?

Solo hay un perro guardián de software disponible.

El problema es que rootfs se monta desde NFS. Cuando detengo el servidor NFS, el dispositivo se bloquea. Sin embargo, quiero que se reinicie. ¿Cómo puedo conseguir esto?

Es decir: hay un rootfs problemático, ¿hay algo en el nivel del kernel que pueda restablecer todo el sistema? No me preocupan los archivos y recursos abiertos / corruptos.

Nota: no tengo las fuentes del kernel para esta arquitectura. El dispositivo no tiene cabeza, no hay monitor ni teclado conectado. Hay una consola raíz con agetty(definido en /etc/inittab).

Respuestas

AdminBee Oct 08 2020 at 14:17

No indicó si tiene un teclado físico conectado, pero si lo tiene, entonces las "Teclas Mágicas SysRq" podrían ayudar. En tu caso

  • Alt+ SysRq+ Spara sincronización de emergencia a disco, y
  • Alt+ SysRq+ Bpara reinicio inmediato

debería hacer el trabajo. Tenga en cuenta que para que esto funcione es necesario que estas combinaciones de teclas no estén desactivadas, consulte la configuración en la /proc/sys/kernel/sysrqque se encuentra una máscara de bits con OR de las acciones SysRq permitidas (reproducida desde aquí ):

  2 =   0x2 - enable control of console logging level
  4 =   0x4 - enable control of keyboard (SAK, unraw)
  8 =   0x8 - enable debugging dumps of processes etc.
 16 =  0x10 - enable sync command
 32 =  0x20 - enable remount read-only
 64 =  0x40 - enable signalling of processes (term, kill, oom-kill)
128 =  0x80 - allow reboot/poweroff
256 = 0x100 - allow nicing of all RT tasks

También puede activar esto desde un script / programa de shell escribiendo a /proc/sysrq-trigger:

echo "b" > /proc/sysrq-trigger

Esto funcionará sin importar cuáles sean las configuraciones /proc/sys/kernel/sysrq, que solo restringen los eventos SysRq inducidos por el teclado.

telcoM Oct 09 2020 at 15:20

Parece que necesitaría la opción de montaje onerror=panicpara su sistema de archivos raíz NFS, pero no estoy seguro de si funcionará con NFS. Es posible que también deba montar el sistema de archivos raíz NFS con la opción de montaje específica de NFS softpara que se agote el tiempo de espera y devuelva un error en lugar de volver a intentarlo para siempre.

Nota: la softopción de montaje puede causar daños en el archivo y / o pérdida de datos, pero en los comentarios dijiste específicamente que eso no te importa.

¿Vale la pena intentarlo?