1 Tötung -9

1 Tötung -9

Aufstellen

Ich bin nun schon seit einiger Zeit Programmierer, bin mir aber bei tieferen, internen Dingen immer noch nicht ganz sicher.

Nun. Mir ist durchaus bewusst, dass es keine gute Idee ist, entweder:

  1. kill -9 einen Prozess (schlecht)
  2. spontan den Netzstecker eines laufenden Computers oder Servers ziehen (schlimmer)

Manchmal ist es jedoch einfach notwendig. 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 wird.

Hinweis: Mich interessiert hier vor allem Mac OS X, aber eine Antwort, die sich auf jedes beliebige UNIX-System bezieht, wäre mir schon weiterhelfen.

Mein Konzern

Jedes Mal, wenn ich eines davon tun muss, insbesondere das zweite, habe ich eine Zeit lang große Angst, dass etwas kaputt gegangen ist. Irgendeine Datei irgendwo könnte beschädigt sein – wer weiß, welche Datei? Auf dem Computer befinden sich über eine Million Dateien.

Ich verwende häufig OS X, daher führe ich über das Festplatten-Dienstprogramm einen Vorgang zum Überprüfen der Festplatte aus. Es werden keine Probleme gemeldet, aber ich bin trotzdem besorgt darüber.

Was wäre, wenn irgendwo eine Konfigurationsdatei vermasselt wurde? Oder noch schlimmer, wenn irgendwo eine Binärdatei beschädigt ist? Oder wenn irgendwo eine Skriptdatei jetzt beschädigt ist? Was wäre, wenn die Hardware beschädigt ist?

Was passiert, wenn ich im Ernstfall erst im nächsten Monat davon erfahre, wenn die Beschädigung oder der Schaden eine Katastrophe verursacht?

Oder was, wenn wertvolle Daten bereits verloren sind?

Meine Hoffnung

Ich hoffe, dass diese Bedenken und Sorgen unbegründet sind. Schließlich ist mir, obwohl ich das schon viele Male gemacht habe, noch nie etwas 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 tatsächlicher Schaden entstehen könnte, dann hoffe ich, dass es eine Möglichkeit gibt, ihn zu erkennen und ihm vorzubeugen.

Meine Fragen)

Könnte es daran liegen, dass moderne Betriebssysteme so konzipiert sind, dass in diesen Szenarien nichts verloren geht? Könnte es daran liegen, dass moderne Software so konzipiert ist, dass nichts verloren geht? Wie sieht es mit dem modernen Hardware-Design aus? Welche Maßnahmen werden ergriffen, wenn man den Netzstecker zieht?

Meine Frage ist, was für beide Szenariengenaukann etwas schiefgehen und welche Schritte sollten zur Behebung des Problems unternommen werden?

Ich habe den Eindruck, dass etwas schiefgehen kann, wenn einige Programme ihre Daten nicht auf die Festplatte geschrieben haben, sodass alle aktuellen Daten, die eigentlich auf die Festplatte geschrieben werden sollten (z. B. ein paar Sekunden vor dem Ausschalten), verloren gehen könnten. Aber was ist mit den anderen Dingen? Und kann genau dieses Problem eines 5-Sekunden-Datenverlusts ein System ruinieren?

Was ist mit der Beschädigung zufälliger Dateien, die irgendwo im riesigen Dateiwald auf meinen Festplatten versteckt sind?

Was ist mit Hardwareschäden?

Was mir am meisten helfen würde

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

  2. Erklärungen zu allem, was in diesen Szenarien schiefgehen könnte, zusammen mit (natürlich groben) Wahrscheinlichkeiten (d. h., dies ist sehr unwahrscheinlich, aber dies ist wahrscheinlich) …

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

  4. Anweisungen dazu, was nach einem Kill -9 oder einem Power Pull über die „Überprüfung der Festplatte“ hinaus zu tun ist, um wirklich sicherzustellen, dass nichts irgendwo auf dem Laufwerk beschädigt oder zerstört ist.

  5. Maßnahmen, die ergriffen werden können, um eine Computerkonfiguration so zu verstärken, dass mögliche Schäden gemindert werden, wenn ein System abgeschaltet oder die Stromversorgung unterbrochen werden muss.

  6. Einige Informationen zu Binärdateien – ist es nicht so, dass in der Apache-Binärdatei oder einer Bibliothek ein oder zwei zufällige Bytes in der Mitte beschädigt sein könnten, die erst später auftauchen und ein Problem verursachen würden? Wie kann ich sicherstellen, dass dies nicht durch die Stromabschaltung oder den Abbruch passiert ist?

