Hoi,
Kann mir jemand sagen, bei welchen Gelegenheiten die Backup-Superblöcke bei ext2/3/4 aktualisiert wird? Bloß einmal beim Erstellen der Partition?
Und wie sieht das mit den Gruppendeskriptorfeldern aus - wann werden die abgeglichen? Die sind ja auch redundant vorhanden (einmal pro Blockgruppe).
Und speziell bei ext3-Partitionen mit 4096B virtueller Blockgröße (512B physischer Sektor-/Blockgröße, kein Advanced Format mit 4096B physischer Sektorgröße), damit sind alle meine ext3-Partitionen auf verschiedenen Festplatten/Rechnern ausgestattet:
Wie unterscheidet sich da der primäre Superblock einer Partition von den Backup-Superblocks?
Der primäre Superblock beginnt ja erst mit 2 Sektoren (1024B) Abstand vom Partitionsanfang, um Platz für den Bootsektor (512B) und einen eventuellen erweiterten Bootsektor (nochmal ein Sektor) zu lassen. Sagt zumindest die umfassendste und aktuelleste ext2-Dokumentation, die ich bisher gefunden habe: http://www.nongnu.org/ext2-doc/ext2.html
Die eigentliche Nutzlast des stets mindestens 1kB (zwei physische Sektoren) großen Superblocks scheint ja momentan bloß die ersten 264B zu umfassen, die restlichen 5 physischen Sektoren (je 512B) in einem 4096B großen primären Superblock sollten also ausgenullt sein. Soweit richtig?
Darauf folgt dann das (je nach Blockgruppenanzahl) durchaus mehrere Blöcke große Blockgruppendeskriptorenfeld (32B pro Gruppe). Auch richtig?
Nun habe ich ein wenig mit dd und hexdump auf verschiedenen Partitionen/Platten rumexperimentiert. Ergebnis: Die Backup-Superblöcke (bei Block 32768, 98304 usw.) scheinen ohne 1024B-Offset anzufangen. Der Bootsektor wird also nicht mitgesichert. Auch richtig?
Seltsamerweise habe ich bei einer Partition festgestellt, dass die restlichen 6 Sektoren der Backup-Superblöcke nicht leer sind, sondern auch Daten enthalten. Kann aber sein, dass ich diese Partition mal in der Größe verändert hatte (vermutlich mit gparted und Live-CD, weiß ich nicht mehr sicher). Ist das plausibel? Kann das sein?
Und noch zum Bootsektor:
Wenn ich es richtig verstanden habe, steht im Bootsektor einer logischen Partition stets drin, wo sich die nächste logische Partition befindet, siehe http://de.wikipedia.org/wiki/Partitionstabelle . Richtig?
Wenn das alles so stimmt, dann sollte ein Wiederherstellen des Superblockes mittels (beispielsweise) "dd if=/devsda5 of=/dev/sda5 count=1 bs=4096 skip=32768" also eigentlich keine gute Idee sein, weil der Bootsektor überschrieben wird? Oder habe ich da was falsch verstanden?
Man kann ja auch e2fsck -b 32768 /dev/sda5 verwenden, aber das stößt ja dann auch gleich ein fsck an...
Im übrigen weiß ich, dass man von einer beschädigten Partition mit dd eine Kopie auf eine andere Platte machen und an dieser Kopie dann arbeiten sollte.
In meinem akuten Fall sollte das aber nicht nötig sein, da ich die Partitiion noch mittels "mount -t ext2 -o sb=131072,ro /dev/sdb5 /media/testdir" einhängen und die Daten so sichern kann. Zum Zeitpunkt des Fehlers waren keine wichtigen Dateien auf der Partition geöffnet.
Der Superblock ist dummerweise von der Festplatte nicht mehr lesbar (I/O-Fehler von allen 8 Sektoren, also ein Bad Block). Das Smartmontools Bad Block Howto habe ich mir schon zu Gemüte geführt: http://smartmontools.sourceforge.net/badblockhowto.html
Der Fehler liegt mit hoher Wahrscheinlichkeit nicht bei der Platte, sondern wohl am IDE-Controller, am IDE-Sata-Wandler, dem PATA-Kabel oder doch dem Betriebssystem, jedenfalls ist die Platte erst 300 Stunden alt, und eine andere junge Platte hat der Rechner auch gleich ähnlich vermurkst. Beim letzten mal war bloß ein Journal-Block betroffen (der Sektor wurde von der Platte noch nicht mal gesperrt, "bloß" die ECC-Bits haben wohl Alarm geschlagen), jetzt ist es der Superblock...
Zuerst werde ich also die Daten sichern, dann mit "dd if=/dev/zero of=dev/sdb5 count=1 bs=4096" ; "sync" den Superblock wieder auf einen definierten Zustand bringen, dann mittels "smartctl -t long /dev/sdb" nach weiteren Bad Blocks forschen, und schließlich mit "e2fsck -b 32768" den Superblock und die Partition reparieren. Spricht da was gegen?
Zur Problemplatte noch eine Partitionsübersicht:
# fdisk -lu /dev/sdb
Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001d6d4
Device Boot Start End Blocks Id System
/dev/sdb1 * 6312578894 6289416 83 Linux
/dev/sdb2 1257889525157789 6289447+ 83 Linux
/dev/sdb3 2515779029350754 2096482+ 82 Linux swap / Solaris
/dev/sdb4 29350755 1953520064 9620846555 Extended
/dev/sdb5 29350818 1953520064 962084623+ 83 Linux
Display More
dmesg sagt beispielsweise:
[ 259.664083] usb 6-1: new high speed USB device using ehci_hcd and address 4
[ 259.800142] usb 6-1: New USB device found, idVendor=04fc, idProduct=0c15
[ 259.800151] usb 6-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[ 259.800159] usb 6-1: Product: USB to Serial-ATA bridge
[ 259.800165] usb 6-1: Manufacturer: Sunplus Technology Inc.
[ 259.800171] usb 6-1: SerialNumber: WDC WD10EV WD-WCAV58897882
[ 259.800445] usb 6-1: configuration #1 chosen from 1 choice
[ 259.951611] Initializing USB Mass Storage driver...
[ 259.951955] scsi4 : SCSI emulation for USB Mass Storage devices
[ 259.952187] usbcore: registered new interface driver usb-storage
[ 259.952196] USB Mass Storage support registered.
[ 259.955611] usb-storage: device found at 4
[ 259.955619] usb-storage: waiting for device to settle before scanning
[ 264.952908] usb-storage: device scan complete
[ 264.958084] scsi 4:0:0:0: Direct-Access WDC WD10 EVDS-63U8B0 PQ: 0 ANSI: 2
[ 264.959507] sd 4:0:0:0: Attached scsi generic sg2 type 0
[ 264.984442] sd 4:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
[ 264.987040] sd 4:0:0:0: [sdb] Write Protect is off
[ 264.987048] sd 4:0:0:0: [sdb] Mode Sense: 38 00 00 00
[ 264.987054] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 265.012405] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 265.012415] sdb: sdb1 sdb2 sdb3 sdb4 < sdb5 >
[ 265.070251] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 265.070264] sd 4:0:0:0: [sdb] Attached SCSI disk
[ 267.898625] sd 4:0:0:0: [sdb] Unhandled sense code
[ 267.898637] sd 4:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 267.898647] sd 4:0:0:0: [sdb] Sense Key : Medium Error [current]
[ 267.898658] sd 4:0:0:0: [sdb] Add. Sense: Unrecovered read error
[ 267.898669] sd 4:0:0:0: [sdb] CDB: Read(10): 28 00 01 bf db a2 00 00 08 00
[ 267.898691] end_request: I/O error, dev sdb, sector 29350818
[ 267.898705] Buffer I/O error on device sdb5, logical block 0
[ 267.898716] Buffer I/O error on device sdb5, logical block 1
[ 267.898724] Buffer I/O error on device sdb5, logical block 2
[ 267.898732] Buffer I/O error on device sdb5, logical block 3
[ 267.898740] Buffer I/O error on device sdb5, logical block 4
[ 267.898747] Buffer I/O error on device sdb5, logical block 5
[ 267.898755] Buffer I/O error on device sdb5, logical block 6
[ 267.898762] Buffer I/O error on device sdb5, logical block 7
[ 270.397961] sd 4:0:0:0: [sdb] Unhandled sense code
[ 270.397971] sd 4:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 270.397982] sd 4:0:0:0: [sdb] Sense Key : Medium Error [current]
[ 270.397994] sd 4:0:0:0: [sdb] Add. Sense: Unrecovered read error
[ 270.398006] sd 4:0:0:0: [sdb] CDB: Read(10): 28 00 01 bf db a4 00 00 06 00
[ 270.398027] end_request: I/O error, dev sdb, sector 29350820
[ 270.398041] Buffer I/O error on device sdb5, logical block 2
[ 270.398052] Buffer I/O error on device sdb5, logical block 3
...
[12554.273122] sd 5:0:0:0: [sdb] Unhandled sense code
[12554.273134] sd 5:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[12554.273146] sd 5:0:0:0: [sdb] Sense Key : Medium Error [current]
[12554.273160] sd 5:0:0:0: [sdb] Add. Sense: Unrecovered read error
[12554.273172] sd 5:0:0:0: [sdb] CDB: Read(10): 28 00 01 bf db a6 00 00 04 00
[12554.273196] end_request: I/O error, dev sdb, sector 29350822
[12554.273211] Buffer I/O error on device sdb5, logical block 4
[12554.273222] Buffer I/O error on device sdb5, logical block 5
[12554.273233] Buffer I/O error on device sdb5, logical block 6
[12554.273242] Buffer I/O error on device sdb5, logical block 7
[12556.806837] sd 5:0:0:0: [sdb] Unhandled sense code
[12556.806850] sd 5:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[12556.806862] sd 5:0:0:0: [sdb] Sense Key : Medium Error [current]
[12556.806874] sd 5:0:0:0: [sdb] Add. Sense: Unrecovered read error
[12556.806887] sd 5:0:0:0: [sdb] CDB: Read(10): 28 00 01 bf db a6 00 00 04 00
[12556.806910] end_request: I/O error, dev sdb, sector 29350822
[12556.806924] Buffer I/O error on device sdb5, logical block 4
[12556.806936] Buffer I/O error on device sdb5, logical block 5
[12556.806945] Buffer I/O error on device sdb5, logical block 6
[12556.806954] Buffer I/O error on device sdb5, logical block 7
Display More
Der Vollständigkeit halber noch ein Auszug von smartctl:
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 199 051Pre-fail Always - 0
3 Spin_Up_Time 0x0027 118 115 021Pre-fail Always - 7100
4 Start_Stop_Count 0x0032 100 100 000Old_age Always - 168
5 Reallocated_Sector_Ct 0x0033 200 200 140Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 200 200 000Old_age Always - 0
9 Power_On_Hours 0x0032 100 100 000Old_age Always - 355
10 Spin_Retry_Count 0x0032 100 100 000Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 100 000Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000Old_age Always - 163
192 Power-Off_Retract_Count 0x0032 200 200 000Old_age Always - 52
193 Load_Cycle_Count 0x0032 200 200 000Old_age Always - 552
194 Temperature_Celsius 0x0022 100 099 000Old_age Always - 47
196 Reallocated_Event_Count 0x0032 200 200 000Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000Old_age Always - 1
198 Offline_Uncorrectable 0x0030 200 200 000Old_age Offline - 1
199 UDMA_CRC_Error_Count0x0032 200 200 000Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 200 200 000Old_age Offline - 0
SMART Error Log Version: 1
No Errors Logged
SMART Self-test log structure revision number 1
Num Test_DescriptionStatus Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended offlineCompleted: read failure 90% 339 29350822
# 2 Extended offlineCompleted: read failure 90% 304 29350822
# 3 Extended offlineCompleted: read failure 90% 304 29350822
# 4 Extended offlineCompleted without error 00% 302 -
# 5 Short offline Completed without error 00% 298 -
# 6 Conveyance offline Completed without error 00% 298 -
# 7 Short offline Completed without error 00% 298 -
# 8 Conveyance offline Completed: read failure 90% 297 5781102
# 9 Short offline Completed: read failure 90% 297 5781102
#10 Short offline Completed: read failure 90% 297 5781102
Display More
Gruß, Bartho