Harter Reset via SSH ohne Prozesskill?

flashman

Member
Servus!

Gibt es unter FreeBSD eigentlich eine adäquate Möglichkeit, einen Reboot zu erzwingen, und zwar in der Form, dass alle Prozesse und Syncs übersprungen werden (als wenn man den Reset-Knopf drückt)? Ich habe das Problem, dass die letzte IDE Platte im Server hin- und wieder folgenden Fehler erzeugt:

ad0: READ command timeout tag=0 serv=0 - resetting
ata0: resetting devices ..

Ich komme dann zwar per SSH rauf, aber es gibt bisher keine Chance, einen Reboot machen zu lassen. Der buffdaemon "Wartet max 60sec." aber bleibt genau da hängen. Ein reboot -l -n -q hilft auch nicht. Liegt wohl auch daran, dass er die gemountete Festplatte unmounten will, aber nicht kann.

Unter Linux gabs einen Hard-Reset als Befehl...

Danke,
Andreas
 
Das einzige was mir gerade einfällt ist eine extreme Bastellösung: bei mir bootet FreeBSD (4.9-p2) sofort neu wenn ich versuche eine FAT32 Partition inkorrekt zu mounten, also z.B. statt das entsprechende Slice direct das Device. Bei meinem iPod sieht das so aus:

mount -t msdos /dev/da0 /mnt/blabla -> System stürzt ab und bootet sofort neu.

Ich weis nicht ob das bei dir klappt und es ist wie gesagt eine extreme Bastellösung, hübscher wäre wohl zu versuchen das Problem mit der IDE Platte direkt zu lösen. Eventuell ist ja das Kabel defekt / zu lang? Was passiert wenn du die Platte vor dem Neustart manuell unmountest?
 
Wieso brauchst du einen so harten Reset? Die paar Sekunden.... ich bin neugierig :-) Zudem in den paar Sekunden ja sinnvolles gemacht wird und nicht nur irgendwas.

Gruß, incmc
 
Das Problem liegt glaub ich darin dass sich das System nach dem "Flushing device buffer" etc. komplett aufhängt. Ich habe bei meinem Thinkpad X31ein ähnliches Problem: wenn ich ohne Ultrabase boote (ist so etwas wie eine Mini Docking Station mit einem IDE CD Lw) kann ich auch nicht sauber herunterfahren sondern das System friert ein.
 
Aloa :-)

@Dr.Sweety: Auch wenn Du selbst sagst, dass es eine extreme bastellösung ist, werde ichs mal versuchen.

@incmc: Das problem ist ja, dass er eben nie rebootet. Du bekommst ihn mit nichts in der Welt dazu, einen Reboot zu machen. Wenn sich die ATA Platte resetten will, aber es nicht schafft, dann hat der kernel ein Problem. Seine prozesse fürs Syncen und Puffern hängen daran und können nichtmal per kill abgeschossen werden. Änderungen am Dateisystem werden nicht wirklich geschrieben.

Du sitzt im Büro und bis per ssh drauf, denkst noch, na solange ssh läuft, kann ich auch alles reparieren. Aber Pustekuchen, nach 30min gibst Du auf und fährst ins Rechenzentrum, weil sämtliche mounts (egal ob mit force oder ohne), halts, reboots, kills einfach nicht laufen. Die Situation ist bisher absolut aussichtslos. Deshalb meine Suche nach einem Extrem-Reset via Befehl.. Quasi ein Reboot, der ohne jeglichen Umweg die Resetfunktion des Boards aufruft, notfalls eben auch über das Schreiben in geschützte Speicherbereiche (Bios, ACPI etc evt.?).

Anbei: Die Platte habe ich rausgeworfen, heute morgen noch. Aber für die Zukunft wäre das dennoch sehr interessant, auch wenn es eine extreme Lösung ist. Kann ja anderen auch passieren, und dann ist Hilfe ganz praktisch:rolleyes:

Flashi:cool:

P.S.: Heute morgen, als das wieder passierte und ich durch halb Berlin düste, war nach dem Entfernen der alten ATA Platte (der Rest ist SCSI) meine /etc/fstab leer! Immer wieder eine Freude, wenn man sowas feststellt und die Kunden (ist ein Webserver) einem im nacken hängen.
 
Oder am Mainboard, bzw. dem Zusammenspiel von beiden. Ich weiss nicht, ob das Zwangsresetten nun von hard- oder Softwarefehlern aufgerufen wurde. Die Platte checke ich bald mal durch. Auf anderen FreeBSD Servern trat das bisher bei uns nicht auf, aber die haben auch anderen Konfigurationen.

Was mich etwas ärgert: Die Platte sollte eigentlich in der /etc/fstab schon seit Wochen auskommentiert sein. Es gab keine(!) Prozesse, die irgendetwas auf der Platte zu suchen hatten...Außer..:Args...chk.permissions ... Ein Cronscript, dass wohl täglich das Dateisystem durchsucht und fiese UID 0 Dateien aufsucht (oder so ähnlich). Und das führte dann zum Fehler siehe oben. Sonst würde die Platte stillgelegt schlummern und keine Bytes flößen an ihr vorbei.

