Was * genau * wird geschraubt, wenn ich -9 töte oder die Kraft ziehe?


13

Installieren

Ich bin jetzt schon eine ganze Weile Programmierer, aber ich bin immer noch ein bisschen verwirrt in tiefen, internen Dingen.

Jetzt. Mir ist klar, dass es auch keine gute Idee ist:

  1. töte -9 einen Prozess (schlecht)
  2. Spontan den Netzstecker eines laufenden Computers oder Servers ziehen (schlimmer)

Manchmal muss man es jedoch einfach tun. Manchmal reagiert ein Prozess einfach nicht, egal was Sie tun, und manchmal reagiert ein Computer einfach nicht, egal was Sie tun.

Nehmen wir ein System an, auf dem Apache 2, MySQL 5, PHP 5 und Python 2.6.5 über mod_wsgi ausgeführt werden.

Hinweis: Mich interessiert hier Mac OS X am meisten, aber eine Antwort, die sich auf jedes UNIX-System bezieht, würde mir helfen.

Mein Konzern

Jedes Mal, wenn ich einen dieser Schritte ausführen muss, insbesondere den zweiten, mache ich mir große Sorgen, dass etwas kaputt gegangen ist. Eine Datei könnte irgendwo beschädigt sein - wer weiß welche Datei? Auf dem Computer befinden sich über 1.000.000 Dateien.

Ich verwende häufig OS X, daher führe ich einen "Verify Disk" -Vorgang über das Festplatten-Dienstprogramm aus. Es werden keine Probleme gemeldet, aber ich bin immer noch besorgt darüber.

Was ist, wenn irgendwo eine Konfigurationsdatei kaputt geht? Oder noch schlimmer, was ist, wenn eine Binärdatei irgendwo beschädigt ist. Oder eine Skriptdatei ist jetzt irgendwo beschädigt. Was ist, wenn Hardware beschädigt ist?

Was ist, wenn ich es erst nächsten Monat in einem kritischen Szenario herausfinde, wenn die Korruption oder der Schaden eine Katastrophe verursacht?

Oder was ist, wenn wertvolle Daten bereits verloren gehen?

Meine Hoffnung

Ich hoffe, dass diese Bedenken und Sorgen unbegründet sind. Immerhin, nachdem dies viele Male zuvor getan wurde, ist noch nichts wirklich Schlimmes passiert. Das Schlimmste ist, dass ich einige MySQL-Tabellen reparieren musste, aber anscheinend keine Daten verloren habe.

Aber wenn meine Sorgen nicht unbegründet sind und in Situation 1 oder 2 wirklicher Schaden entstehen kann, dann hoffe ich, dass es einen Weg gibt, dies zu erkennen und dagegen zu verhindern.

Meine Fragen)

Könnte dies daran liegen, dass moderne Betriebssysteme so konzipiert sind, dass in diesen Szenarien nichts verloren geht? Könnte dies daran liegen, dass moderne Software so konzipiert ist, dass nichts verloren geht? Was ist mit modernem Hardware-Design? Welche Maßnahmen sind vorhanden, wenn Sie den Netzstecker ziehen?

Meine Frage ist, was genau in diesen beiden Szenarien schief gehen kann und welche Schritte sollten unternommen werden, um das Problem zu beheben?

Ich habe den Eindruck, dass eine Sache, die schief gehen kann, darin besteht, dass einige Programme ihre Daten möglicherweise nicht auf die Festplatte geschrieben haben, also alle hochaktuellen Daten, die auf die Festplatte geschrieben werden sollten (z. B. einige Sekunden vor dem Stromausfall) ) könnte verloren gehen. Aber was ist darüber hinaus? Und kann gerade dieses Problem des 5-Sekunden-Datenverlusts ein System zerstören?

Was ist mit der Beschädigung von zufälligen Dateien, die sich irgendwo in dem riesigen Wald von Dateien auf meinen Festplatten verstecken?

Was ist mit Hardwareschäden?

Was würde mir am meisten helfen

  1. Detaillierte Beschreibungen darüber, was intern geschieht, wenn Sie entweder einen Prozess beenden oder das gesamte System einschalten. (Es scheint sofort, aber kann jemand es für mich verlangsamen?)

  2. Erklärungen aller Dinge, die in diesen Szenarien schief gehen könnten, zusammen mit (groben) Wahrscheinlichkeiten (dh dies ist sehr unwahrscheinlich, aber dies ist wahrscheinlich) ...

  3. Beschreibungen der Maßnahmen, die in moderner Hardware, Betriebssystemen und Software vorhanden sind, um Schäden oder Beschädigungen zu vermeiden, wenn diese Szenarien auftreten. (um mich zu trösten)

  4. Anweisungen, was nach einem Kill -9 oder einem Stromausfall zu tun ist, über das "Überprüfen der Festplatte" hinaus, um wirklich sicherzustellen, dass nichts auf dem Laufwerk beschädigt oder beschädigt ist.

  5. Maßnahmen, die zur Verstärkung eines Computer-Setups ergriffen werden können, damit potenzielle Schäden gemindert werden, wenn etwas getötet oder die Stromversorgung unterbrochen werden muss.

  6. Einige Informationen zu Binärdateien - stimmt es nicht, dass in der Apache-Binärdatei oder in einer Bibliothek ein oder zwei zufällige Bytes beschädigt sein könnten, die erst später herauskommen und ein Problem verursachen würden? Wie kann ich mir versichern, dass dies nicht aufgrund des Stromausfalls oder der Tötung geschehen ist?

Vielen Dank!


Welche Prozesse senden Sie Kill -9? Sie erwähnen 'Apache 2, MySQL 5, PHP 5 und Python 2.6.5 durch mod_wsgi.' Tötest du einige davon? Wenn Sie wissen, was Sie töten, können Sie gezielter auf die Auswirkungen reagieren. Außerdem, was passiert, damit Sie die Prozesse beenden möchten. Erkennen Sie dies und sind Sie möglicherweise in der Lage, die Hauptursachen für Ihr Problem zu identifizieren, anstatt nur die Auswirkungen Ihrer Brute-Force-Methode zu verstehen, um das Problem zu beheben. Übrigens: Unter MacOS X ist es weniger brutal, auf modernen Maschinen den Ein- / Ausschalter 10 Sekunden lang gedrückt zu halten, als nur Strom zu ziehen.
Graham Dumpleton

Ich weiß nicht, was Kill -9 angeht, aber es sei denn, Sie haben eine Art Ersatzstromversorgung. Ich denke, es ist ziemlich sicher zu sagen, dass ALLES getötet wird, wenn Sie den Netzstecker ziehen.
John Gardeniers

Antworten:


9

Durch Ziehen der Spannung stoppt im Flug alles ohne Vorwarnung. kill -9 hat den gleichen Effekt auf einen einzelnen Prozess und beendet ihn mit einem SIGKILL .

Wenn ein Prozess durch einen Kernel oder einen Stromausfall beendet wird, führt er keine Bereinigung durch. Das heißt, Sie könnten halbgeschriebene Dateien, inkonsistente Zustände oder verlorene Caches haben. Normalerweise müssen Sie sich wegen Journaling, Exit-Status und Batterie-Backup keine Sorgen machen.

Temporäre Dateien in / tmp werden automatisch gelöscht, wenn sie sich in tmpfs befinden. Möglicherweise müssen jedoch noch anwendungsspezifische Sperrdateien entfernt werden, z. B. die Sperre und die .parentlock-Datei für Firefox.

Die meiste Software ist intelligent genug, um eine Transaktion erneut zu versuchen, wenn sie keinen erfolgreichen Beendigungsstatus aufzeichnet. Ein gutes Beispiel hierfür ist ein typisches Mailsystem. Wenn eine Nachricht zugestellt wird, aber in der Mitte unterbrochen wird, versucht der Absender es später erneut, bis sie erfolgreich ist.

Ihr Dateisystem ist wahrscheinlich im Journal gespeichert. Wenn Sie eine Datei verschieben oder schreiben und sie mitten im Stream abstirbt, verweist das aufgezeichnete Dateisystem weiterhin auf das Original. Das aufgezeichnete Dateisystem nimmt Änderungen zerstörungsfrei vor, wobei die alte Kopie erhalten bleibt. Anschließend wird die neue Kopie als letzter Schritt referenziert, bevor der Speicherplatz für die alten Kopien auf der Festplatte freigegeben wird.

Wenn Sie über ein RAID-Array verfügen, verfügt es über alle Arten von Speicherpuffern, um die Leistung zu steigern und die Zuverlässigkeit bei einem Stromausfall zu gewährleisten. Höchstwahrscheinlich kennt Ihr Dateisystem die Caches im Gerät und deren Status nicht. Daher wird davon ausgegangen, dass eine Änderung auf der Festplatte festgeschrieben wurde, sie befindet sich jedoch noch irgendwo im RAID-Cache. Was passiert also, wenn der Strom ausfällt? Hoffentlich haben Sie einen funktionsfähigen Akku in Ihrem RAID-Gehäuse und überwachen ihn. Andernfalls haben Sie ein beschädigtes Dateisystem zu fsck.

Ja, ein paar Bits können in einer Binärdatei beschädigt werden, aber ich würde mich bei moderner Hardware nicht so sehr darum kümmern. Wenn Sie wirklich paranoid sind, können Sie den Zustand Ihrer Festplatten und RAIDs mit den entsprechenden Tools überwachen. Sie sollten dies jedoch trotzdem tun. Machen Sie regelmäßige Backups und sichern Sie sich eine unterbrechungsfreie Stromversorgung.


5

Bei einem unerwarteten Herunterfahren sollten nur Dateien beschädigt werden, die zum Schreiben geöffnet sind. Auf den meisten Systemen schreiben Sie zu einem bestimmten Zeitpunkt wahrscheinlich nicht in eine Datei. Wahrscheinlich.

1 Tötung -9

ist POSIX SIGKILL und ist implementierungsabhängig. Dem Prozess, der dieses Signal empfängt, wird keine Gelegenheit gegeben, damit umzugehen.

1 Ausschalten

hängt von der Hardware ab. Die Köpfe werden automatisch unter dem Antriebsdrehmoment geparkt, und alles in Ihrem Schreibcache verliert die DRAM-Aktualisierung und verfällt innerhalb von Sekunden in eine nicht mehr behebbare Beschädigung. Gleiches gilt für den Systemspeicher, den CPU-Cache, die Register usw.

Von wdc.com (google: site: wdc.com Schutzkopf Parken)

Stromausfall: Festplatte wird zurückgesetzt. Der Kopf wird mit Spindelnergie in der Landezone geparkt. Spindelmotor gestoppt.

2 - was kann schief gehen

Dateien, die offen bleiben, werden unvollständig ausgeschrieben. Wenn eine Datei zum Schreiben geöffnet wird, kommt es zu einer Beschädigung der Daten. Das Schreiben von Dateien in moderner Hardware ist schnell und moderne PCs sind normalerweise nicht mit IO belastet. Es ist, als würde man mit verbundenen Augen über eine ruhige Landstraße gehen. Meistens wird es dir gut gehen.

3 - Gegenmaßnahmen

Wie Festplatten funktionieren, erfahren Sie oben.

Suchen Sie nach aufgezeichneten Dateisystemen. Sie sind jetzt normal: http://en.wikipedia.org/wiki/Journaling_file_system

Software wie MS Word oder vi schreibt eher in eine temporäre Datei als in das Original. Ziel ist es, das System niemals in einem Zustand zu belassen, in dem keine konsistente Kopie auf der Festplatte vorhanden ist.

