fsck "Cannot read BLK" - Raid 1 hinüber?

hirnsaege

Member
Hallo!

Mein Fileserver läuft auf 7.1-Stable, mit einer 40 Gb PATA Platte (verschlüsselt mit Geli) für das OS und zwei 500 Gb SATAII Platten im RAID 1 für die Daten.
Die SATA Platten hängen an einem Promise FastTrack Sata300 TX4, /dev kennt sie als ad6 (von Seagate) und ad10 (von Samsung).
Das RAID wird realisiert über gmirror. Der Provider heisst gm0, dieser wurde mit geli verschlüsselt und HMAC/SHA256 findet Verwendung zur Integritätsprüfung.
Das ganze wird per USB-Stick, auf welchem sich auch die Schlüsseldateien für die Systemplatte und das RAID befinden, gebootet.

Soweit, so gut.

Nun lebe ich leider in einem alten Haus in einer relativ abgelegenen Gegend und unsere Stromversorgung bzw. die Elektroinstallation im Haus ist weiß Gott nicht die beste, und so passiert es von Zeit zu Zeit, dass hier mal ganz kurz der Strom weg ist (für grade mal zehn Sekunden oder so). Meine Mitbewohner kriegen das Ganze meistens garnicht mit, ich merk es auch nur, wenn ich heimkomm und der Server läuft nicht.

Ein paar dieser Stromausfälle hat der Server schon überstanden, mit dem üblichen run fsck manually etc.

Diesmal sah es auch so aus, mit dem Unterschied, dass er diesmal beim Prüfen etliche Fehlermeldungen über unlesbare Blöcke ausspuckte, in der Art:

Code:
#fsck -y /dev/mirror/gm0.elia

...snip...

CANNOT READ BLK: 868201376
CONTINUE? yes

THE FOLLOWING DISK SECTORS COULD NOT BE READ: 868201376, 868201377, 868201378, 868201379, 868201380, 868201381, 868201382, 868201383, 868201384, 868201385, 868201386, 868201387, 868201388, 868201389, 868201390, 868201391, 868201392, 868201393, 868201394, 868201395, 868201396, 868201397, 868201398, 868201399, 868201400, 868201401, 868201402, 868201403, 868201404, 868201405, 868201406, 868201407, 868201408, 868201409, 868201410, 868201411, 868201412, 868201413, 868201414, 868201415, 868201416, 868201417, 868201418, 868201419, 868201420, 868201421, 868201422, 868201423, 868201424, 868201425, 868201426, 868201427, 868201428, 868201429, 868201430, 868201431, 868201432, 868201433, 868201434, 868201435, 868201436, 868201437, 868201438, 868201439, 868201440, 868201441, 868201442, 868201443, 868201444, 868201445, 868201446, 868201447, 868201448, 868201449, 868201450, 868201451, 868201452, 868201453, 868201454, 868201455, 868201456, 868201457, 868201458, 868201459, 868201460, 868201461, 868201462, 868201463, 868201464, 868201465, 868201466, 868201467, 868201468, 868201469, 868201470, 868201471, 868201472, 868201473, 868201474, 868201475, 868201476, 868201477, 868201478, 868201479, 868201480, 868201481, 868201482, 868201483, 868201484, 868201485, 868201486, 868201487, 868201488, 868201489, 868201490, 868201491, 868201492, 868201493, 868201494, 868201495, 868201496, 868201497, 868201498, 868201499, 868201500, 868201501, 868201502, 868201503,

Dazu parallel in der dmesg (in Wirklichkeit sind es etwa 50mal so viele Meldungen):
Code:
#dmesg

...snip...

GEOM_ELI[0]: mirror/gm0.eli: 32768 bytes corrupted at offset 442399023104.
GEOM_ELI[0]: mirror/gm0.eli: 32768 bytes corrupted at offset 442752376832.
GEOM_ELI[0]: mirror/gm0.eli: 32768 bytes corrupted at offset 443105730560.
GEOM_ELI[0]: mirror/gm0.eli: 32768 bytes corrupted at offset 443459084288.
GEOM_ELI[0]: mirror/gm0.eli: 32768 bytes corrupted at offset 443812438016.
GEOM_ELI[0]: mirror/gm0.eli: 32768 bytes corrupted at offset 444165791744.
GEOM_ELI[0]: mirror/gm0.eli: 32768 bytes corrupted at offset 444519145472.

Mir schwant böses, ich bin mir nur nicht sicher, ob es diesmal wirklich beide Platten auf einmal gekillt hat oder ob ich was übersehen hab?