Vielen Dank!

Antwort1

Wenn Sie den Strom abschalten, wird alles ohne Vorwarnung angehalten. kill -9 hat die gleiche Wirkung auf einen einzelnen Prozess und beendet ihn zwangsweise mit einemSIGKILL.

Wenn ein Prozess durch einen Kernel- oder Stromausfall beendet wird, wird er nicht bereinigt. Das bedeutet, dass Sie möglicherweise halb geschriebene Dateien, inkonsistente Zustände oder verlorene Caches haben. Normalerweise müssen Sie sich darüber keine Gedanken machen, da Journaling, Beendigungsstatus und Batterie-Backup vorhanden sind.

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

Die meisten Programme sind intelligent genug, um eine Transaktion zu wiederholen, wenn sie keinen erfolgreichen Beendigungsstatus aufzeichnen. Ein gutes Beispiel hierfür ist ein typisches Mailsystem. Wenn eine Nachricht zugestellt wird, aber mittendrin unterbrochen wird, versucht der Absender es später erneut, bis er einen Erfolg verzeichnet.

Ihr Dateisystem ist wahrscheinlich journalisiert. Wenn Sie eine Datei verschieben oder schreiben und diese mittendrin abstürzt, verweist das journalisierte Dateisystem immer noch auf das Original. Das journalisierte Dateisystem nimmt Änderungen zerstörungsfrei vor, lässt die alte Kopie stehen und verweist dann nur als letzten Schritt auf die neue Kopie, bevor der Speicherplatz, den die alten Kopien auf der Festplatte belegten, freigegeben wird.

Wenn Sie nun ein RAID-Array haben, verfügt es über alle Arten von Speicherpuffern, um die Leistung zu steigern und Zuverlässigkeit bei einem Stromausfall zu gewährleisten. Höchstwahrscheinlich kennt Ihr Dateisystem die Caches im Gerät und deren Status nicht und denkt daher, dass eine Änderung auf die Festplatte übertragen wurde, obwohl sie sich immer noch irgendwo im RAID-Cache befindet. Was passiert also, wenn der Strom ausfällt? Hoffentlich haben Sie eine funktionierende Batterie in Ihrem RAID-Gehäuse und überwachen diese. Andernfalls haben Sie ein beschädigtes Dateisystem, das Sie mit fsck überprüfen können.

Ja, ein paar Bits in einer Binärdatei können beschädigt werden, aber bei moderner Hardware würde ich mir darüber keine allzu großen Sorgen machen. Wenn Sie wirklich paranoid sind, können Sie den Zustand Ihrer Festplatten und Ihres RAID mit den entsprechenden Tools überwachen, aber das sollten Sie sowieso tun. Führen Sie regelmäßig Backups durch und besorgen Sie sich eine unterbrechungsfreie Stromversorgung.

Antwort2

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

1 Tötung -9

ist POSIX SIGKILL und ist implementierungsabhängig. Der Prozess, der dieses Signal empfängt, erhält keine Gelegenheit, es zu verarbeiten.

1 Ausschalten

hängt von der Hardware ab. Die Köpfe parken automatisch unter dem Laufwerksimpuls und alles in Ihrem Schreibcache verliert die DRAM-Aktualisierung und verfällt innerhalb von Sekunden zu irreparabler Beschädigung. Dasselbe passiert mit Ihrem Systemspeicher, CPU-Cache, Registern usw.

Von wdc.com (google: site:wdc.com Protective Head Parking)

Stromausfall: Festplatte wird zurückgesetzt. Kopf wird in der Landezone geparkt und nutzt Spindelenergie. Spindelmotor gestoppt.

2 - was kann schief gehen

Offen gelassene Dateien werden unvollständig ausgeschrieben. Wenn eine Datei zum Schreiben geöffnet wird, kommt es zu Datenbeschädigungen. Dateischreibvorgänge sind in moderner Hardware schnell und moderne PCs werden normalerweise nicht durch IO belastet. Es ist, als ob man mit verbundenen Augen über eine ruhige Landstraße läuft. Meistens wird es Ihnen gut gehen.

3 - Gegenmaßnahmen

Informationen zur Funktion von Datenträgern finden Sie oben.

