Como reparar uma partição HFS + corrompida de um disco rígido danificado?


8

Eu tenho o disco do Mac OS X de um amigo que vem com uma HFS+partição. Devo recuperar os dados pessoais deste disco e ainda não tenho certeza se o sistema de arquivos está corrompido ou se o disco está morrendo).


Antecedentes : Os sintomas completos são os seguintes. A unidade é reconhecida pelo Linux e até é montada automaticamente (usando Xfceaqui):

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

O kernel relata o seguinte:

[ 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

Aqui está uma saída relevante 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

Quando abro a unidade Thunar, recebo a seguinte mensagem de erro: "Failed to open directory "Macintosh HD". Error when getting information for file '/media/Macintosh HD/.journal': Input/output error."(Posso acessar o ponto de montagem e alguns subdiretórios, se eu usar emelFM2.)

insira a descrição da imagem aqui

Se eu tentar lso ponto de montagem, recebo vários erros de 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

Por fim, eu já tentei instalar hfsprogse executar fsck.hfsplus, mas sem muita sorte:

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 

Pergunta : Nas mensagens de erro acima, o sistema de arquivos está corrompido ou a unidade está falhando? Como posso corrigir o sistema de arquivos corrompido? E se esse não é o problema, como posso recuperar os dados do usuário de um disco com falha parcial?


UPDATE1 :

Dada a entrada útil que obtive da opção 'smartctl -d' que devo usar neste disco rígido: 'scsi' ou 'ata'? , Agora consegui executar com êxito smartctlno disco rígido:

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.

Não sei como analisar essa saída, mas duas coisas surgem aos meus olhos:

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

Então quão ruim é isso? E como devo proceder?


UPDATE2 :

Seguindo as sugestões nos comentários, usei um Mac OS X para executar 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).

Então, quão ruins são essas mensagens de erro? A unidade está brindando?


UPDATE3 :

Joguei um pouco mais smartctle parece-me (mas confirme !!) que a unidade é definitivamente um brinde:

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

Eu poderia destacar:

  • 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

Eu suspeito que qualquer solução como testdiskouphotorec na própria unidade esteja praticamente fora de questão no momento. Portanto, minha única esperança de recuperar quaisquer dados seria obter um disco rígido maior e fazer uma cópia bit por bit da unidade com falha usando ddorddrescue , e depois brincar com photoreca imagem resultante. Quaisquer outras idéias muito bem-vindas!


UPDATE4 :

Como consultado em Recuperando dados de um disco rígido danificado: o "truque do congelador" , estou postando a saída smartctl -H /dev/yourdiske smartctl -A /dev/yourdisk:

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

Isso permite identificar o tipo de falha?


UPDATE5 :

Cerca de uma semana atrás, eu tolamente corri testdiskno disco por uma noite (após algumas fscktentativas nativas do Mac OS X ), e o dano provavelmente se tornou pior do que quando o proprietário simplesmente o deixou cair. No final da testdisksessão, eu estava claramente ouvindo um ruído de clique (" clique da morte "?), E a unidade não era capaz de realizar mais leituras (todas as leituras resultaram em erro). Inicialmente, presumi que isso estava acontecendo por causa do superaquecimento, mas agora acredito que o dano simplesmente se propagou e a unidade está agora em péssimo estado.

Quando tento executar smartctl short self-testna unidade, o teste Completed with electrical failuree a smartctlsaída são os mesmos de UPDATE3, incluindo o 240 Head_Flying_Hours 0x0001 001 001 001 Pre-fail Offline FAILING_NOW 3erro.

insira a descrição da imagem aqui

Também tentei uma ddrescuesessão, que terminou com um total geral de 0 bytesresgatados.

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                   

Em cada tentativa de leitura, o kernel estava reclamando 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

Então, tudo isso definitivamente aponta para danos ao hardware. Mas qual é o tipo exato de dano? (Em parte, eu gostaria de verificar se o "truque do freezer" é de alguma forma apropriado.)

Conforme sugerido em uma pergunta relacionada , verifiquei Como recuperar dados quando o disco rígido fica estourado e parece-me, dados os sintomas que notei, que é:

  • Sua unidade está girando e produzindo ruídos de clique ou
  • Suas unidades rodam e são detectadas pelo computador, mas paralisam quando você tenta acessá-lo

Portanto, considerando todas as informações adicionais postadas aqui, é possível identificar o tipo de falha que está ocorrendo no disco? E o "truque do freezer" seria apropriado nesse caso?

(Foi -me sugerido que "Quando as cabeças de gravação e leitura tocam a superfície do disco, elas são giradas e giradas, para que a leitura não seja mais possível", e isso soa como uma explicação realista, mas não tenho certeza de como para confirmar.)


1
Essas mensagens do kernel estão dizendo que você tem um setor defeituoso. Você pode usar smartctlpara verificar se é apenas um setor ruim ou poucos, ou se o disco está próximo do fim.
derobert

@derobert Agora eu consegui rodar smartctlno drive (veja UPDATE1 no OP). Alguma ideia?
landroni

Minha recomendação seria anexá-lo a um Mac e tentar reparar com o OS X fsckou o nativo diskutil.
bahamat

@bahamat Pelo menos no Debian, o hfsprogs upstream é ... Apple. Embora o pacote Debian esteja desatualizado. Encontrar a versão mais recente do upstream é, bem, desafiador ... Provavelmente é opensource.apple.com/source/hfs/hfs-226.1.1, mas que possui uma versão inferior, então quem sabe!
derobert

@derobert: Bem ... A versão do Debian é 332.25-11. De acordo com o changelog, o 332.25-1 era um novo lançamento upstream que correspondia ao Mac OS X 10.4 em 2009. Antes disso, a versão secundária era 332.23. Então parece que a versão do Debian está rastreando o Tiger. Se fosse eu , ficaria nervoso dirigindo o Tiger's fsckpara qualquer coisa moderna.
bahamat

Respostas:


7

Parece que encontrei esse tópico tarde demais, mas para futuros leitores desse tópico:

Ao fazer o resgate de dados, seu primeiro passo deve ser fazer uma imagem completa da unidade com dd ou algo semelhante (o cloneZilla é uma escolha popular).

Em outras palavras, obtenha uma impressão da unidade como está para não causar mais danos ao volume enquanto tenta resgatar os dados.


2
Sim, exatamente! Esse foi o meu erro inicial o tempo todo. Tudo o que as testdiskferramentas de verificação do FS etc. fizeram foi agravar os problemas de hardware. Provavelmente, é melhor clonar a imagem da unidade usando uma ferramenta como essa ddrescue, pois ela permite pular inteligentemente setores problemáticos (ao passo que dddeve falhar ao primeiro sinal de dano ao hardware).
landroni

1
Melhor ainda, use dd_rescue em vez de ddrescue. Ele espera e lida ativamente com execuções de setores danificados, pulando para zonas sãs para obter o máximo possível dos dados de fácil leitura antes de retornar para tentar novamente as zonas com falha lenta. Gênio e grátis.
hmijail lamenta os demitidos 17/07/2015

3

Com base no primeiro log inteligente, você provavelmente tem 124 setores defeituosos - esta 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

Você deve executar uma verificação completa para ter certeza do número real. Alguns arquivos estão danificados, com certeza. É por isso que você tem a Contagem de erros: 1210, sempre que um setor danificado é lido, você recebe um erro de +1. Você precisa gravar zeros nesses setores se quiser fazer o disco funcionar, porque os setores só podem ser realocados quando estão sendo gravados. Não sei dizer como operar no sistema de arquivos hfs porque nunca o usei. Se você tivesse o ext4, poderá usar o fsck com as seguintes opções:

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

Portanto, você pode obter a lista de todos os blocos defeituosos e saber a localização deles, o que pode ajudar a estimar se os blocos defeituosos danificaram os arquivos regulares ou algo mais. Eu estava usando debugfs. Em seguida, você pode escrever zeros nesses setores via:

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

e exclua os arquivos danificados.

No log que você forneceu:

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

Você sabe quais arquivos estão danificados.

A próxima coisa é o valor do seguinte parâmetro:

193 Load_Cycle_Count        0x0032   037   037   000    Old_age   Always       -       635340

Isso mata o seu disco ou já o matou. Meu disco, por exemplo, tem 500k de duração. Descobri isso quando chegou aos 350k ... Por fim, desativei esse recurso no firmware do meu disco e ele funciona até agora.

A próxima coisa é o supperblock do sistema de arquivos. Você deveria ter feito uma cópia desse bloco para esse tipo de situação e, após remover os badblocks, poderia restaurar o superbloco. Se o superbloco foi danificado e você não possui o backup ou não se lembra da localização dos setores de backup, não poderá recuperar dados. Tente usar:

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

Mas você pode ler o sistema de arquivos (comando ls), então não é tão ruim, e acho que depois de remover os badblocks e excluir alguns arquivos, tudo deve ficar bem.