Flashi:rolleyes:
 
es gibt nen system call:
man 2 reboot

Code:
#include <unistd.h>
#include <sys/reboot.h>

int
main(int argc, char **argv)
{
  reboot(RB_AUTOBOOT | RB_NOSYNC);
}

irgendwie so müsste es gehen.

gruss
Male
 
Den werde ich mir mal fix zusammenkompilieren. Aber das Argument für nosync kann ich auch via reboot -l -n -q aufrufen, und das funktioniert absolut nicht.

Was besser wäre: Ein kleines proggi, was keine Rebootfunktionen nutzt (weil die alle bestimmte Sachen durchlaufen), sondern eben einen Reset unabhängig von der aktuellen Laufzeitumgebung erzwingt. So ähnlich wie die falsch gemountete Partition, wo wohl der Kernel so verrückt spielt, dass der Bildschirm sofort kurz ausgeht und das Bios den Speicher neu hochzählt...Die Steigerung davon wäre, wenn dieses Programm den Kernel umgeht und selbst diese "Reaktion" hervorruft.:D

Nachtrag: Dein Reboot funktioniert :-)) Leider kann ichs ad hoc nicht in der problemumgebung testen:-)))

Andreas:)
 
Nunja, da hast Du natürlich recht. Aus der Umgebung ausbrechen würde ja auch heissen, die ultimative Sicherheitslücke zu schaffen. Ein Nobody startet das Programm und das umgeht den Kernel, setzt ein neues Root-Passwort und schwups, ist man "drin". Hast recht, da habe ich mich etwas falsch ausgedrückt.

Also was ich meinte: Mit Hilfe des Kernels ein Hard-Reset durch direktes Buffer-Overflowing:D

Flashi:zitter:
 
@flashman,

selbigen Fehler hatte ich auch. Problem war das Zusammenspiel von meiner 80gig Maxtor und dem SIS-Chipsatz. Trat auch erst auf, als ich ne 2te Platte ins System gehaengt habe. Nach ewigem Basteln, Newsgroups durchsuchen, komische Methoden ausprobieren (Parallel-Port ausschalten im Bios usw.) habe ich, da an jedem Kanal je eine HD und ein CDROM haengt, die Platten anders gejumpert.
Vorher waren sie jeweils nur auf 'Master' gejumpert, jetzt 'Master with Slave present'. Vorher frierte mein gesamtes System ein mit selbiger Fehlermeldung wie bei Dir, jetzt kommt die Meldung kurz und es laeuft alles weiter nach ca. 2 Sekunden. Vielleicht hilft es ja bei Dir.
 
Also, ein richtiger Reset ist IMHO nicht aus einem OS heraus möglich.
Auch Linux kennt nur die Methode ohne Sync zu rebooten.

Und Reset ist ja ein Kurzschlußschalter auf dem Board

Es gibt aber von APC eine Lösung. Im Prinzip ist das ein Stromverteiler mit
Netzwerkinterface. Da kannst Du über einen Browser den Strom wegnehmen.
Alternativ gibt's auch noch PCI-Karten von Peppercon. Da hat man eine Art
Rechner im Rechner, brauchen auch einen separaten LAN-Anschluß und auch da kannst Du z.B. mit einem Browser auf die Kiste gehen.
Mir ist zu Ohren gekommen, daß man da sogar das BIOS des Hostsystems verstellen kann.

Gruss...

Der Indy
 
@Indy: Die Pepperconkarten heißen u.a. in der einfachsten Version "Rolf - ROL-F" und zwei davon liegen neben mir. Mich ärgert schon, die gekauft zu haben, weil man sie

1. Mit einem Windowsrechner vorkonfigurieren muss:mad:
2. Nur mit einem Windows-Programm ansteuern kann (übers Netzwerk):eek:

Sie können zwar in einem Unix-Server stecken, aber wieso muss ich mir deshalb gleich einen Windows-Server anschaffen, um dann per PC-Anywhere dort einzuloggen und das Reset-Programm für die Karte auf dem Unix-server zu starten?:confused: Man bedenke, dass das spezielle TCP-Frame-Paket aus dem gleichen Netzwerksegment kommen muss und nicht routbar ist. Ich kann also nicht vom Büro aus sagen: Reboot Unix-Server.

Deshalb sind die Karten noch nicht "drin". Eigentlich wäre ein kleines Gerät auf analog oder ISDN basis super, das ruft man an, drückt nen zifferncode und schwups wird der Reset ausgelöst. Sowas wäre perfekt:cool:

Übrigens muss das Reboottool von linux doch etwas anders laufen. Wenn ich bei (Suse 8.0 kernel 2.4.20) "reboot -n -d -g" mache, dann blitzt der Monitor auf und der Rechner rebootet in Echtzeit. Bei FreeBSD will er noch Daemonen beenden (buffdeamon etc..) sehr Seltsam.

Flashi;)
 
@flashman: Nicht die ROLF, die eIRC.

Moment...

Hier: http://www.peppercon.de/onlinelab00.html
Kannst Du sie testen.

