Est-il possible de redémarrer une machine Linux via SSH si le système de fichiers racine ne fonctionne pas?


15

Tout comme une curiosité; quelque chose s'est mal passé avec une machine Linux, faisant apparaître le système de fichiers racine comme "64Z". Quelques commandes fonctionnent, comme top, dfet kill, mais d'autres comme rebootproposent "commande introuvable" (car il ne peut pas lire le système de fichiers racine), et chmodprésente un défaut de segmentation.

Existe-t-il un moyen de redémarrer le système de toute façon, c'est-à-dire sans le rebootprogramme? J'ai essayé kill -PWR 1(envoyer SIGPWR à init), mais cela ne semblait rien faire.

C'est surtout une curiosité académique. Le compagnon de laboratoire qui effectuait le travail de grande base de données à l'origine de l'échec redémarrera physiquement la machine bientôt.


Espérons que cela me sauvera du problème la prochaine fois ... [ cyberciti.biz/tips/reboot-linux-box-after-a-kernel-panic.html ]
gatoatigrado

Avez-vous vu que le problème avec le root fs a déclenché une panique du noyau?
Hanan N.

Réponses:


25

Essayez de redémarrer avec la clé magique sysrq:

echo b > /proc/sysrq-trigger

Pour plus d'informations, consultez la documentation du wiki ou du noyau .


1
Merci! Cela a redémarré le système. (Malheureusement, tout ce qui est arrivé au système de fichiers racine semble irrécupérable ... triste).
gatoatigrado

5

Un RAC (carte d'accès à distance) ou iLO (éclairage intégré) ou MP (processeur de gestion) vous fournira les moyens de réinitialiser votre serveur.

Par exemple, si vous avez un Dell PowerEdge avec une carte RAC (appelée DRAC), vous pouvez redémarrer le serveur via ssh:

ssh drac "racadm serveraction powercycle"

L'autre option consiste à utiliser l'interface Web pour RAC / iLO et à faire de même là-bas.

Il existe également un standard ouvert pour ce genre de choses: IPMI.


3

Encore plus intéressant que ce que @Rush répond, est la possibilité de redémarrer (et bien plus) le système, même si le système ne répond pas du tout au clavier. Mais il doit répondre aux paquets ping (ICMP).

Voir ici pour la documentation complète et les instructions sur la façon de l'implémenter.


4
Que diriez-vous de donner en fait un bref des instructions / résumé des principes au lieu d'un simple lien?
kizzx2

vous devez faire un peu de configuration pour cette approche, mais certainement une bonne idée.
gatoatigrado

Cela semble intéressant - mais n'y a-t-il pas un risque de sécurité considérable? Permettre à un serveur d'être redémarré via un seul paquet ICMP semble être une attaque par déni de service en attente de se produire.
bgvaughan

@bgvaughan: vous avez raison, et sur le lien que j'ai fourni ci-dessus, il y a des avantages et des inconvénients, et l'un d'eux est la sécurité, bien que vous puissiez restreindre qui peut le faire.
Hanan N.

2

Le moyen le plus simple consiste généralement à simplement modifier le niveau d'exécution.

Sous Linux, vous pouvez faire:

Prompt# init 6

Plus d'informations ici: http://linux.about.com/od/itl_guide/a/gdeitl36t04.htm


1
Cela ne fonctionnera pas dans cette situation. La commande init se trouve dans / sbin (au moins dans ubuntu), elle nécessite donc un accès au système de fichiers.
Sunny

1

Cela nécessite une configuration préalable, mais si vous avez l'habitude de planter une machine (par exemple parce que vous effectuez un développement de bas niveau dessus), vous souhaiterez peut-être configurer un chien de garde , c'est-à-dire un noyau ou des tâches utilisateur qui le redémarreront automatiquement lorsque il ne répond plus. Linux peut utiliser un chien de garde matériel si votre carte mère en a un, ou un chien de garde logiciel sinon.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.