Come riparare una partizione HFS + danneggiata da un disco rigido danneggiato?


8

Ho un disco Mac OS X di un amico che viene fornito con una HFS+partizione. Dovrei recuperare i dati personali da questo disco e non sono ancora sicuro se il filesystem sia corrotto o il disco stia morendo).


Sfondo : i sintomi completi sono i seguenti. L'unità viene riconosciuta da Linux e viene persino montata automaticamente (usando Xfcequi):

liv@liv-HP-Compaq-dc7900:~$ cat /etc/mtab | grep -i hfs
/dev/sdb2 /media/Macintosh\040HD hfsplus ro,nosuid,nodev,uhelper=udisks 0 0

Il kernel riporta quanto segue:

[ 4382.681310] usb 2-5: USB disconnect, device number 2
[ 4390.104044] usb 2-5: new high-speed USB device number 3 using ehci_hcd
[ 4390.259178] Initializing USB Mass Storage driver...
[ 4390.259983] scsi6 : usb-storage 2-5:1.0
[ 4390.260077] usbcore: registered new interface driver usb-storage
[ 4390.260079] USB Mass Storage support registered.
[ 4391.260684] scsi 6:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
[ 4391.261346] sd 6:0:0:0: Attached scsi generic sg2 type 0
[ 4391.494924] sd 6:0:0:0: [sdb] 488397168 512-byte logical blocks: (250 GB/232 GiB)
[ 4391.495668] sd 6:0:0:0: [sdb] Write Protect is off
[ 4391.495672] sd 6:0:0:0: [sdb] Mode Sense: 43 00 00 00
[ 4391.496551] sd 6:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 4391.560091]  sdb: sdb1 sdb2
[ 4391.565039] sd 6:0:0:0: [sdb] Attached SCSI disk
[..]
[10376.614742] hfs: Filesystem was not cleanly unmounted, running fsck.hfsplus is recommended.  mounting read-only.
[10380.531230] sd 6:0:0:0: [sdb] Unhandled sense code
[10380.531234] sd 6:0:0:0: [sdb]  Result: hostbyte=invalid driverbyte=DRIVER_SENSE
[10380.531239] sd 6:0:0:0: [sdb]  Sense Key : Medium Error [current] 
[10380.531243] sd 6:0:0:0: [sdb]  Add. Sense: Unrecovered read error
[10380.531253] sd 6:0:0:0: [sdb] CDB: Read(10): 28 00 00 1e 22 e8 00 00 08 00
[10380.531259] end_request: critical target error, dev sdb, sector 1975016
[10380.531264] Buffer I/O error on device sdb2, logical block 195672
[10384.353981] sd 6:0:0:0: [sdb] Unhandled sense code
[10384.353985] sd 6:0:0:0: [sdb]  Result: hostbyte=invalid driverbyte=DRIVER_SENSE
[10384.353990] sd 6:0:0:0: [sdb]  Sense Key : Medium Error [current] 
[10384.353995] sd 6:0:0:0: [sdb]  Add. Sense: Unrecovered read error
[10384.354004] sd 6:0:0:0: [sdb] CDB: Read(10): 28 00 00 1e 22 e8 00 00 08 00
[10384.354011] end_request: critical target error, dev sdb, sector 1975016
[10384.354015] Buffer I/O error on device sdb2, logical block 195672

