fehlerhaftes reiserfs:daten kopiern,fehlerhafte überspringen

Apache, Lighttpd, nginx, Cherokee
Joonas
Posts: 6
Joined: 2010-02-02 07:21

fehlerhaftes reiserfs:daten kopiern,fehlerhafte überspringen

Post by Joonas » 2010-02-02 11:38

Hi!

Szenario:
ich habe zwei webserver
mit je ca 1000gb belegt welche sich jeweils aus ca 2 millionen ordner und fünf Millionen html/bild datein zusammensetzen .

Die daten sollen sycronisiert werden (z.b rsync). danach bleiben auf dem Ziel server (XFS) von 2x1000gb ca. 1500gb übrig.


Problem:
Der Quellserver hat ein fehlerhaftes reiserfs.
(ich kann auch nicht ausschließen ob es die hardware ist, S.M.A.R.T läuft)
Nur wenige dateien(auf die ich verzichten kann) lassen keinen zugriff/löschen mehr zu.
mit reiserfsck konnte ich die Lage verbessern aber das problem nicht verschwinden lassen.

ein "dir" Befehl o.ä dauert deutlich länger als normal.


Rsync über ssh hat überhaupt keinen sinn: (der vorgang würde bei beiden Rechnern ohnehin den Ram voll auslasten und nur ca 10Mbit schafen.)
Ungefähr nach 5 bis 20 stunden und nach wenigen übertragenen GB aber fährt sich der QuellRechner fest, sodass nur ein reboot von außen durch das login beim Provider hilft (was zehn mal hintereinander dem dateisystem wohl kaum weiter geholfen hat whistle)

Ziel:
alle datein vom quellserver bzw von der platte mit dem fehlerhaften dateisystem sicher und fehlertolerant kopieren, fehlerhaftes überspringen ohne dass sich der rechner festfährt.

Für ein komplettes image wäre genug platz wüsste nur nicht obs was bringt...


Eventuell einfach, aber ich möchte kein unötiges risiko mehr eingehen und kenne die lösung eben noch nicht.
ich bin linux neuling und habe damit bisher nur ca. 500 stunden erfahrung mit putty an meinen Debian Servern.
falls sinnvoll kann ich natürlich noch auszüge aus logs anhängen.




danke.... =)))))))))

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: fehlerhaftes reiserfs:daten kopiern,fehlerhafte überspringen

Post by daemotron » 2010-02-02 13:21

Am besten Du ziehst Dir mit ddrescue oder dcfldd ein Image von der betroffenen Partition. Vorausgesetzt, Du hast genug Platz, würde ich von dem Image erst mal eine Sicherungskopie machen, die unangetastet bleibt, falls ein Reparaturversuch alles noch verschlimmbessert.

Auf das Image würde ich dann mal mit Reiserfs Repair Tool losgehen - die originalen Tools für ReiserFS (reiserfsck & Co.) sind leider alles andere als unproblematisch und machen einem schon mal mehr kaputt als heil.
Last edited by daemotron on 2010-02-02 13:22, edited 1 time in total.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time

Joonas
Posts: 6
Joined: 2010-02-02 07:21

Re: fehlerhaftes reiserfs:daten kopiern,fehlerhafte überspringen

Post by Joonas » 2010-02-02 14:14

danke, Reiserfs Repair Tool könnte die lösung sein.

Aber Falls das nicht hilft, und das image nach der reperatur und auf einer anderen platte sich immer noch so benimmt...

- Gibt es vielleicht eine einfachere & sichere Möglichkeit alle lesbare files zu kopieren (read-only) und dabei zu verhindern das er sich wegen dateisystem fehler festfährt?

habe es einfach probiert. mit "mv *" , read only gemounted.
er ist immer hin in 2 Tagen bis 400gb von 950gb gekommen, dann wieder festgefahren -.-

