Comment réparer une partition HFS + corrompue à partir d'un disque dur endommagé?


8

J'ai le disque Mac OS X d'un ami fourni avec une HFS+partition. Je suis censé récupérer les données personnelles de ce disque, et je ne sais pas encore si le système de fichiers est corrompu ou si le disque est en train de mourir).


Contexte : Les symptômes complets sont les suivants. Le disque est reconnu par Linux et même monté automatiquement (à l'aide Xfceici):

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

Le noyau signale ce qui suit:

[ 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

Voici la sortie pertinente de 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

Lorsque j'ouvre le lecteur Thunar, j'obtiens le message d'erreur suivant: "Failed to open directory "Macintosh HD". Error when getting information for file '/media/Macintosh HD/.journal': Input/output error."(Cependant, je peux accéder au point de montage et à certains sous-répertoires si j'utilise emelFM2.)

entrez la description de l'image ici

Si j'essaye lssur le point de montage, j'obtiens un tas d'erreurs d'E / S:

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

Enfin, j'ai déjà essayé d'installer hfsprogset d'exécuter fsck.hfsplus, mais sans trop de chance:

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 

Question : D'après les messages d'erreur ci-dessus, le système de fichiers est-il corrompu ou le lecteur tombe en panne? Comment puis-je réparer le système de fichiers corrompu? Et si ce n'est pas le problème, comment puis-je récupérer les données utilisateur à partir d'un disque partiellement défaillant?


MISE À JOUR1 :

Compte tenu de l'entrée utile que j'ai obtenue de quelle option «smartctl -d» dois-je utiliser sur ce disque dur: «scsi» ou «ata»? , J'ai maintenant réussi à exécuter avec succès smartctlsur le disque dur:

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.

Je ne sais pas comment analyser cette sortie, mais deux choses me viennent à l'esprit:

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

Alors, comment est-ce mauvais? Et comment dois-je procéder?


MISE À JOUR2 :

En suivant les suggestions dans les commentaires, j'ai utilisé un Mac OS X pour exécuter 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

Et 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).

Alors, quelle est la gravité de ces messages d'erreur? Le lecteur est-il grillé?


MISE À JOUR3 :

J'ai joué un peu plus avec smartctlet il me semble (mais veuillez confirmer !!) que le drive est définitivement toast:

# '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

Je pourrais distinguer:

  • 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

Je soupçonne que toutes les solutions comme testdiskouphotorec sur le lecteur lui-même sont à peu près hors de question en ce moment. Donc, mon seul espoir de récupérer des données serait de me procurer un disque dur plus gros et de faire une copie bit à bit du lecteur défaillant à l'aide de ddouddrescue , puis de jouer avec photorecl'image résultante. Toute autre idée la plus bienvenue!


MISE À JOUR4 :

Comme demandé dans Récupération de données à partir d'un disque dur endommagé: le "truc du congélateur" , je publie la sortie de smartctl -H /dev/yourdisket smartctl -A /dev/yourdisk:

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

Cela permet-il d'identifier le type de panne?


MISE À JOUR5 :

Il y a environ une semaine, j'ai follement couru testdisksur le disque pendant une nuit (après quelques fscktentatives natives de Mac OS X ), et les dommages sont probablement devenus plus graves qu'ils ne l'avaient été lorsque le propriétaire l'avait simplement laissé tomber. À la fin de la testdisksession, j'entendais clairement un bruit de cliquetis (" clic de mort "?), Et le lecteur était incapable de faire d'autres lectures (toutes les lectures ont entraîné une erreur). Au début, je supposais que cela se produisait en raison d'une surchauffe, mais maintenant j'ai tendance à croire que les dommages se sont simplement propagés et que le disque est maintenant en très mauvais état.

Lorsque j'essaie de courir smartctl short self-testsur le lecteur, le test Completed with electrical failureet la smartctlsortie sont les mêmes que dans UPDATE3, y compris l' 240 Head_Flying_Hours 0x0001 001 001 001 Pre-fail Offline FAILING_NOW 3erreur.

entrez la description de l'image ici

J'ai également tenté une ddrescuesession, qui s'est terminée par un grand total de 0 bytessauvés.

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                   

A chaque tentative de lecture, le noyau se plaignait dmesgde 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

Donc, tout cela indique certainement des dommages matériels. Mais quel est le type exact de dommages? (En partie, je voudrais vérifier si le "truc du congélateur" est en quelque sorte approprié.)

Comme suggéré dans une question connexe , j'ai vérifié Comment récupérer des données lorsque votre disque dur monte le ventre et il me semble, compte tenu des symptômes que j'ai remarqués, que c'est soit:

  • Votre disque tourne et fait des clics, ou
  • Votre disque tourne et est détecté par votre ordinateur, mais se bloque lorsque vous essayez d'y accéder

Donc, étant donné toutes les informations supplémentaires publiées ici, est-il possible d'identifier le type de panne que le disque connaît? Et le "truc du congélateur" serait-il approprié dans ce cas?