Mit gmirror forget gm0 passiert garnichts, auch wenn ich jeweils eine der Platten im RAID deaktiviere spuckt fsck tonnenweise Fehlermeldungen aus.

BTW: smartctl meldet die Platten als funktionstüchtig, keine Fehler.


Ich hab die Platten und die Daten bereits abgeschrieben. Ich möchte nur gerne ein paar von euren Expertenmeinungen dazu hören.

Thanks in advance.
 
Hallo. Dieser Fehler kommt nicht vom RAID, sondern von geli. Du hast auf Deiner geli-Partition "data integrity verification" angeschaltet, nicht nur Verschlüsselung.

Nun wurde die Intergrität anscheinend verletzt.

Aus man geli:
Code:
DATA AUTHENTICATION
     geli can verify data integrity when an authentication algorithm is speci‐
     fied.  When data corruption/modification is detected, geli will not
     return any data, but instead will return an error (EINVAL).  The offset
     and size of the corrupted data will be printed on the console.
 
Ich nehme an, dein Beitrag bezieht sich auf die dmesg?

Oder heißt das tatsächlich, der Grund dafür, dass fsck die Blöcke nicht lesen kann ist, dass geli die Daten als defekt erkennt? Ich dachte mir, es wäre umgekehrt, die Blöcke sind unlesbar, also meldet geli die Datenintegrität auch als verletzt.
 
Ähm... das steht doch in Englisch da.

Wenn eine Prüfsumme verletzt wird (aus irgendwelchen Gründen), dann wird der Block so behandelt als wäre er nicht lesbar. Deswegen meldet Geom direkt Integritätsfehler ("Checksumme stimmt hier nicht") und für das äußere Gerät liest ja fsck und bekommt dann einen Lesefehler.

Die Platte wird in Ordnung sein, nur es wurde an eine Stelle Müll geschrieben (Datenverlust) oder jemand hat versucht Angriffe auf Deine Verschlüsselung zu machen (unwahrscheinlich, aber es ist der Sinn von Integritätschecks).
 
Ich muss zugeben, dass mir dieses Verhalten nicht ganz logisch erscheint. geli sperrt mir jetzt quasi den Zugriff auf das ganze Slice, weil einige der Daten korrumpiert wurden. Aber was ist mit dem Rest?

Gibt es eine Möglichkeit das RAID wieder funktionstüchtig zu machen?
Da beißt sich die Katze ja quasi in den eigenen Schwanz, ich will die Daten reparieren aber geli lässt mich nicht weil sie ja eben defekt sind. Wobei die Reparatur ja wohl wieder in falschen Prüfsummen o.ä. resultieren würde... Oder ist meine Auffassung dieses ganzen Vorgangs zu trivial?

Das ganze lässt mich mal wieder erkennen, was man anrichten kann, wenn man nicht genau weiß, was man eigentlich tut. ;'(

Gibt es noch etwas, was ich tun kann, außer Alles mit Nullen zu überschreiben und die Daten zu vergessen?
 
Gibt es eine Möglichkeit das RAID wieder funktionstüchtig zu machen?

Ja, gibt es. Überschreib die Stelle wo die Fehler sind mit irgendwelchen Daten. Praktisch ist das schwierig, weil Du das Dateisystem zerstören kannst, deswegen am besten komplette Partition mit /dev/random überscheiben oder so.

Oder ist meine Auffassung dieses ganzen Vorgangs zu trivial?

Du hast Intergrität explizit verlangt, beim anlegen der geli-Partition. Jetzt leb damit ;) Nimm den Standard und verlange keine, dann hast Du "nur" Datenmüll, aber immerhin lesbare Partition, auch wenn sie kaputt ist.

Das ganze lässt mich mal wieder erkennen, was man anrichten kann, wenn man nicht genau weiß, was man eigentlich tut. ;'(

Man lernt ja bekanntlich nie aus. Durch ausprobieren, lernt man am besten. So ist das halt.

Gibt es noch etwas, was ich tun kann, außer Alles mit Nullen zu überschreiben und die Daten zu vergessen?

Nullen sind schlecht, wenn Du verschlüsselte Partition hast. Du solltest dem Angreifer nicht bekannte Daten vor die Nase setzen.
 
So, wollt mich jetzt nur noch bei dir, nakal, bedanken für die Hilfestellung.