Ich hatte ein nahezu identisches problem schonmal in windows mit NTFS, dort habe ich mir mit Testdisk ganz bequem in einem vorgang alle datein auf eine andere platte kopiert und testdisk schafft es irgendwie abstürtze zu vermeiden, unterstützt aber wohl reiserfs nicht....
Last edited by Joonas on 2010-02-02 14:26, edited 2 times in total.

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: fehlerhaftes reiserfs:daten kopiern,fehlerhafte überspringen

Post by daemotron » 2010-02-02 14:52

Na ja, Du könntest mit ein bisschen Shell-Skripting das Kopieren erledigen. Der Clou dabei: Für jede Datei wird ein eigener Kopiervorgang angestoßen. Funktioniert es für eine Datei nicht, gibt das zwar einen Fehler, aber es wird einfach mit der nächsten Datei weiter gemacht.

Als Annahme sei die kaputte Partition unter /mnt/kaputt gemounted, eine heile und entsprechend große Partition unter "heil".

Zuerst musst Du die Verzeichnisstruktur klonen:

Code: Select all

cd /mnt/kaputt
for i in $(find . -type d); do
v=$(echo $i | sed 's/^\.\///')
mkdir -p /mnt/heil/$v
done

Wenn alle Verzeichnisse erstellt werden konnten (ev. Fehler werden auf der Konsole ausgegeben und müssen eben manuell abgearbeitet werden), kannst Du Dich an die Dateien machen:

Code: Select all

cd /mnt/kaputt
for i in $(find . -type f); do
d=$(echo $i | sed 's/^\.\///')
cp -p $i /mnt/heil/$d
done

Skripte ohne Gewähr, hab hier grade keine *Nix-Shell zum testen. Wenn Du remote kopieren willst, kannst Du meine Vorlage ja entsprechend abändern und ftp, scp oder sftp reinbasteln.

P.S. mir ist grade eingefallen, dass ich dafür sogar schon mal ein Skript geschrieben habe. Schimpft sich cdeploy und kann hier heruntergeladen werden.

Ausgehend von obiger Lage (/mnt/kaputt und /mnt/heil) könntest Du folgendes machen:

Code: Select all

cd /mnt/kaputt
cdeploy -X -d /mnt/heil
Achtung: /mnt/heil sollte leer sein, ansonsten bitte ein leeres Unterverzeichnis benutzen (sonst gibt's Probleme, weil cdeploy bestehende Dateien ersetzt, von diesen unbedingt aber ein Backup machen will => bei so vielen Dateien macht's kabumm).
Last edited by daemotron on 2010-02-02 15:09, edited 2 times in total.
“Some humans would do anything to see if it was possible to do it. If you put a large switch in some cave somewhere, with a sign on it saying 'End-of-the-World Switch. PLEASE DO NOT TOUCH', the paint wouldn't even have time to dry.” — Terry Pratchett, Thief of Time

Joonas
Posts: 6
Joined: 2010-02-02 07:21

Re: fehlerhaftes reiserfs:daten kopiern,fehlerhafte überspringen

Post by Joonas » 2010-02-27 03:41

nochmal danke für deine hilfe!

leider besteht das problem immernoch.

dd_rescue sieht ganz gut aus, schafft bei der kaputten partition aber nur unter 5Mbit.
dauer als noch ca einen Monat.
Kann man irgendwie verhindern dass dabei die komplette partitions größe und nicht nur die belegten sektoren in diese geschwindigkeit ausgelesen werden. bzw den vorgang irgendwann abbrechen und das image reparieren?

wenn ich erstmal nur die ordner mit deinem shell script beispiel erstellen lasse
sammeln sich zwar ein paar nicht lesbare ordner in der ausgabe aber ansonten passiert erstmal tagelang gar nichts. lasse es zurzeit erneut laufen.
weiss nicht ob demnächst noch ein paar ordner am ziel ankommen.

reiserfs repair tool ist nur ne shareware leider.