(Il m'a été suggéré que "lorsque les têtes d'écriture de lecture touchent la surface du disque, elles se tournent et se tordent, donc aucune lecture n'est plus possible", et cela ressemble à une explication réaliste, mais je ne sais pas comment pour le confirmer.)


1
Ces messages du noyau disent que vous avez un mauvais secteur. Vous pouvez utiliser smartctlpour vérifier si c'est juste un mauvais secteur ou quelques-uns, ou les choses sur le disque à la fin.
derobert

@derobert Maintenant, j'ai réussi à exécuter smartctlsur le lecteur (voir UPDATE1 dans l'OP). Des idées?
landroni

Ma recommandation serait de l'attacher à un Mac et d'essayer de réparer avec l'OS X natif fsckou diskutil.
bahamat

@bahamat Au moins dans Debian, hfsprogs en amont est ... Apple. Bien que le paquet Debian soit obsolète. Trouver la dernière version en amont est, enfin, difficile ... C'est probablement opensource.apple.com/source/hfs/hfs-226.1.1 mais qui a une version inférieure, alors qui sait!
derobert

@derobert: Eh bien ... la version de Debian est la 332.25-11. Selon le changelog 332.25-1 était une nouvelle version en amont correspondant à Mac OS X 10.4 en 2009. Avant cela, la version mineure était 332.23. Il semble donc que la version de Debian suit Tiger. Si c'était moi , je serais nerveux de diriger Tiger's fsckpour quelque chose de moderne.
bahamat

Réponses:


7

Il semble que j'ai trouvé ce fil trop tard, mais pour les futurs lecteurs de ce fil:

Lorsque vous effectuez un sauvetage de données, votre première étape devrait être de faire une image complète du disque avec dd ou quelque chose de similaire (cloneZilla est un choix populaire).

En d'autres termes, obtenez une empreinte du lecteur tel quel afin de ne plus endommager le volume tout en essayant de récupérer les données.


2
Oui, exactement! Ce fut ma première erreur depuis le début. Tout ce que les testdiskoutils de vérification FS, etc. ont fait était d'aggraver les problèmes matériels. Il est probablement préférable de cloner l'image du lecteur à l'aide d'un outil similaire ddrescue, car il permet de sauter intelligemment les secteurs problématiques (alors qu'il ddéchouera simplement au premier signe de dommages matériels).
landroni

1
Encore mieux, utilisez dd_rescue au lieu de ddrescue. Il attend activement et traite les séries de secteurs endommagés, sautant dans des zones saines pour obtenir autant que possible des données facilement lisibles avant de revenir pour réessayer les zones à défaillance lente. Génial et gratuit.
hmijail pleure les démissionnaires le

3

Sur la base du premier journal intelligent, vous avez probablement 124 secteurs défectueux - cette partie:

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

Vous devez effectuer une analyse complète pour être sûr du nombre réel. Certains fichiers sont certainement endommagés. C'est pourquoi vous avez le nombre d'erreurs: 1210, chaque fois qu'un secteur endommagé est lu, vous obtenez +1 erreur. Vous devez écrire des zéros dans ces secteurs si vous souhaitez que le disque fonctionne, car les secteurs ne peuvent être déplacés que lorsqu'ils sont en cours d'écriture. Je ne peux pas vous dire comment opérer sur le système de fichiers hfs car je ne l'ai jamais utilisé. Si vous aviez ext4, vous pouvez utiliser fsck avec les options suivantes:

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

Ainsi, vous pouvez obtenir la liste de tous les blocs défectueux, puis vous pouvez connaître leur emplacement, ce qui peut aider à estimer si les blocs défectueux ont endommagé des fichiers normaux ou autre chose. J'utilisais debugfs. Ensuite, vous pouvez écrire des zéros dans ces secteurs via:

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

et supprimez les fichiers endommagés.

À partir du journal que vous avez fourni:

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

Vous savez quels fichiers sont endommagés.

La prochaine chose est la valeur du paramètre suivant:

193 Load_Cycle_Count        0x0032   037   037   000    Old_age   Always       -       635340

Cela tue votre disque ou l'a déjà tué. Mon disque, par exemple, a une durée de vie de 500k. J'ai découvert cela quand il a atteint 350k ... Finalement, j'ai désactivé cette fonctionnalité dans mon firmware de disque, et cela fonctionne jusqu'à présent.

La prochaine chose est le supperblock du système de fichiers. Vous auriez dû faire une copie de ce bloc pour ce genre de situation, et après avoir supprimé les mauvais blocs, vous pourriez restaurer le superbloc. Si le superbloc a été endommagé et que vous n'avez pas la sauvegarde ou que vous ne vous souvenez pas de l'emplacement des secteurs de sauvegarde, vous ne pourrez pas récupérer les données. Essayez d'utiliser:

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

Mais vous pouvez lire le système de fichiers (commande ls), donc ce n'est pas si mal, et je pense qu'après avoir supprimé les badblocks et supprimé certains fichiers, tout devrait bien se passer.


Merci! En règle générale, je n'ai aucun doute que le disque est endommagé (avant même que je puisse monter la partition HFS +, mais maintenant le noyau ne détecte même pas cela; divulgation complète: j'ai follement couru testdiskdessus pendant une nuit et les dommages est probablement devenue pire qu’elle ne l’était lorsque le propriétaire l’a simplement abandonnée). Alors maintenant, j'espère simplement ddrescuetout ce que jephotorec peux en tirer , puis tout ce qui peut être récupéré.
landroni

Quelques questions. "Load_Cycle_Count" Qu'est-ce que cela signifie et pourquoi tue-t-il le disque? Comment pouvez-vous le désactiver dans le firmware? "La prochaine chose est le supperblock du système de fichiers. Vous devriez avoir fait une copie de ce bloc [..]" J'aurais dû faire une copie de la chose entière dès que je l'ai eu !! Mais de toute façon, maintenant le superbloc est probablement frit, comme récemment lorsque j'ai connecté le disque, le noyau se plaignait d'un superbloc corrompu dmesg.
landroni

1
Lisez à ce sujet ici community.wd.com/t5/My-Book-Live/… - J'ai un disque WD et je peux utiliser idle3-tools - idle3-tools.sourceforge.net
Mikhail Morfikov

1
C'est à cause des trois valeurs 001 001 001- si VALUE = <THRESH, le disque va probablement échouer, donc vous obtenez cette information. Cela pourrait également ne rien signifier.
Mikhail Morfikov

1
@landroni - Je ne sais pas si le gel d'un disque est une bonne idée, mais si votre disque est mort, ou presque mort, et que vous ne pouvez pas simplement le faire fonctionner, vous ne pouvez pas faire plus de mal, donc si vous n'ont pas d'autres options, faites-le, mais je ne pense pas que cela aidera.
Mikhail Morfikov

-2

Défaillances d'entraînement mécanique

Pour la récupération de données à partir de blocs défectueux, vous pouvez utiliser l' utilitaire SpinRite à 89 $ pour récupérer des données. SpinRite ne dépend pas du système de fichiers.

Corruption du système de fichiers HFS +

Lorsqu'il y a des problèmes dans le système de fichiers HFS +, utilisez l' utilitaire DiskWarrior à 99,95 $ sur Mac OS X pour réparer les problèmes HFS +.

Comme vous avez déjà utilisé d'autres outils de réparation (fsck), vous devez utiliser DiskWarrior en mode " récupération ". Vous pouvez accéder à l'option "récupération" cachée en altappuyant et en maintenant la touche avant d'appuyer sur le bouton "Reconstruire" ("Reconstruire" devient "Reconstruire ..." tout en maintenant la touche Alt). Ajoutez maintenant une coche à "Récupérer" et lancez "Reconstruire".

Le «nettoyage» de DiskWarrior est optimisé pour récupérer des fichiers après qu'un autre utilitaire de réparation de disque a déjà été utilisé pour récupérer des fichiers. La corruption de l'OP peut être causée par des problèmes logiques ou physiques. DiskWarrior est spécialisé dans l'élimination des erreurs de répertoire «logiques», SpinRite est spécialisé dans la récupération de données causées par des problèmes de disque dur «physiques».


Qu'est-ce qui est différent du mode normal de récupération de DiskWarrior? Pourquoi ces outils sont-ils particulièrement bien adaptés pour résoudre la situation du PO?
un CVn le

1
@ MichaelKjörling DiskWarrior "scavenge" est optimisé pour récupérer des fichiers après qu'un autre utilitaire de réparation de disque a déjà été utilisé pour récupérer des fichiers. La corruption de l'OP peut être causée par des problèmes logiques ou physiques. DiskWarrior est spécialisé dans l'élimination des erreurs de répertoire «logiques», SpinRite est spécialisé dans la récupération de données causées par des problèmes de disque dur «physiques».
Pro Backup

Vous devez modifier votre message pour inclure des informations supplémentaires, puis éventuellement utiliser un @ -comment pour informer le commentateur d'origine. Les informations dans les commentaires ont seulement tendance à se perdre facilement dans le bruit.
un CVn le

1
Je dois recommander CONTRE SpinRite . Lorsque j'ai essayé de récupérer des données à partir d'un disque dur, cela n'a fait que perdre un temps précieux sur le disque mourant (> 24 heures pour moins de 1 Mo, jusqu'à ce que j'abandonne et essaie autre chose). Enfin, j'ai réussi à récupérer environ 80% des données en utilisant Linux (ddrescue et dd_rescue). J'ai cependant eu de bonnes expériences avec DiskWarrior, mais pas en mode récupération.
hmijail pleure les démissionnaires le

J'ai eu une situation très similaire à plusieurs reprises, en dépannant une nouvelle en ce moment; et je dois 2 @hmijail sur ce point : ddrescue, testdisket d' autres outils logiciels libres , à ce jour prouvé plus utile. jpgrecoveren stock Debian fonctionne à merveille. En outre, le contrepoint d'un outil OSX ennuyeux appelé assistant de récupération de fichiers Easeus fonctionne bien, mais PAS si le disque est foiré comme dans la question OP, ici.
mot de passe oubliéstackx
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.