Hab die Daten als Lehrgeld abgeschrieben (was gottseidank noch denkbar ist bei einem kleinen Heimnetzwerk) und geli diesmal ohne -a initialisiert. Hoffe, das Setup überlebt den nächsten Stromausfall... ;)
 
Eine unsaubere Stromversorgung kann Geräte kaputt machen. Ich würde mich an Deiner Stelle beim Versorger beschweren. Vielleicht kannst Du ja auch den Preis etwas drücken und dafür Dir eine USV kaufen. Die müssen es einfach lernen, dass wir hier nicht in der 3ten Welt sind, wo wenn alle ihre Klimaanlagen abends anmachen, das ganze Stromnetz zusammenbricht.

Naja, Hauptsache Du machst Backups. Aber so schleichende Fehler erkennt man auch nicht ohne eine Verzögerung. Ich wäre sehr vorsichtig.
 
Nakal hat recht. Ich verwende schon seit über 10 Jahren USVs und in manchen Gegenden in denen ich gewohnt habe, hat man mehrmals am Tag das Klacken der Relais gehört, als das Gerät für eine Sekunde eine Spannungsschwankung ausglich in dem es in den Batteriebetrieb schaltete.

Außerdem hat mein Rechner so den halb-Europa betreffenden Stromausfall gut überstanden (shutdown statt Strom weg), genau so wie einen Stromausfall in ganz Karlsruhe.

Vor der Privatisierung waren solche Dinge deutlich seltener.

Meiner Meinung nach sollte grundlegende Infrastruktur wir Energie, Datenübertragung Straße, öffentliche Verkehrsmittel und Wasser in der Hand des Staates bleiben.
Der Wert des Standortes Deutschland hängt direkt von diesen Faktoren ab und die sind meiner Meinung nach nicht gut in Dividenden/Profit statt Qualitätsorientierten Unternehmen aufgehoben.

Die Stromversorgung ganz Europas ist auf wenige Monopole aufgeteilt, die massiven Missbrauch betreiben, genau wie die Telekommunikation in Deutschland. Was passiert wenn man Wasserversorgung privatisiert sieht man ja an Großbritannien. Da werden Aktienwerte verbessert in dem man das Geld für die Wartung stattdessen als Dividende ausschüttet. Die Folge sind Orte die tagelang ohne fließendes Wasser auskommen müssen.
 
@ Kamikaze, leicht OT

Da gebe ich dir zwar unumwunden absolut Recht: es gibt Dinge, die einfach als Gesamt-Gesellschaftliche Aufgabe verstanden sein wollen und dann auch gemeinsam, also Steuerfinanzioert durchgezogen werden sollten, etwa Bildung, Ernährung, Gesundheit, Verkehr und Verteidigung würde ich mal nennen wollen und die Energieversorgung dazu zählen.
Allerdings lebe ich in Frankreich, die haben ein Quasi-Monopol an dieser Stelle an die EDF geschaffen und wenn du etwa eine Versicherung abschließen möchtest oder einen Kredit willst oder einen vertrag bei einem Internet-Provider abschließen willst, dann gilt tatsächlich die bezahlte EDF-Rechnung als Nachweis deines Wohnsitzes und deiner Bonität.
Trotzdem ist die Versorgung mit Strom im Atomland alles andere als stabil, zumindest nicht auf dem Land und wenn ich dir erzähle, daß ich in unserer Straße der einzige Haushalt bin, der einen Anschluß mit drei Phasen gelegt hat und ganze 20A pro Phase beziehen darf und deshalb schon mehrere Anrufer der EDF kamen, ob ich wirklich so viel Strom benötige, dann kannst du vielleicht einschätzen, wie spärlich hier gefahren wird.
Also, keine Frage, ohne USV geht das bei mir nicht!
Das kann wirklich ganz dringend empfohlen werden.
Leider habe ich eine recht altmodische APC und kann da nicht mal ein Kabel am Seriellen Port anstecken, ohne daß mir der angeschlossene PC total abschmiert, aber neuere Modelle werden wohl auch gut durch den sysutils/apcupsd verwaltet und haben auch direkt passende Anschlußkabel dabei, so daß auch ein intelligentes handling möglich wird. Bei mir puffert das Gerät nur doof, aber das ist allemal noch besser, als ohne diese zusätzliche Sicherheit. Besonders, bei vielen Festplatten. Und auch auf einem Server nimmt der apcupsd kaum was in Anspruch, das würde ich mir immer überlegen und wenn ich demnächst eine neue USV bekomme, werde ich auch darauf achten. APC scheinen sehr gut unterstützt zu werden.
 
Zurück
Oben