AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein HDD defekt : nur lesen über MemoryStream funktioniert ..Hä?
Thema durchsuchen
Ansicht
Themen-Optionen

HDD defekt : nur lesen über MemoryStream funktioniert ..Hä?

Ein Thema von helgew · begonnen am 8. Apr 2009 · letzter Beitrag vom 10. Apr 2009
Antwort Antwort
helgew

Registriert seit: 30. Jul 2008
125 Beiträge
 
#1

HDD defekt : nur lesen über MemoryStream funktioniert ..Hä?

  Alt 8. Apr 2009, 08:48
Hallo liebe Forengemeinde,

Nachdem sich gerade meine WD16 00JD 00GBB0 verabschiedet (160GB SATA-Platte), habe ich schon ein paar Dinge versucht, um noch ein paar der seit dem letzten Backup hinzugekommenen Daten zu retten. Mittlerweile habe ich auch board, sata-controller und Zielfestplatte getauscht, es kann also nurnoch an der defekten HDD liegen, wenn man annimmt, dass Windows keinen Mumpitz macht.

Nun meine Frage:
Wieso um alles in der Welt sind mit Sicherungstools, xcopy oder via blockweisem Kopieren über filestreams alle Dateien zu 10-300ppm mit falschen Bytes durchsetzt, wenn es sich um jpg-Dateien handelt, diese aber mit Bildbearbeitungsprogrammen darstellbar?
Daraufhin habe ich in paar Zeilen code gebastelt, die die Datei zunächst ins RAM laden, um sie dann am Zielort zu speichern. Was unterscheidet den Zugriff eines Filestreams von dem eines memorystreams?


ps. hat jemand einen Vorschlag, wie ich große Dateien kopieren soll? Ich werde versuchen, 256MB-Blöcke zu kopieren und diese dann am Ziel zusammenzusetzen.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: HDD defekt : nur lesen über MemoryStream funktioniert ..

  Alt 8. Apr 2009, 09:55
Eigentlich ist für so etwas immer diskdump unter linux eine leicht Erfolg versprechende Variante. Du musst nur eine gleich große (und gleich aufgebaute) backuppartition haben.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: HDD defekt : nur lesen über MemoryStream funktioniert ..

  Alt 8. Apr 2009, 13:19
Nach deiner Fehlerbeschreibung ist möglicherweise ist eine Speicherbank in der Steuerelektronik der Festplatte defekt.
Ich würde eine baugleiche Platte (nach Möglichkeit aus der selben Serie) besorgen und die Platine tauschen.
  Mit Zitat antworten Zitat
helgew

Registriert seit: 30. Jul 2008
125 Beiträge
 
#4

Re: HDD defekt : nur lesen über MemoryStream funktioniert ..

  Alt 8. Apr 2009, 13:49
Danke für den Tip, ich werde mich auf jedenfall nach einer baugleichen Festplatte umschauen. Das mit dem Speicher ist mir auch schon in den Sinn gekommen, ich habe auch schon das Bitmuster finden können, das überall reingestempelt wird. Ich verstehe jedoch noch immer nicht, wieso die Verwendung des Festplattencaches derart vom Lesemodus abhängt.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: HDD defekt : nur lesen über MemoryStream funktioniert ..

  Alt 8. Apr 2009, 13:59
Wie lädst du die Datei in den RAM?

Filestream ist bedeutend anders als Memorystream. Memorystream greift ganz einfach via Pointer auf den RAM, genauer auf den virtuellen Arbeitsspeicher, der natürlich auch auf der Platte sein kann.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
helgew

Registriert seit: 30. Jul 2008
125 Beiträge
 
#6

Re: HDD defekt : nur lesen über MemoryStream funktioniert ..

  Alt 9. Apr 2009, 14:21
Hallo,

zunächst habe ich keine sonderliche Lust, eine Linux Live CD zu basteln, mit der ich auch NTFS-Partitionen mounten kann, aber danke für den Hinweis.

Meine Frage begründet sich in eben der Tatsache, dass ich nicht genau verstehe, worin nun der Unterschied besteht, ob ich Daten in einen Puffer lade und von dort aus weiterschreibe. Mein erster Versuch war das Kopieren von Dateien in 2MB-Blöcken, was jedoch nicht funktionierte.

