Was würde passieren, wenn eine Festplatte ausfällt, während der Linux-Kernel ausgeführt wird?

7

Ich war schon immer gespannt, was passieren würde, wenn eine Festplatte ausfällt, während der Linux-Kernel ausgeführt wird. Da das Kernel-Image selbst vollständig in den RAM geladen ist, kann ich mir keine Kernel-Fehler vorstellen. Offensichtlich würde jede Software, die versucht hat, auf die Festplatte zuzugreifen, fehlschlagen.

Gibt es eine Chance, dass das System auf unbestimmte Zeit weiterläuft? Wenn nicht, was würde es in Panik versetzen (oder zumindest funktionsunfähig werden)?

Bitte betrachten Sie jedes der folgenden Szenarien:

  • Auf dem Kernel ist möglicherweise die Auslagerungsdatei aktiviert oder nicht.
  • Nach dem Fehler werden keine Versuche unternommen, Kernelmodule zu laden.
  • Macht es einen Unterschied, ob sich bestimmte Teile des Dateisystems auf verschiedenen Festplatten befinden?
Nathan Osman
quelle

Antworten:

13

Bei Hardwarefehlern besteht immer das Risiko eines Absturzes des Kernels, da diese Codepfade im Allgemeinen viel weniger getestet wurden. Normalerweise sollte eine ausgefallene Festplatte den Kernel jedoch nicht zum Absturz bringen. Was genau passiert, hängt von der Art des Fehlers ab. Möglicherweise sind jetzt nur bestimmte Sektoren nicht mehr lesbar, sodass Teile der / home-Partition nicht mehr lesbar sind. Das System kann weiterhin von einem Systemadministrator ausgeführt werden, um das Problem zu analysieren. Wenn das Root-Dateisystem unbrauchbar wird, ist das System unabhängig von einem Kernel-Absturz so gut wie tot, da selbst eine einfache Shell nicht verfügbar ist. Wenn eine Swap-Partition nicht mehr verfügbar ist, segmentieren Programme, die Swap verwenden, Fehler, wenn es Zeit ist, ausgelagerte Daten einzulesen. Wenn es sich bei der abgestürzten Festplatte lediglich um zusätzlichen Speicher handelt, hat dies möglicherweise nur geringe Auswirkungen, da einige Dateisysteme nicht mehr lesbar sind.

Dies kann auch davon abhängen, welche Art von Fehlern die Festplatte auslöst. Ich habe gesehen, wie ein Laufwerk effektiv verschwunden ist, und abgesehen davon, dass die Dateisysteme verschwunden sind, lief alles in Ordnung. Ich habe auch eine Festplatte gesehen, die das System nach einer langen Zeitspanne ständig aufhängt und Fehler auslöst, wodurch sich die Leistung des gesamten Systems verschlechtert. Wenn Sie eine Schicht wie MD verwenden, auf der RAID1 / 4/5 ausgeführt wird, führt ein schwerwiegender Fehler normalerweise nur dazu, dass der Kernel die Festplatte als fehlerhaft markiert, und ignoriert sie, indem er sich auf die verbleibenden Laufwerke stützt, um das System am Laufen zu halten.

Pinguin359
quelle
1
Genau wie ein weiterer Hinweis ... fehlende Dateien verhindern nicht unbedingt, dass vorhandene Apps ausgeführt werden. Wenn Ihr Root-Dateisystem verschwindet und Sie eine offene Shell haben, ist die Shell selbst verfügbar, Coreutils jedoch nicht.
Xenoterracide
2
Tatsächlich kann sogar eine laufende App abstürzen. Wenn eine ausführbare Datei geladen wird, wird ihr Image lediglich dem virtuellen Speicher zugeordnet. Wenn die Programmausführung zu Code auf einer Seite springt, die noch nicht ausgelagert wurde, schlagen Sie zu.
JeremyP
Ich erinnere mich an eine 'Unix Horror Story', in der jemand, der als root angemeldet war, rm -rf / ausführte und fast alles auf dem Laufwerk löschte. Seltsame Dinge passierten, aber sie konnten eine Reparatur an diesem noch laufenden, aber verkrüppelten System durchführen. Es ist eine interessante Lektüre: macnugget.org/stuff/unix-horror-story.txt
Andrew Lambert
3

Auf meinem PowerEdge 2500 war die Firmware des PERC-Controllers (Hardware RAID), als ich sie zum ersten Mal bekam, nicht auf dem neuesten Stand. Dies hat zur Folge, dass die Root-Festplatte plötzlich verschwindet und nicht mehr zugänglich ist (sehr ähnlich, wenn es sich um ein Wechseldatenträger handelt und die Verbindung plötzlich getrennt wird).

Ich konnte keine neuen Programme laden, Programme, die geladen wurden, liefen weiter, aber mit Fehlern, wenn sie versuchten, auf die Festplatte zu schreiben. Hatte immer noch die bashEingabeaufforderung, bei der ich mich angemeldet hatte, funktionierte das Netzwerk weiter. War überraschenderweise nicht so katastrophal wie ich erwartet hätte.

Ich denke, dies ist ein "sauberer" Fehler, da jeder Treiber, der für das Lesen / Schreiben in den PERC verantwortlich war, alles sofort mit einem Fehler abzulehnen schien (vergessen Sie den genauen, aber es war ein SCSI-Erfassungsfehler). Es wäre viel schlimmer, wenn das Laufwerk nicht oder nur langsam reagieren würde oder Schreibvorgänge in Ordnung zu sein schienen, dies aber nicht der Fall waren.

LawrenceC
quelle
0

Ich hatte tatsächlich einen Laufwerksfehler auf einem laufenden System, aber kein X. Es waren keine Anmeldungen möglich, da getty nicht verfügbar war. Ich habe versucht, aus einer laufenden App heraus zu schälen, aber es war keine Shell verfügbar und die App war dann unbrauchbar. In diesem Moment wurde ich auf die Aiieeee-Nachricht aufmerksam und erzählte die Geschichte.

Casualunixer
quelle