¿Alguna forma de reiniciar una máquina Linux a través de SSH si el sistema de archivos raíz no funciona?

15

Solo como curiosidad; algo salió mal con una máquina Linux, haciendo que el sistema de archivos raíz aparezca como "64Z". Algunos comandos funcionan, como top, dfy kill, pero a otros les gusta reboot"comando no encontrado" (ya que no puede leer el sistema de archivos raíz) y chmodaparece un error de segmentación.

¿Hay alguna forma de reiniciar el sistema de todos modos, es decir, sin el rebootprograma? Lo intenté kill -PWR 1(enviando SIGPWR a init), pero esto no pareció hacer nada.

Es sobre todo una curiosidad académica. El compañero de laboratorio que estaba haciendo cualquier trabajo de base de datos grande que causó la falla reiniciará físicamente la máquina pronto.

gatoatigrado
fuente
Espero que esto me salve del problema la próxima vez ... [ cyberciti.biz/tips/reboot-linux-box-after-a-kernel-panic.html ]
gatoatigrado
¿Has visto que el problema con la raíz fs ha desencadenado un pánico en el núcleo?
Hanan N.

Respuestas:

25

Intenta reiniciar con la clave mágica sysrq:

echo b > /proc/sysrq-trigger

Para obtener más información, lea la wiki o la documentación del núcleo .

prisa
fuente
1
¡Gracias! Esto reinició el sistema. (Desafortunadamente, lo que le sucedió al sistema de archivos raíz parece irrecuperable ... triste).
gatoatigrado
5

Un RAC (tarjeta de acceso remoto) o iLO (luces apagadas integradas) o MP (procesador de administración) le proporcionarán medios para restablecer su servidor.

Por ejemplo, si tiene un Dell PowerEdge con una tarjeta RAC (llamada DRAC), puede reiniciar el servidor a través de ssh:

ssh drac "racadm serveraction powercycle"

La otra opción es usar la GUI web para RAC / iLO y hacer lo mismo allí.

También hay un estándar abierto para estas cosas: IPMI.

Nils
fuente
3

Aún más interesante de lo que responde @Rush, es la capacidad de reiniciar (y mucho más) el sistema, incluso si el sistema no responde al teclado en absoluto. Pero tiene que responder a los paquetes de ping (ICMP).

Consulte aquí la documentación completa y las instrucciones sobre cómo implementar eso.

Hanan N.
fuente
44
¿Qué tal si realmente damos un resumen de las instrucciones / resumen de principios en lugar de solo un enlace?
kizzx2
necesitas hacer un poco de configuración para ese enfoque, pero definitivamente es una buena idea.
gatoatigrado
Eso suena interesante, pero ¿no existe un riesgo de seguridad considerable? Permitir que un servidor se reinicie a través de un solo paquete ICMP parece un ataque de denegación de servicio a punto de ocurrir.
bgvaughan
@bgvaughan: tienes razón, y en el enlace que he proporcionado anteriormente, hay ventajas y desventajas al respecto, y una de ellas es la seguridad, aunque puedes restringir quién puede hacerlo.
Hanan N.
2

La forma más fácil suele ser simplemente cambiar el nivel de ejecución.

En Linux, puedes hacer:

Prompt# init 6

Más información aquí: http://linux.about.com/od/itl_guide/a/gdeitl36t04.htm

Patricio
fuente
1
Esto no funcionará en esta situación. El comando init está en / sbin (al menos en ubuntu), por lo que requiere acceso al sistema de archivos.
Soleado
1

Esto requiere una configuración previa, pero si está acostumbrado a bloquear una máquina (por ejemplo, porque está haciendo un desarrollo de bajo nivel), es posible que desee configurar un perro guardián , es decir, un núcleo o tareas de usuario que lo reinicie automáticamente cuando se vuelve insensible. Linux puede usar un perro guardián de hardware si su placa base tiene uno, o un perro guardián de software de lo contrario.

Gilles 'SO- deja de ser malvado'
fuente