Jupp, die Parameter für Linux sind mir bekannt.
Das ist aber auch nichts weiter als ein Software-Reset.
Ich hatte das Problem mal bei einem 400 km entfernten Rechner...
Es hat nich geklappt :(

Gruss...

Der Indy
 
Die eRIC ist schon schön, aber wer soll das bei der Menge an Servern bezahlen:eek: ???

Wir dachten uns, ROL-F sei gerade noch so im Rahmen und haben zwei bestellt. Dann wurde klar, dass das doch nicht so einfach ist und wir zudem den Cisco router im RZ nicht mit einem Realtek-Chip "veräppeln" wollten...Also wäre ein kleines neues Zweit-Subnetz (privater Adressraum) mit eigenem "Hub" nötig...und irgendwie wirds darauf auch hinauslaufen...Aber wann:rolleyes:

Sonnige Grüße,
Flashi;)
 
Also, die ROLF kannst Du auch mit jedem halbwegs gescheiten Board nachbilden...
Wake On Lan und Reset On Lan sollten moderne ATX-Boards eigentlich schon drauf haben.
Die ist ohnehin eher für ältere Kisten gedacht.

Gruss...

Der Indy
 
Wake-On-Lan: OK, aber Reset-On-Lan habe ich bisher noch nicht gefunden:eek: Früher hätte ich das aus dem FF gewußt, da haben wir noch mit Hardware gehandelt, aber heute sieht das anders aus:cool:

Flashi:p
 
Also, das RoL war immer bei Abit-Boards drauf.

Ist aber ohnehin in jedem Award-Bios vorhanden, man muß es nur freischalten ;-)

(Was andere angeht, weiß ich es nicht.)

Gruss...

Der Indy
 
Das ist eine super Info! Danke. Aber wie bekommt das Bios es mit, wenn auf der Netzwerkkarte (bei uns Intel Pila bzw. 3Com) eine Reset-Packet ankommt?

Über nähere Infos wäre ich sehr verbunden;)

Flashi:)
 
man ist das alles aufwendig. ich würde
1. mir den linux code für reboot anschauen, vielleicht kann man da was neues erfahren
2. ne relais nehmen, mit dem seriellen und den reset-pins verdrahten und ein paar zeilen code schreiben um einen schönen "hardware" reset auszuführen.

gruss
 
@Flashman: Ich habe nicht die leiseste Ahnung, wie man das anstellt, aber irgendwo hatte ich mal einen Artikel darüber, wie man versteckte Optionen im Award-Bios sichtbar macht, da wurde das erwähnt.
Werde mich diesbezüglich mal auf die Suche machen, kann aber nichts versprechen. Alternativ gibt's doch auch noch dieses Bios Kompendium im Netz, ich finde grade keinen Link und Google will auch nichts vernünftiges verraten.

Achja, Intel Boards können das wohl auch, wie mir ein Kollege grade erzählte. Aber die haben diese komischen Intel-NIC's drauf, die sind doof.

Gruss...

Der Indy
 
Ich mag Intel-Netzwerkadapter eigentlich sehr. Von allen netzwerkkarten, die wir so in Betrieb haben, machen die meines Erachtens nach den besten Eindruck. Immer maximaler Datendurchsatz, keine Drops und vor allem sehr kompatibel in allen Plattformen. 3Com ist dagegen schon mittlerer Horror. Unter Linux muss ich in der modules.conf extra einen Parameter setzen, damit die Karte sich in den 100 MBit full Duplex Modus begiebt.

Die Idee mit dem Relais ist schon Klasse, so könnte man quasi mit einem Rechner mehrere andere in der Nähe resetten. Andersrum ist die beste Lösung ja eigentlich die, wo der Server immer läuft. Wir haben da einen auf Suse 8.0 laufen, den hat seit 18 Monaten keiner mehr angefaßt und es gab nie ein Problem. Das liegt aber keinesfalls an Suse, sondern wohl eher an der sehr ausgeglichenen Hardwarekonfiguration. Denn andere Suse-Kisten sind der mittlere Horror. Der Grund, sich wieder auf das wesentliche zu besinnen: Unix (Bsd Derivate).

Ein Server ist uns fast Hops gegangen, weil sich nach über einem Jahr rausstellte, das sich Raid und ReiserFS nicht unbedingt vertragen und man schnell mal so richtig ne Platte verlieren kann. Irgendwann stieß ich dann auf die neuen Features von UFS 2 mit Soft-Updates und fand das Konzept sehr gut.

Sorry, ich schweife aus :-)

Kurze Querfrage: Bei uns läuft Kernel.Securelevels=2, gibt es irgend eine Chance, die Urzeit wieder zu stellen, ohne zu rebooten?

Andreas:confused:
 
Mit date, ntpdate und ntpd: Keine Chance. Alle zeigen die Uhrzeit, bzw. den Offset von Zeitserver an, aber keines der Tools kann die Uhrzeit setzen! Und die Securelevels kann ich mit sysctl nicht senken, nur anheben :-))

Naja....;)

Flashi:rolleyes: (Der nebenbei noch im jeepforum.info schreibt:D )
 
Zurück
Oben