Zitat:
Quelle öffnen (Filestream)
Ziel öffnen (Filestream)

2MB Block lesen
2MB Block schreiben
2MB Block lesen
2MB Block schreiben
.
.
.

Ziel schließen
Quelle schließen

dies produzierte in gleichem Maße Fehler wie "DirSync" und xcopy.


Folgender Algorithmus funktioniert hingegen:

für kleine Dateien:

Zitat:
Memorystream erzeugen
von Quelle laden
als Ziel speichern
Stream freigeben
für große Dateien:

Zitat:
Quelle öffnen (Filestream)
Position suchen
128MB Block lesen
Quelle schließen

Ziel öffnen
ans Ende gehen
128MB Block schreiben
Ziel schließen

wiederholen, bis alles kopiert ist (der letzte Puffer ist nicht ganz gefüllt)
Lesen ist weiterhin kein Problem, ich kann mir nur nicht erklären, wieso Schreibzugriffe auf andere HDDs nicht funktionieren, während das handle auf die defekte Festplatte noch gültig ist.

Die einzige Lösung in diesem Fall kann also nur sein, den Lese/Schreibmodus der HDD derart zu begrenzen, dass der betreffende Speicherbereich des controllers nicht mehr benutzt wird, da kann mir auch kein Linux helfen. Nun denn, Vorschläge zur Güte? (Sorry, mit der Geduld geht es langsam zuende)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: HDD defekt : nur lesen über MemoryStream funktioniert ..

  Alt 9. Apr 2009, 16:40
Zitat von helgew:
zunächst habe ich keine sonderliche Lust, eine Linux Live CD zu basteln, mit der ich auch NTFS-Partitionen mounten kann, aber danke für den Hinweis.
Du musst die Partition ja nicht lesend interpretieren müssen, du brauchst sie ja nur verstehen. Anders gesagt, es ist völlig egal welches Filesystem da drauf ist, das interessiert dich zu keinem Zeitpunkt.

Ob du damit allerdings deinen Controler "überlisten" kannst, weis ich nicht.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
helgew

Registriert seit: 30. Jul 2008
125 Beiträge
 
#8

Re: HDD defekt : nur lesen über MemoryStream funktioniert ..

  Alt 9. Apr 2009, 19:44
Bisher arbeite ich iterativ daran mit ein paar Stückchen code...
mein Vergleichstool spuckt eine Batchdatei zum Abgleich aus, in der auch die Fehler protokolliert werden. Fehlende Dateien werden zunächst auf gut Glück kopiert, was bei kleineren Dateien meist funktioniert. Startet man die Batchdatei, werden die defekten Dateien nach oben beschriebenem Algorithmus geflickt. Dies hat ein paarmal nicht funktioniert, weil auch Dateisystemfehler am Ziellaufwerk aufgetreten sind (mitkopiert oder schlimmeres). Daraufhin wurde chkdsk auf der Zielplatte ausgeführt und das ganze wiederholt. Mittlerweile habe ich bei 3 von 5 Partitionen alle rettbaren Dateien kopiert, es sind noch 5-200 Dateien pro Partition irreparabel beschädigt.
Das ganze hätte ich mir etwas eleganter vorgestellt, da es jedesmal 300GB sind und "nur mal checkdisk laufen lassen" 1-2h dauert.

Bisher weiß auch niemand, welcher Modus für derlei Probleme empfänglich ist und welcher nicht. Gibt es keinen Transfermodus, der ohne Puffer arbeitet?
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#9

Re: HDD defekt : nur lesen über MemoryStream funktioniert ..

  Alt 10. Apr 2009, 09:44
Nur mal so am Rande bemerkt:

Wenn ich den Verdacht habe, dass eine HDD defekt ist, werde ich versuchen, eine vollständige 1:1-Kopie zu machen, z.B. mit

http://www.acer-userforum.de/tutoria...tml#post137684

http://www.miray.de/de/products/sat.hdclone.html#free

Die Ziel-HDD darf grösser sein und können beide als USB-HDD betrieben werden.

Alles andere, z.B. Checkdsk, macht nur noch mehr Fehler und stresst eine HDD unnötig.

Auf der Ziel-HDD kann man dann mit diversen Tools "in Ruhe" versuchen, die Files wieder herzustellen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz