On Mon, 19 Nov 2001, Ratti wrote:
War diese Ausmaskierung nicht sowieso nur für SCSI? Und auf Plattenbios-Ebene?
From: "David Haller" <david@dhaller.de>
Nein. Ja. Genauer (zumindest fuer IDE-Platten juenger als ca. 6 Jahre):
OK. Dann kann IDE das also inzwischen auch. Kinder, wie die Zeit vergeht. ;-)
;-(
Die Platte hat intern einen "reservierten Bereich" von Sektoren, in den die Firmware der HD defekte Sektoren umbiegt.
Das hiesse: Von vornherein defekte Sektoren werden beim Formatieren erkannt und ausgemappt. Tauchen später neue defekte auf, wird ein Schaden größer - analog einem Schlagloch in der Straße. Diese Blocks werden mit Reserveblocks ausgemappt. Erst, wenn die Reserve aufgebraucht ist, bekommt man auf "normaler" Applikationsebene den Schaden überhaupt mit.
Ist das so richtig?
Nein. Erst wenn die Reserve aufgebraucht ist koennen beim formatieren defekte Sektoren erkannt werden -- vorher "luegt" die HD darueber, dass ein Sektor "klammheimlich" schon in den Reservebereich "verlegt" wurde... d.h. egal von was (also auch fdisk/mkfs.* oder scandisk) defekte Sektoren gemeldet werden, _wenn_ defekte Sektoren gemeldet werden, dann wurde die Reserve schon aufgebraucht.
Dann verstehe ich eins nicht: Wenn ein Block kaputt geht, aber noch ausgemappt werden kann - dann müssten die Daten ja futsch sein (Block kaputt), bei Kontrolle aber kein Fehler zu finden sein (ist ja ausgemappt).
Nicht ganz. Der Defekt ist in aller Regel nicht sofort komplett, d.h. die Firmware kann i.d.R. die Daten noch auslesen (durch mehrfache Leseversuche, die dann "gemittelt" werden und das wahrscheinlichste Ergebnis wird dann verwendet) und auf einen der Reservesektoren kopieren. Die Defekte sind mehr oder weniger schleichend, und je nachdem welche Toleranz in der Firmware eingestellt wurde, wird frueher oder spaeter ein Sektor als "defekt" betrachtet (und in die Reserve verlagert). Von all dem bekommt _keine_ Software ausser der Firmware der HD etwas mit -- auch nicht das BIOS oder ein mkfs/badblocks -- diese bekommen _erst_ etwas mit, wenn die Reserve aufgebraucht ist. Allerdings gibt es IIRC spezielle Firmwarefunktionen und Software des Herstellers, mit dem die HD-Firmware nach dem Status des Reservebereichs befragt werden kann.
Meiner Erfahrung nach passiert das so aber nicht: Sich als "Heile" identifizierende Platten verlieren keine Daten,
Doch -- allerdings nicht "von jetzt auf nachher", sondern schleichend, und somit kann die Firmware die Daten noch in einen Reservesektor kopieren.
und erst, wenn die Platte Geräusche macht oder hängenbleibt, sind wirklich Daten futsch.
Das ist dann der "GAU" ;)
Kann das jemand erklären?
Ja. Der schleichende Verlust wird eben eine Weile durch die Reserve "versteckt"...
Zweiter Punkt: Hier wurde behauptet, die lange Zahlenliste auf der Platte sei eine Liste der defekten Sektoren. Ich hätte es ja nicht nachgeprüft, aber da ich heute sowieso eine Platte in einen G4 eingebaut habe... ähm... die lange Zahlenliste sind US-Patente. Keine bad blocks. ;-)
Haette mich auch gewundert ;) An "Daten" findet man ueblicherweise nur das logische CHS-Mapping[1], das die HD ans BIOS weitergibt und die Jumperbelegung (sowie vielleicht noch irgendwelche elektrischen Daten)... -dnh [1] physikalisch haben HDs heute ja meist 1-8 Koepfe. Bei Maxtor sieht man das z.B. an der Endziffer der Modellbezeichnung, z.B. ein H8 heisst, dass 4 Scheiben `a 2 Koepfen der HD rotieren... Ergo ist selbst eine logische Geometrie x/16/y "gelogen" -- aber die Umsetzung macht die HD-Firmware, und nicht der IDE-Controller oder gar das BIOS... # for i in a b c; do cat /proc/ide/hd${i}/{model,geometry}; done Maxtor 91303D6 physical 25249/16/63 logical 1584/255/63 real: 6 Koepfe auf 3 Scheiben und gut 2 GB / Oberflaeche Maxtor 92041U4 physical 39703/16/63 logical 2491/255/63 real: 4 Koepfe auf 2 Scheiben und gut 4.7 GB / Oberflaeche IBM-DTLA-305040 physical 19710/16/255 logical 5005/255/63 real: weiss grad nicht... 4, 5, 6 oder 8? ;) Das "physical" ist die Geometrie, die die HD meldet, wenn sie befragt wird, und die i.d.R. auch auf dem Plattenlabel steht, "logical" ist die, die im BIOS eingestellt wird (normal/CHS/LBA). -- 6: Globale Variable Parameterübergabemechanismus in 4GLs (Marit Köhntopp)