Obrigado! Como observação geral, tenho poucas dúvidas de que a unidade esteja danificada (antes que eu pudesse montar a partição HFS +, mas agora o kernel não detecta nem isso; divulgação completa: eu tolamente corri testdisknela por uma noite e os danos provavelmente se tornou pior do que quando o proprietário simplesmente a abandonou). Então agora estou simplesmente esperando ddrescueo que puder com isso e o photorecque puder ser recuperado.
landroni

Algumas perguntas. "Load_Cycle_Count" O que significa e por que ele mata o disco? Como você pode desativá-lo no firmware? "A próxima coisa é o supperblock do sistema de arquivos. Você deveria ter feito uma cópia desse bloco [..]" Eu deveria ter feito uma cópia da coisa toda assim que consegui !! Mas de qualquer forma, agora o superbloco provavelmente está frito, já que quando eu conectei o disco, o kernel estava reclamando de um superbloqueio corrompido dmesg.
landroni

1
Leia sobre isso aqui community.wd.com/t5/My-Book-Live/… - Eu tenho disco WD e posso usar ferramentas idle3
Mikhail Morfikov

1
É por causa dos três valores 001 001 001- se VALUE = <THRESH, provavelmente o disco falhará, então você obtém essas informações. Também não poderia significar nada.
Mikhail Morfikov

1
@landroni - Não tenho certeza se congelar um disco é uma boa ideia, mas se seu disco está morto ou quase morto, e você não pode simplesmente fazê-lo funcionar, não pode causar mais danos, por isso, se você não tem outras opções, basta fazê-lo, mas acho que não vai ajudar.
Mikhail Morfikov

-2

Falhas no acionamento mecânico

Para a recuperação de dados de blocos defeituosos, você pode usar o utilitário SpinRite de US $ 89 para recuperar dados. SpinRite não depende do sistema de arquivos.

Danos no sistema de arquivos HFS +

Quando houver problemas no sistema de arquivos HFS +, use o utilitário DiskWarrior $ 99.95 no Mac OS X para reparar problemas de HFS +.

Como você já usou outras ferramentas de reparo (fsck), é necessário usar o DiskWarrior no modo " eliminar ". Você pode acessar a opção "eliminar" oculta pressionando e segurando o altbotão antes de pressionar o botão "Reconstruir" ("Reconstruir" muda para "Reconstruir ..." enquanto mantém pressionada a tecla Alt). Agora adicione uma marca de seleção em "Scavenge" e inicie "Rebuild".

A "eliminação" do DiskWarrior é otimizada para recuperar arquivos depois que outro utilitário de reparo de disco já foi usado para recuperar arquivos. A corrupção do OP pode ser causada por problemas lógicos ou físicos. O DiskWarrior é especialista em eliminar erros de diretório "lógicos", o SpinRite é especializado em recuperar dados causados ​​por problemas "físicos" no disco rígido.


O que é diferente do normal no modo "limpeza" do DiskWarrior? Por que essas ferramentas são particularmente adequadas para resolver a situação do OP?
um CVn

1
@ MichaelKjörling A "eliminação" do DiskWarrior é otimizada para recuperar arquivos depois que outro utilitário de reparo de disco já foi usado para recuperar arquivos. A corrupção do OP pode ser causada por problemas lógicos ou físicos. O DiskWarrior é especialista em eliminar erros de diretório "lógicos", o SpinRite é especializado em recuperar dados causados ​​por problemas "físicos" no disco rígido.
Pro Backup

Você deve editar sua postagem para incluir informações adicionais e, em seguida, usar um comentário @ para notificar o comentarista original. As informações nos comentários apenas tendem a se perder facilmente com o barulho.
um CVn

1
Eu tenho que recomendar CONTRA SpinRite . Quando tentei recuperar dados de um disco rígido, perdi apenas um tempo precioso no disco que estava morrendo (> 24 horas por menos de 1 MB, até desistir e tentar outra coisa). Finalmente, consegui recuperar cerca de 80% dos dados usando o Linux (ddrescue e dd_rescue). Tive boas experiências com o DiskWarrior, embora não no modo de eliminação.
hmijail lamenta os demitidos 17/07/2015

Já tive uma situação muito parecida algumas vezes, solucionando uma nova agora; e eu tenho que segundo @hmijail em que: ddrescue, testdiske outras ferramentas de software livre têm provado mais útil até agora. jpgrecoverem estoque O Debian funciona maravilhosamente. Além disso, contrarie uma ferramenta OSX irritante, chamada Easeus file recovery wizard, funciona bem, mas NÃO se o disco estiver danificado, como na questão dos OPs, aqui.
Forgetstackxpassword
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.