Windows speichert Kopien der Registrierung (es ist einfach zu wichtig) Win2k, also bin ich mir nicht sicher, welche neuen Mechanismen MS hat)

4 - was zu tun ist

In der Reihenfolge des Schwierigkeitsgrades (leicht bis schwer)

  • Bewahren Sie Backups auf
  • Überprüfen Sie, woran Sie zuletzt gearbeitet haben
  • Booten Sie von einer separaten Festplatte und suchen Sie nach den letzten Änderungsdaten, um herauszufinden, was das System zum Zeitpunkt des Absturzes möglicherweise getan hat
  • Booten Sie von einer separaten Festplatte und vergleichen Sie die MD5-Summen aller Ihrer Dateien mit einer Offline-Kopie.

Backups behalten ist die am besten geeignete Antwort. Gute Backups sollten es Ihnen ermöglichen, zu der zuvor geänderten Version zurückzukehren.

5

Redundante Leistung? Endbenutzerschulung? klebeband und karton über den einschaltknopf legen?

6

Abgesehen von Hardwarefehlern, beschädigten Festplattentreibern, einem defekten Betriebssystemkern, fehlenden Prüfsummen oder Abstürzen bei Upgrades werden Binärdateien und Bibliotheken nicht schreibgeschützt geöffnet, damit sie nicht beschädigt werden. Es passiert, aber es ist selten.


+1 für Punkt 6
Bigbio2002

4

Bei einem Kill -9 sendet dies ein Signal an den Prozess, direkt vor Ort zu "sterben". Der Prozess stirbt (es sei denn, er befindet sich im ununterbrochenen Schlaf und wird in diesem Fall zu einem Zombie). Es werden keine Dateien geschlossen, keine Daten werden ausgeschrieben, und das Programm kann dieses Signal nicht abfangen und etwas anderes tun. Keine Bereinigung, kein Nichts: Es stirbt einfach.

Dateisysteme sind heutzutage sehr robust. Dinge wie XFS, JFS, ext3 und ext4 haben Journale und andere Dinge, um die Metadaten des Dateisystems intakt zu halten.

Binärdateien wie Apache selbst und andere werden wahrscheinlich nicht durch einen plötzlichen Stromausfall oder einen Systemabbruch beschädigt, da sie sich entweder im Speicher befinden oder gelesen werden. Wenn sie gelesen werden (dh Apache HTTP startet zum Beispiel), ist es möglich, dass ein Stromstoß die Binärdatei beschädigt, aber es scheint unwahrscheinlich.

Ich habe einen Mac Mini, den die Leute anscheinend gerne kalt stellen (egal wie oft ich es ihnen sage .....), und es geht einfach weiter.

Hauptsächlich, solange Sie sich nicht auf kill -9 verlassen oder regelmäßig ausschalten, würde ich mir keine allzu großen Sorgen machen. In der Vergangenheit war es noch viel schlimmer. Ich würde mich mehr um Solaris 2.6 kümmern als um Solaris 10 (und so weiter).



3

Ein "kill -9" synchronisiert keine ausstehende E / A-Operation. Dies ist häufig kein Problem, aber wenn das System stark ausgelastet ist, können Daten verloren gehen.

Dies ist eher ein Problem bei Servern, bei denen der RAID-Controller (ohne batteriegepufferten Cache) Schreibvorgänge zwischenspeichern und Ihre Daten verlieren kann.

Bearbeiten : Eine weitere Sache ... Wenn Sie von im Netzwerk eingebundenen Laufwerken abhängig sind und offene Datei-Handles haben, ist es sehr wahrscheinlich, dass Sie die Datei inkonsistent oder beschädigt lassen. Unter Windows ist dies das klassische Beispiel, wenn Benutzer Outlook-PST-Dateien auf einer Freigabe bereitstellen und die Stromversorgung oder die Netzwerkverbindung verlieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.