Ecco l'output rilevante di lshw:

 *-scsi
      physical id: 3
      bus info: usb@2:5
      logical name: scsi7
      capabilities: emulated scsi-host
      configuration: driver=usb-storage
    *-disk
         description: SCSI Disk
         product: 2105
         vendor: ASMT
         physical id: 0.0.0
         bus info: scsi@7:0.0.0
         logical name: /dev/sdb
         version: 0
         serial: 00000000000000000000
         size: 232GiB (250GB)
         capabilities: gpt-1.00 partitioned partitioned:gpt
         configuration: ansiversion=6 guid=6b43402b-9887-4a33-a329-9801b59ccdc7
       *-volume:0
            description: Windows FAT volume
            vendor: BSD  4.4
            physical id: 1
            bus info: scsi@7:0.0.0,1
            logical name: /dev/sdb1
            version: FAT32
            serial: 70d6-1701
            size: 199MiB
            capacity: 199MiB
            capabilities: boot fat initialized
            configuration: FATs=2 filesystem=fat label=EFI name=EFI System Partition
       *-volume:1
            description: Apple HFS partition
            vendor: Mac OS X (fsck)
            physical id: 2
            bus info: scsi@7:0.0.0,2
            logical name: /dev/sdb2
            version: 4
            serial: d9a741cc-8313-cc78-0000-000000800000
            size: 232GiB
            capabilities: journaled bootable osx hfsplus initialized
            configuration: boot=osx checked=2009-09-24 02:29:07 created=2009-09-23 17:29:07 filesystem=hfsplus lastmountedby=fsck modified=2013-11-03 01:02:00 name=Customer state=unclean

Quando apro l'unità Thunar, ricevo il seguente messaggio di errore: "Failed to open directory "Macintosh HD". Error when getting information for file '/media/Macintosh HD/.journal': Input/output error."(Posso accedere al punto di montaggio e ad alcuni sottodir, se lo uso emelFM2).

inserisci qui la descrizione dell'immagine

Se provo lssul punto di montaggio, ottengo un sacco di errori I / O:

liv@liv-HP-Compaq-dc7900:/media/Macintosh HD$ ls -lha
ls: cannot access .hotfiles.btree: Input/output error
ls: cannot access .journal: Input/output error
ls: cannot access .journal_info_block: Input/output error
ls: cannot access .Spotlight-V100: Input/output error
ls: cannot access .Trashes: Input/output error
ls: cannot access home: Input/output error
ls: cannot access libpeerconnection.log: Input/output error
ls: cannot access net: Input/output error
ls: reading directory .: Input/output error
total 20M
drwxrwxr-t 1 root   80   35 Oct 13 22:56 .
drwxr-xr-x 3 root root 4.0K Jan 16 21:09 ..
drwxrwxr-x 1 root   80   53 Oct 18 22:07 Applications
drwxr-xr-x 1 root root   39 Sep 26 00:51 bin
drwxrwxr-t 1 root   80    2 Jul  9  2009 cores
dr-xr-xr-x 1 root root    2 Jul  9  2009 dev
-rw-rw-r-- 1  501   80  16K Sep  8 14:19 .DS_Store
lrwxr-xr-x 1 root root   11 Sep 24  2009 etc -> private/etc
---------- 1 root   80    0 Jul  9  2009 .file
drwx------ 1   99   99  246 Nov  3 00:29 .fseventsd
lrwxr-xr-x 1 root   80   60 Mar 20  2010 Guides de l’utilisateur et informations -> /Library/Documentation/User Guides and Information.localized
dr-xr-xr-t 1 root root    2 Sep 24  2009 .HFS+ Private Directory Data?
d????????? ? ?    ?       ?            ? home
-????????? ? ?    ?       ?            ? .hotfiles.btree
-????????? ? ?    ?       ?            ? .journal
-????????? ? ?    ?       ?            ? .journal_info_block
-????????? ? ?    ?       ?            ? libpeerconnection.log
drwxrwxr-t 1 root   80   58 Mar 27  2013 Library
drwxrwxrwt 1 root root    4 Sep 18  2012 lost+found
-rw-r--r-- 1 root root  20M Jun  8  2011 mach_kernel
d????????? ? ?    ?       ?            ? net
drwxr-xr-x 1 root root    2 Jul  9  2009 Network
drwxr-xr-x 1  501   80    3 Oct 26  2010 opt
drwxr-xr-x 1 root root    6 Sep 24  2009 private
drwxr-xr-x 1 root root   67 Sep 26 00:52 sbin
d????????? ? ?    ?       ?            ? .Spotlight-V100
drwxr-xr-x 1 root root    4 Jul  3  2011 System
lrwxr-xr-x 1 root root   11 Sep 24  2009 tmp -> private/tmp
d????????? ? ?    ?       ?            ? .Trashes
drwxr-xr-x 1 root root    2 May 18  2009 .vol
-rw-r--r-- 1  501   80  70K Jun 26  2013 .VolumeIcon.icns

Infine, ho già provato a installare hfsprogsed eseguire fsck.hfsplus, ma senza molta fortuna:

root@liv-HP-Compaq-dc7900:/home/liv# fsck.hfsplus -q /dev/sdb2
** /dev/sdb2
QUICKCHECK ONLY; FILESYSTEM DIRTY

root@liv-HP-Compaq-dc7900:/home/liv# fsck.hfsplus -d /dev/sdb2
** /dev/sdb2
    Using cacheBlockSize=32K cacheTotalBlock=1024 cacheSize=32768K.
** Checking HFS Plus volume.
   Invalid B-tree node size
(8, 0)
** Volume check failed.
volume check failed with error 7 
    volume type is pure HFS+ 
    primary MDB is at block 0 0x00 
    alternate MDB is at block 0 0x00 
    primary VHB is at block 2 0x02 
    alternate VHB is at block 487725342 0x1d12191e 
    sector size = 512 0x200 
    VolumeObject flags = 0x07 
    total sectors for volume = 487725344 0x1d121920 
    total sectors for embedded volume = 0 0x00 

Domanda : Dai messaggi di errore sopra, il filesystem è danneggiato o l'unità non funziona? Come posso riparare il filesystem corrotto? E se questo non è il problema, come posso recuperare i dati dell'utente da un disco parzialmente guasto?


AGGIORNAMENTO1 :

Dato l'input utile che ho ricevuto da quale opzione 'smartctl -d' dovrei usare su questo hard disk: 'scsi' o 'ata'? , Ora sono riuscito a eseguire correttamente smartctlsul disco rigido:

root@liv-HP-Compaq-dc7900:/home/liv# smartctl -d sat -H -i -c -A -l error -l selftest -l selective '/dev/sdb'
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-57-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Device Model:     TOSHIBA MK2555GSXF
Serial Number:    10J9SA69S
LU WWN Device Id: 5 000039 245a067fd
Firmware Version: FH205B
User Capacity:    250,059,350,016 bytes [250 GB]
Sector Size:      512 bytes logical/physical
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Fri Jan 17 18:02:43 2014 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
[..]

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     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       1031
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       16237
  5 Reallocated_Sector_Ct   0x0033   100   100   050    Pre-fail  Always       -       18
  7 Seek_Error_Rate         0x000b   100   100   050    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   081   081   000    Old_age   Always       -       7987
 10 Spin_Retry_Count        0x0033   253   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       5274
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       1119
192 Power-Off_Retract_Count 0x0032   084   084   000    Old_age   Always       -       8196
193 Load_Cycle_Count        0x0032   037   037   000    Old_age   Always       -       635340
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       25 (Min/Max 7/49)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       3
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       124
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   253   000    Old_age   Always       -       0
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       57
222 Loaded_Hours            0x0032   087   087   000    Old_age   Always       -       5415
223 Load_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
224 Load_Friction           0x0022   100   100   000    Old_age   Always       -       0
226 Load-in_Time            0x0026   100   100   000    Old_age   Always       -       346
240 Head_Flying_Hours       0x0001   100   100   001    Pre-fail  Offline      -       0
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       8107

SMART Error Log Version: 1
ATA Error Count: 1210 (device log contains only the most recent five errors)
[..]

Error 1210 occurred at disk power-on lifetime: 7984 hours (332 days + 16 hours)
  When the command that caused the error occurred, the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 08 e8 22 1e 40  Error: UNC 8 sectors at LBA = 0x001e22e8 = 1975016

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  25 da 08 e8 22 1e 40 00      00:08:36.484  READ DMA EXT
  25 da 08 e8 22 1e 40 00      00:08:32.637  READ DMA EXT
  25 da 08 00 66 22 40 00      00:08:32.637  READ DMA EXT
  25 da 08 f8 65 22 40 00      00:08:32.625  READ DMA EXT
  25 da 08 50 c3 28 40 00      00:08:32.625  READ DMA EXT

[..]

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]


SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Non sono sicuro di come analizzare questo output, ma due cose si aprono ai miei occhi:

  • SMART overall-health self-assessment test result: PASSED
  • ATA Error Count: 1210 (device log contains only the most recent five errors)

Quindi quanto è male? E come devo procedere?


AGGIORNAMENTO2 :

Seguendo i suggerimenti nei commenti, ho usato un Mac OS X per eseguire diskutil verifyVolume:

mac:~ admin$ diskutil list
[..]
/dev/disk1
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:      GUID_partition_scheme                        *250.1 GB   disk1
1:                        EFI                         209.7 MB   disk1s1
2:                  Apple_HFS Macintosh HD            249.7 GB   disk1s2

mac:~ admin$ diskutil verifyVolume /dev/disk1s2
Started filesystem verification on disk1s2 Macintosh HD
Checking Journaled HFS Plus volume
Invalid B-tree node size
The volume Macintosh HD could not be verified completely
Error: -9957: Filesystem verify or repair failed
Underlying error: 8: POSIX reports: Exec format error

E fsck:

mac:~ admin$ fsck -d /dev/disk1s2 
** /dev/rdisk1s2
BAD SUPER BLOCK: MAGIC NUMBER WRONG

LOOK FOR ALTERNATE SUPERBLOCKS? [yn] y

SEARCH FOR ALTERNATE SUPER-BLOCK FAILED. YOU MUST USE THE
-b OPTION TO FSCK TO SPECIFY THE LOCATION OF AN ALTERNATE
SUPER-BLOCK TO SUPPLY NEEDED INFORMATION; SEE fsck(8).

Quindi, quanto sono cattivi questi messaggi di errore? L'unità è brindata?


AGGIORNAMENTO3 :

Ho giocato un po 'di più con smartctle mi sembra (ma per favore conferma !!) che l'unità è decisamente brindata:

# 'smartctl' -d sat,16 -H -i -c -A -l error -l selftest -l selective '/dev/sdb'

smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.2.0-57-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Device Model:     TOSHIBA MK2555GSXF
Serial Number:    10J9SA69S
LU WWN Device Id: 5 000039 245a067fd
Firmware Version: FH205B
User Capacity:    250,059,350,016 bytes [250 GB]
Sector Size:      512 bytes logical/physical
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Mon Jan 27 15:20:57 2014 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
See vendor-specific Attribute list for failed Attributes.

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                    was never started.
                    Auto Offline Data Collection: Disabled.
Self-test execution status:      (  88) The previous self-test completed having
                    the electrical element of the test
                    failed.
Total time to complete Offline 
data collection:        (  120) seconds.
Offline data collection
capabilities:            (0x5b) SMART execute Offline immediate.
                    Auto Offline data collection on/off support.
                    Suspend Offline collection upon new
                    command.
                    Offline surface scan supported.
                    Self-test supported.
                    No Conveyance Self-test supported.
                    Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                    power-saving mode.
                    Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                    General Purpose Logging supported.
Short self-test routine 
recommended polling time:    (   2) minutes.
Extended self-test routine
recommended polling time:    (  90) minutes.
SCT capabilities:          (0x0039) SCT Status supported.
                    SCT Error Recovery Control supported.
                    SCT Feature Control supported.
                    SCT Data Table supported.

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     0x000b   100   100   050    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   050    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0027   100   100   001    Pre-fail  Always       -       1025
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       1
  5 Reallocated_Sector_Ct   0x0033   100   100   050    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000b   100   100   050    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   100   100   050    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       0
 10 Spin_Retry_Count        0x0033   100   100   030    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       1
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       0
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       3
194 Temperature_Celsius     0x0022   100   100   000    Old_age   Always       -       27 (Min/Max 26/30)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   253   000    Old_age   Always       -       0
220 Disk_Shift              0x0002   100   100   000    Old_age   Always       -       57
222 Loaded_Hours            0x0032   100   100   000    Old_age   Always       -       0
223 Load_Retry_Count        0x0032   100   100   000    Old_age   Always       -       0
224 Load_Friction           0x0022   100   100   000    Old_age   Always       -       0
226 Load-in_Time            0x0026   100   100   000    Old_age   Always       -       353
240 Head_Flying_Hours       0x0001   001   001   001    Pre-fail  Offline  FAILING_NOW 3
254 Free_Fall_Sensor        0x0032   100   100   000    Old_age   Always       -       0

Error SMART Error Log Read failed: scsi error badly formed scsi parameters
Smartctl: SMART Error Log Read Failed
Error SMART Error Self-Test Log Read failed: scsi error badly formed scsi parameters
Smartctl: SMART Self Test Log Read Failed
Error SMART Read Selective Self-Test Log failed: scsi error badly formed scsi parameters
Smartctl: SMART Selective Self Test Log Read Failed

Potrei individuare:

  • SMART overall-health self-assessment test result: FAILED! Drive failure expected in less than 24 hours. SAVE ALL DATA.
  • 240 Head_Flying_Hours 0x0001 001 001 001 Pre-fail Offline FAILING_NOW 3

Sospetto che qualsiasi soluzione come testdiskophotorec sull'unità stessa sia praticamente fuori discussione in questo momento. Quindi la mia unica speranza di salvare qualsiasi dato sarebbe quella di ottenere un disco rigido più grande e fare una copia bit per bit dell'unità guasta usando ddoddrescue , e quindi giocare con photorecl'immagine risultante. Altre idee molto gradite!


AGGIORNAMENTO4 :

Come richiesto in Ripristino dei dati da un disco rigido danneggiato: il "trucco del congelatore" , sto pubblicando l'output di smartctl -H /dev/yourdiske smartctl -A /dev/yourdisk:

[Output was misleading so I removed that. See UPDATE5.]

Ciò consente di identificare il tipo di errore?


AGGIORNAMENTO5 :

Circa una settimana fa ho corso scioccamente testdisksul disco per una notte (dopo un paio di fscktentativi nativi di Mac OS X ), e il danno probabilmente è peggiorato di quanto non fosse stato quando il proprietario lo aveva semplicemente lasciato cadere. Alla fine della testdisksessione stavo chiaramente sentendo un rumore di clic (" clic di morte "?) E l'unità non era in grado di leggere ulteriori (tutte le letture causavano un errore). Inizialmente supponevo che ciò stesse accadendo a causa del surriscaldamento, ma ora tendo a credere che il danno si sia semplicemente propagato e l'unità sia ora in pessime condizioni.

Quando provo a correre smartctl short self-testsull'unità, il test Completed with electrical failuree l' smartctloutput sono gli stessi di UPDATE3, incluso l' 240 Head_Flying_Hours 0x0001 001 001 001 Pre-fail Offline FAILING_NOW 3errore.

inserisci qui la descrizione dell'immagine

Ho anche tentato una ddrescuesessione, che si è conclusa con un totale di 0 bytessoccorsi.

root@xubuntu:/mnt/ram# ddrescue -f -n /dev/sdc /dev/sda /mnt/ram/ddrescue.log

Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued:         0 B,  errsize:       0 B,  errors:       0
Current status
rescued:         0 B,  errsize:    250 GB,  current rate:        0 B/s
   ipos:     65024 B,   errors:       1,    average rate:        0 B/s
   opos:     65024 B,     time from last successful read:     3.5 m
Finished                   

Ad ogni tentativo di lettura il kernel si lamentava dmesgdi Buffer I/O error on device:

[ 3706.642819] sd 9:0:0:0: [sdc]  Sense Key : Medium Error [current]
[ 3706.642824] sd 9:0:0:0: [sdc]  Add. Sense: Unrecovered read error
[ 3706.642834] sd 9:0:0:0: [sdc] CDB: Read(10): 28 00 00 00 00 18 00 00 08 00
[ 3706.642842] end_request: critical target error, dev sdc, sector 24
[ 3706.642845] Buffer I/O error on device sdc, logical block 3
[ 3710.910060] sd 9:0:0:0: [sdc] Unhandled sense code
[ 3710.910064] sd 9:0:0:0: [sdc]  Result: hostbyte=invalid driverbyte=DRIVER_SENSE

Quindi tutto ciò indica sicuramente danni all'hardware. Ma qual è il tipo esatto di danno? (In parte, vorrei verificare se il "trucco del congelatore" è in qualche modo appropriato.)

Come suggerito in una domanda correlata , ho controllato Come recuperare i dati quando il disco rigido si gonfia e mi sembra, dati i sintomi che ho notato, che sia:

  • L'unità sta ruotando e facendo clic o rumori
  • L'unità gira e viene rilevata dal computer, ma si blocca quando si tenta di accedervi

Quindi, date tutte le informazioni aggiuntive pubblicate qui, è possibile identificare il tipo di errore riscontrato sul disco? E il "trucco del congelatore" sarebbe appropriato in questo caso?

(Mi è stato suggerito che "Quando le testine di lettura e lettura toccano la superficie del disco, allora si muovono e si girano, quindi non è più possibile leggere", e questo suona come una spiegazione realistica, ma non sono sicuro di come per confermarlo.)


1
Questi messaggi del kernel dicono che hai un settore danneggiato. È possibile utilizzare smartctlper verificare se è solo un settore danneggiato o pochi, o le cose del disco vicino alla fine.
derobert,

@derobert Ora sono riuscito a correre smartctlsull'unità (vedi UPDATE1 nell'OP). Qualche intuizione?
Landroni,

La mia raccomandazione sarebbe di collegarlo a un Mac e tentare di ripararlo con l'OS X nativo fscko diskutil.
Bahamat,

@bahamat Almeno in Debian, hfsprogs a monte è ... Apple. Sebbene il pacchetto Debian sia obsoleto. Trovare l'ultima versione a monte è, beh, una sfida ... Probabilmente è opensource.apple.com/source/hfs/hfs-226.1.1 ma che ha una versione precedente, quindi chi lo sa!
derobert,

@derobert: Beh ... la versione di Debian è 332.25-11. Secondo il log delle modifiche 332.25-1 è stata una nuova versione upstream corrispondente a Mac OS X 10.4 nel 2009. Prima di allora la versione minore era 332.23. Quindi sembra che la versione di Debian stia seguendo Tiger. Se fossi in me , sarei nervoso a gestire Tiger fsckper qualcosa di moderno.
Bahamat,

Risposte:


7

Sembra che ho trovato questa discussione troppo tardi, ma per i futuri lettori di questa discussione:

Quando si esegue il salvataggio dei dati, il primo passo dovrebbe essere quello di fare un'immagine completa dell'unità con dd o qualcosa di simile (cloneZilla è una scelta popolare).

In altre parole, ottenere un'impronta dell'unità così com'è in modo da non danneggiare ulteriormente il volume durante il tentativo di salvare i dati.


2
Sì, esattamente! Questo è stato il mio errore iniziale da sempre. Tutto ciò testdisk, strumenti di controllo FS, ecc. È stato quello di aggravare i problemi hardware. Probabilmente è meglio clonare l'immagine dell'unità utilizzando uno strumento simile ddrescue, poiché consente di saltare in modo intelligente settori problematici (mentre ddal primo segno di danneggiamento dell'hardware dovrebbe semplicemente fallire).
Landroni,

1
Ancora meglio, usa dd_rescue invece di ddrescue. Si aspetta attivamente e si occupa di serie di settori danneggiati, saltando in zone sane per ottenere il più possibile dei dati facilmente leggibili prima di tornare per riprovare le zone lente in errore. Genio e gratuito.
Hmijail piange le dimissioni il

3

Sulla base del primo log intelligente, probabilmente hai 124 settori danneggiati - questa parte:

196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       3
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       124

È necessario eseguire una scansione completa per essere sicuri del numero effettivo. Alcuni file sono sicuramente danneggiati. Ecco perché hai Conteggio errori: 1210, ogni volta che viene letto un settore danneggiato, ricevi +1 errore. Devi scrivere zeri in questi settori se vuoi far funzionare il disco perché i settori possono essere trasferiti solo quando vengono scritti. Non posso dirti come operare sul filesystem hfs perché non l'ho mai usato. Se avevi ext4, puoi usare fsck con le seguenti opzioni:

 -c                   Check for bad blocks and add them to the badblock list
 -l bad_blocks_file   Add to badblocks list

Quindi, potresti ottenere l'elenco di tutti i blocchi danneggiati e quindi conoscere la loro posizione, il che può aiutare a stimare se i blocchi danneggiati hanno danneggiato i file regolari o qualcos'altro. Stavo usando debugfs. Quindi è possibile scrivere zeri in questi settori tramite:

# hdparm --yes-i-know-what-i-am-doing --write-sector 104284160 /dev/sdb

ed elimina i file danneggiati.

Dal registro che hai fornito:

ls: cannot access .hotfiles.btree: Input/output error
ls: cannot access .journal: Input/output error
ls: cannot access .journal_info_block: Input/output error
ls: cannot access .Spotlight-V100: Input/output error
ls: cannot access .Trashes: Input/output error
ls: cannot access home: Input/output error
ls: cannot access libpeerconnection.log: Input/output error
ls: cannot access net: Input/output error
ls: reading directory .: Input/output error

Sai quali file sono danneggiati.

La prossima cosa è il valore del seguente parametro:

193 Load_Cycle_Count        0x0032   037   037   000    Old_age   Always       -       635340

Questo uccide il tuo disco o lo ha già ucciso. Il mio disco, ad esempio, ha una durata di 500k. L'ho scoperto quando ha raggiunto 350k ... Alla fine, ho disabilitato questa funzione nel mio firmware del disco e funziona finora.

La prossima cosa è il supperblock del filesystem. Avresti dovuto fare una copia di quel blocco per questo tipo di situazione e dopo aver rimosso i badblock, potresti ripristinare il superblocco. Se il superblocco si è danneggiato e non si dispone del backup o non si ricorda la posizione dei settori di backup, non sarà possibile ripristinare i dati. Prova ad usare:

# file -s /dev/sdb1
# file -s /dev/sdb

Ma puoi leggere il filesystem (comando ls), quindi non è poi così male, e penso che dopo aver rimosso i badblock e aver eliminato alcuni file, tutto dovrebbe andare bene.


Grazie! Come nota generale, ho pochi dubbi sul fatto che l'unità sia danneggiata (prima che potessi anche montare la partizione HFS +, ma ora il kernel non lo rileva nemmeno; divulgazione completa: ci ho stupidamente corso testdiskper una notte e il danno probabilmente peggiorò di quanto non fosse stato quando il proprietario lo aveva semplicemente lasciato cadere). Quindi ora sto semplicemente sperando in ddrescuetutto ciò che posso da esso , e poi photorectutto ciò che può essere salvato.
Landroni,

Un paio di domande. "Load_Cycle_Count" Cosa significa e perché uccide il disco? Come è possibile disabilitarlo nel firmware? "La prossima cosa è il supperblock del filesystem. Avresti dovuto fare una copia di quel blocco [..]" Avrei dovuto fare una copia di tutto non appena l'ho preso !! Ma comunque, ora il superblocco è probabilmente fritto, dato che ultimamente quando ho collegato il disco il kernel si lamentava del superblocco corrotto dmesg.
Landroni,

1
Leggi qui community.wd.com/t5/My-Book-Live/… - Ho un disco WD e posso usare idle3-tools - idle3-tools.sourceforge.net
Mikhail Morfikov

1
È a causa dei tre valori 001 001 001: se VALUE = <THRESH, il disco probabilmente non funzionerà, quindi otterrai quelle informazioni. Potrebbe anche non significare nulla.
Mikhail Morfikov,

1
@landroni - Non sono sicuro che congelare un disco sia una buona idea, ma se il tuo disco è morto, o quasi morto, e non puoi semplicemente farlo funzionare, non puoi fare più male, quindi se non ho altre opzioni, fallo e basta, ma non credo che ti aiuterà.
Mikhail Morfikov,

-2

Guasti della trasmissione meccanica

Per il recupero di dati da blocchi danneggiati è possibile utilizzare l' utilità SpinRite $ 89 per recuperare i dati. SpinRite non dipende dal file system.

Corruzione del file system HFS +

Quando si verificano problemi nel file system HFS +, utilizzare l' utilità DiskWarrior $ 99,95 su Mac OS X per riparare i problemi HFS +.

Poiché hai già utilizzato altri strumenti di riparazione (fsck), devi utilizzare DiskWarrior in modalità " scavenge ". Puoi accedere all'opzione "scavenge" nascosta tenendo premuto il alttasto prima di premere il pulsante "Ricostruisci" ("Ricostruisci" cambia in "Ricostruisci ..." tenendo premuto il tasto Alt). Ora aggiungi un segno di spunta a "Scavenge" e avvia "Ricostruisci".

Lo "scavenge" di DiskWarrior è ottimizzato per il recupero dei file dopo che un'altra utilità di riparazione del disco è già stata utilizzata per recuperare i file. La corruzione del PO potrebbe essere causata da problemi logici o fisici. DiskWarrior è specializzato nell'eliminazione di errori di directory "logici", SpinRite è specializzato nel recupero di dati causati da problemi "fisici" sul disco rigido.


Cosa c'è di diverso dal normale nella modalità "scavenge" di DiskWarrior? Perché questi strumenti sono particolarmente adatti per risolvere la situazione del PO?
un CVn del

1
@ MichaelKjörling "scavenge" di DiskWarrior è ottimizzato per il recupero dei file dopo che un'altra utilità di riparazione del disco è già stata utilizzata per recuperare i file. La corruzione del PO potrebbe essere causata da problemi logici o fisici. DiskWarrior è specializzato nell'eliminazione di errori di directory "logici", SpinRite è specializzato nel recupero di dati causati da problemi "fisici" sul disco rigido.
Pro Backup

È necessario modificare il post per includere ulteriori informazioni, quindi possibilmente utilizzare un commento @ per notificare il commentatore originale. Le informazioni nei commenti hanno solo la tendenza a perdersi facilmente nel rumore.
un CVn

1
Devo raccomandare CONTRO SpinRite . Quando ho provato a recuperare i dati da un disco rigido, ho perso tempo prezioso sul disco morente (> 24 ore per meno di 1 MB, fino a quando ho rinunciato e provato qualcos'altro). Finalmente sono riuscito a recuperare circa l'80% dei dati usando Linux (ddrescue e dd_rescue). Ho avuto buone esperienze con DiskWarrior, anche se non in modalità scavenge.
Hmijail piange le dimissioni il

Ho avuto una situazione molto simile alcune volte, risolvendone una nuova proprio ora; e devo 2 ° @hmijail su quella: ddrescue, testdisk, e altri strumenti software libero si sono rivelate più utili finora. jpgrecoverdisponibile Debian funziona meravigliosamente. Inoltre, il contrappunto di un fastidioso strumento OSX chiamato procedura guidata di recupero file Easeus funziona bene, ma NON se il disco è incasinato come nella domanda di OP, qui.
forgotstackxpassword
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.