Suchen Sie nach Journaled File Systems, sie sind jetzt normal:http://en.wikipedia.org/wiki/Journaling_file_system

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

Windows speichert Kopien der Registrierung (das ist einfach zu wichtig). Wikipedia: „Windows 2000 speichert eine alternative Kopie der Registrierungsstrukturen (.ALT) und versucht, zu dieser zu wechseln, wenn eine Beschädigung erkannt wird.“ (Ich habe seit Windows 2000 keinen größeren technischen Support mehr geleistet, daher bin ich mir nicht sicher, was die neuen Mechanismen von MS sind.)

4 - Was tun?

In der Reihenfolge der Schwierigkeit (leicht-schwer)

  • Bewahren Sie Backups auf
  • Überprüfen Sie, woran Sie zuletzt gearbeitet haben
  • Booten Sie von einer separaten Festplatte und suchen Sie nach Datum/Uhrzeit der letzten Änderung, um herauszufinden, was das System zum Zeitpunkt des Absturzes getan haben könnte.
  • Booten Sie von einer separaten Festplatte und vergleichen Sie die MD5-Summen aller Ihrer Dateien mit einer Offlinekopie.

Die beste Lösung besteht darin, Backups aufzubewahren. Gute Backups sollten es Ihnen ermöglichen, zur zuvor geänderten Version zurückzukehren.

5

Redundante Stromversorgung? Schulung der Endbenutzer? Klebeband und Pappe über den Netzschalter kleben?

6

Außer bei Hardwarefehlern, beschädigten Festplattentreibern, einem defekten Betriebssystemkernel, fehlenden Prüfsummen oder Abstürzen während des Upgrades werden Binärdateien und Bibliotheken nicht schreibgeschützt geöffnet, damit sie nicht beschädigt werden. Das kommt vor, ist aber selten.

Antwort3

Was kill -9 betrifft, so sendet dies ein Signal an den Prozess, sofort zu „sterben“. Der Prozess stirbt (es sei denn, er befindet sich im ununterbrochenen Ruhezustand, in welchem ​​Fall er zu einem Zombie wird). Es werden keine Dateien geschlossen, keine Daten ausgegeben und das Programm kann dieses Signal nicht abfangen und etwas anderes tun. Keine Bereinigung, nichts: Es stirbt einfach.

Heutige Dateisysteme sind sehr robust; Dinge wie XFS, JFS, ext3 und ext4 verfügen alle über Journale und andere Dinge, um die Metadaten des Dateisystems intakt zu halten.

Bei Binärdateien wie Apache selbst und anderen ist eine Beschädigung durch einen plötzlichen Stromausfall oder einen Systemabsturz unwahrscheinlich, da sie sich entweder im Speicher befinden oder gelesen werden. Wenn von ihnen gelesen wird (z. B. wenn Apache HTTP gestartet wird), ist es möglich, dass ein Stromstoß die Binärdatei beschädigt, dies erscheint jedoch unwahrscheinlich.

Ich habe einen Mac Mini, den die Leute anscheinend gerne ganz ausschalten (egal, wie oft ich es ihnen sage …), und er läuft einfach immer weiter.

Solange Sie sich nicht regelmäßig auf kill -9 oder power off verlassen, würde ich mir größtenteils keine allzu großen Sorgen machen. In der Vergangenheit war es viel schlimmer; ich würde mir beispielsweise über Solaris 2.6 mehr Sorgen machen als über Solaris 10 (und so weiter).

Antwort4

Ein „kill -9“ synchronisiert einen ausstehenden IO-Vorgang nicht. Dies ist oft kein Problem, aber wenn das System unter hoher IO-Last steht, können Daten verloren gehen.

Es handelt sich eher um ein Problem bei Servern, bei denen der RAID-Controller (ohne batteriegestützten Cache) Schreibvorgänge zwischenspeichern und Ihre Daten verlieren kann.

Bearbeiten: Noch etwas: Wenn Sie von im Netzwerk installierten Laufwerken abhängig sind und offene Dateihandles haben, ist die Wahrscheinlichkeit sehr hoch, dass die Datei inkonsistent oder beschädigt bleibt. Unter Windows ist das klassische Beispiel hierfür, wenn Benutzer Outlook-PST-Dateien auf einer Freigabe installieren und die Stromversorgung oder Netzwerkverbindung verlieren.

verwandte Informationen