[Eisfair] [e1] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0, 0)
D. Oezbilen
oezbilen at gmx.net
Sa Jan 2 23:59:37 CET 2021
Hallo Wolfgang, @all,
*frohes Neues Jahr @all.*
Ich habe etwas ueberlegt, ob ich die Zeilen schreibe, denn es klingt
altklug und besserwisserisch. Doch ist es nicht so gemeint.
Auch, wenn eis/x64 fuer @home konzipiert wurde, am Ende ist es ein
__Server__, noch dazu ein grossartiges Konstrukt.
Sprich, diese Maschine hat eine zentrale Funktion, man vertraut dieser
Einheit blind die Daten, die man im Zugriff haben will, ebenso Dateien,
die dort auflaufen und nicht verloren gehen sollen (Raid/Backup etc).
Das Beispiel in diesem thread zeigt wie fatal evtl. auch desastroes
-wenn noch zu spaet- entdeckt, dieser defekte RAM-Riegel sich auf den
Betrieb auswirkt. Hier ging es hoffentlich glimpflich ab
(backup-Korruption?).
Dass die Einheit einen Tag nicht im Netz ist - der memtest fast einen
Tag laeuft- kann man wohl verschmerzen, weil @home und keine Produktion
dran haengt.
Was aber, wenn dieser RAM-Fehler so lange das fs so korrumpiert hat,
dass auch x-Backups zerstoert sind? Allein diese Vorstellung treibt doch
einem den Schweiss auf die Stirn, nicht nur das Dokumente defekt sind,
auch familiaere Bilder, die alle (ab wann?) kaputt sind etc.
Wenn Server, sollte der Chipsatz den Fehler abfangen, zudem man diesen
Zustand auch abfragen kann. Sicher nicht jeder Chipsatz kann das, auch
nicht jede CPU/Chipsatz-Kombination.
Klar kann man abwaegen, wie oft so ein defekter RAM-Riegel vorkommt,
oefter als man denkt, gar bei hoeherwertigem Speicher, der v.
Server-Herstellern fuer ihre System freigegeben sind.
Geschweige 08/15-Speicher, die kein ECC haben und still und leise das
umgekippte Bit staendig irgendwohin schreiben, ohne, dass man frueh
genug bescheid bekommt.
Wie will man das ohne ECC ueberpruefen? Geht halt nicht, evtl. nur
ueber rsyncs hash zum Backup, dann nach einem --dry-run den echten
Sync-Vorgang anzustossen?
Ebenso wenn man SW-Raid hat (nicht OK), was, wenn die libs/bins des
SW-Raids per Zufall defekt sind?
Hingegen, hat man ECC-Speicher funkt es mit edac-util so einfach; hier
sind paar Zeilen aus der Vergangenheit:
edac-util
mc0: csrow0: CPU#0Channel#1_DIMM#0: 60229 Corrected Errors
mit verbose:
edac-util -v
mc0: 0 Uncorrected Errors with no DIMM info
mc0: 0 Corrected Errors with no DIMM info
mc0: csrow0: 0 Uncorrected Errors
mc0: csrow0: CPU#0Channel#0_DIMM#0: 0 Corrected Errors
mc0: csrow0: CPU#0Channel#1_DIMM#0: 60229 Corrected Errors
mc0: csrow0: CPU#0Channel#2_DIMM#0: 0 Corrected Errors
mc0: csrow1: 0 Uncorrected Errors
mc0: csrow1: CPU#0Channel#0_DIMM#1: 0 Corrected Errors
mc0: csrow1: CPU#0Channel#1_DIMM#1: 0 Corrected Errors
mc0: csrow1: CPU#0Channel#2_DIMM#1: 0 Corrected Errors
mc1: 0 Uncorrected Errors with no DIMM info
mc1: 0 Corrected Errors with no DIMM info
mc1: csrow0: 0 Uncorrected Errors
mc1: csrow0: CPU#1Channel#0_DIMM#0: 0 Corrected Errors
mc1: csrow0: CPU#1Channel#1_DIMM#0: 0 Corrected Errors
mc1: csrow0: CPU#1Channel#2_DIMM#0: 0 Corrected Errors
mc1: csrow1: 0 Uncorrected Errors
mc1: csrow1: CPU#1Channel#0_DIMM#1: 0 Corrected Errors
mc1: csrow1: CPU#1Channel#1_DIMM#1: 0 Corrected Errors
mc1: csrow1: CPU#1Channel#2_DIMM#1: 0 Corrected Errors
cat /sys/devices/system/edac/mc/mc0/csrow0/ch1_ce_count
60229
dmidecode -t memory | grep 'Locator: PROC
kriegt man diese Liste (zumindest bei diesem Server):
Locator: PROC 1 DIMM 1G
Locator: PROC 1 DIMM 2D
Locator: PROC 1 DIMM 3A
Locator: PROC 1 DIMM 4H
Locator: PROC 1 DIMM 5E
Locator: PROC 1 DIMM 6B
Locator: PROC 1 DIMM 7I
Locator: PROC 1 DIMM 8F
Locator: PROC 1 DIMM 9C
Locator: PROC 2 DIMM 1G
Locator: PROC 2 DIMM 2D
Locator: PROC 2 DIMM 3A
Locator: PROC 2 DIMM 4H
Locator: PROC 2 DIMM 5E
Locator: PROC 2 DIMM 6B
Locator: PROC 2 DIMM 7I
Locator: PROC 2 DIMM 8F
Locator: PROC 2 DIMM 9C
Hier bei ist
mc0: csrow0: CPU#0 = PROC 1
1...9 geben die laufende Numerierung an, A/B/C etc jedoch die
Bestueckungsreihenfolge:
3A,6B,9C = Channel 0
2D,5E,8F = Channel 1
1G,4H,7I = Channel 2
Channel#1 betreut 2D,5E,8F
_DIMM#0 => 2D
Mit
dmidecode --type memory | grep -A 10 -B 10 2D
Handle 0x1101, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x1000
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: DIMM
Set: 2
Locator: PROC 1 DIMM 2D
Bank Locator: Not Specified
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: Not Specified
Serial Number: Not Specified
Asset Tag: Not Specified
Part Number: Not Specified
Rank: 2
Configured Clock Speed: 1066 MHz
--
kriegt man auch die Pos. des Riegels, aber leider hier nicht mehr Infos,
wie Seriennummer, Hersteller etc. :-(
Wie CPUX, ChannelX, DIMMX definiert sind, geben die RTFM-Blaetter des
Boards (auch dem Blechcover des Servers) her.
Mit einem Zweizeiler per Cron gestartet, kann man eine Mail absetzen, so
hat man auch Zeit den Riegel zu ersetzen oder einfach _raus_ zu nehmen
und auch nicht voellig blind die Backups zu zerstoeren.
Das Abfallprodukt: ___kein___ Stillstand.
Keine 5 min downtime.
Allein die Vorstellung, was denn nun kaputt ist, ist doch eine Lotterie,
__wann___ ist das eingetreten?
Ist das Backup vor einer Woche/Monat/wann(?) schon korrumpiert, ist doch
ein lebensverkuerzender Process. Und wer sagt, was nun richtig/korrekt ist?
Kann doch sein, dass das Backup einen anderen hash hat (trotzdem defekt
ist), jetzt auch die online-Dateien einen anderen hash aufweisen, gulp.
:-(. Was ist korrekt?
Klar ist die Kombination aus ECC-Speicher/Chipsatz/CPU/MB etc beim
Einstieg teurer. Was ist einem selbst das Wert, welches Risiko geht man
bewusst -bei vorhandener Alternative- ein?
Vllt. hilft einem das o.a. beschriebene Szenario einen RAM-Fehler zu
detektieren, bevor
... then.the.shit.hits.the.fan-Situation. ;-)
Frohes Neues Jahr.
Gruss
Oezbilen
Mehr Informationen über die Mailingliste Eisfair