Salvar arquivos do sistema de arquivos ext3 com erros físicos

Salvar arquivos do sistema de arquivos ext3 com erros físicos

Eu tenho um disco de um laptop Linux com falha com arquivos que o infeliz proprietário gostaria de ter de volta, se possível (sem soluções de backup, por favor). Eu não tive nada a ver com isso antes. O disco é reconhecido pelo OS X e pelo Ubuntu 11.10:

root@ubuntu1110:~# fdisk -l /dev/sdc

Disk /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x80d549b4

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *          63   953602334   476801136   83  Linux
/dev/sdc2       953602335   976768064    11582865    5  Extended
/dev/sdc5       953602398   976768064    11582833+  82  Linux swap / Solaris

Isso parece consistente com uma instalação padrão de uma distribuição Linux com uma partição swap.

Infelizmente, algumas mensagens bastante desagradáveis ​​aparecem no dmesg, depois que o Ubuntu diz que não pode montar a partição sdc1:

[  181.228092] sd 6:0:0:0: [sdc] 976773168 512-byte logical blocks: (500 GB/465 GiB)
[  181.232176] sd 6:0:0:0: [sdc] Write Protect is off
[  181.232181] sd 6:0:0:0: [sdc] Mode Sense: 21 00 00 00
[  181.236359] sd 6:0:0:0: [sdc] No Caching mode page present
[  181.236364] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[  181.246696] sd 6:0:0:0: [sdc] No Caching mode page present
[  181.246707] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[  182.835915]  sdc: sdc1 sdc2 < sdc5 >
[  182.854199] sd 6:0:0:0: [sdc] No Caching mode page present
[  182.854204] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[  182.854208] sd 6:0:0:0: [sdc] Attached SCSI disk
[  218.250174] sd 6:0:0:0: [sdc] Unhandled sense code
[  218.250179] sd 6:0:0:0: [sdc]  Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
[  218.250182] sd 6:0:0:0: [sdc]  Sense Key : Hardware Error [current] 
[  218.250187] Info fld=0x0
[  218.250188] sd 6:0:0:0: [sdc]  Add. Sense: No additional sense information
[  218.250193] sd 6:0:0:0: [sdc] CDB: Read(10): 28 00 00 00 01 08 00 00 08 00
[  218.250200] end_request: I/O error, dev sdc, sector 264
[  218.250206] Buffer I/O error on device sdc, logical block 33
[  255.398994] sd 6:0:0:0: [sdc] Unhandled sense code
[  255.399029] sd 6:0:0:0: [sdc]  Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
[  255.399032] sd 6:0:0:0: [sdc]  Sense Key : Hardware Error [current] 
[  255.399037] Info fld=0x0
[  255.399038] sd 6:0:0:0: [sdc]  Add. Sense: No additional sense information
[  255.399053] sd 6:0:0:0: [sdc] CDB: Read(10): 28 00 00 00 01 08 00 00 08 00
[  255.399061] end_request: I/O error, dev sdc, sector 264
[  255.399066] Buffer I/O error on device sdc, logical block 33
[  281.340599] sd 6:0:0:0: [sdc] Unhandled sense code
[  281.340609] sd 6:0:0:0: [sdc]  Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
[  281.340618] sd 6:0:0:0: [sdc]  Sense Key : Hardware Error [current] 
[  281.340653] Info fld=0x0
[  281.340655] sd 6:0:0:0: [sdc]  Add. Sense: No additional sense information
[  281.340659] sd 6:0:0:0: [sdc] CDB: Read(10): 28 00 00 00 00 67 00 00 08 00
[  281.340667] end_request: I/O error, dev sdc, sector 103
[  281.340739] EXT3-fs (sdc1): error: can't read group descriptor 4

Minha teoria atual é que o disco rígido ficou sem blocos sobressalentes, então agora um bloco realmente defeituoso foi introduzido e está na área usada ao montar a partição. Isto é confirmado por dd:

root@ubuntu1110:~# dd if=/dev/sdc1 of=/dev/null bs=10240 conv=noerror
dd: reading `/dev/sdc1': Input/output error
2+0 records in
2+0 records out
20480 bytes (20 kB) copied, 44.7084 s, 0.5 kB/s
dd: reading `/dev/sdc1': Input/output error
9+1 records in
9+1 records out
96256 bytes (96 kB) copied, 162.933 s, 0.6 kB/s
dd: reading `/dev/sdc1': Input/output error
9+1 records in
9+1 records out
96256 bytes (96 kB) copied, 180.083 s, 0.5 kB/s

Bloqueios ruins no início e taxa de transmissão muito lenta ainda mais tarde no processo (não mostrado)

Meu problema agora é como abordar a partir daqui. Eu preciso de algo que possa ler um sistema de arquivos ext2/ext3 quebrado para que possamos copiar os arquivos que ainda estão lá fora do disco, e eu não fiz muita administração do sistema Linux nos últimos 15 anos, então não sei os termos corretos para pesquisar .

Provavelmente eu poderia copiar uma imagem de disco durante a noite, mas a informação "este bloco está ruim" será perdida.

Que tipo de programa seria útil nesta situação?

Responder1

Primeira regra de recuperação de disco:Pare de usar o disco. Se houver problemas de hardware (como queda de cabeça), qualquer uso corre o risco de causar mais danos; se o sistema de arquivos estiver corrompido, algum mountpoderá fsckpiorá-lo. (Mesmo no romodo! Observe quemount -t ext3 -o ro vaitente reproduzir o diário e gravar no disco!)

Usardd_rescueouddrescuepara copiar o máximo possível da imagem do disco para outro sistema, guarde o disco e faça cópias da imagem. Execute todas as tentativas de recuperação de uma das cópias.

Agora, dei algumas dicas para recuperação de dados externosaqui. Resumidamente,

  • O layout da sua partição parece ainda válido. Se não fosse, você poderia usarTestDiskoupartepara tentar a recuperação da tabela de partição.
  • e2fsckpode ser capaz de colocar o sistema de arquivos de volta em um estado montável. Ele colocará inodes pendentes /lost+founde reportará erros.
  • ext4magictenta recuperar dados de metadados registrados em diário. Se os arquivos podem ser recuperados do diário depende da sorte e do acaso, mas é possível que haja coisas lá.
  • O kit de detetivepode analisar e gerar a maioria das estruturas do sistema de arquivos. Se você sabe bastante sobre o layout interno do sistema de arquivos e tem um editor hexadecimal à mão (para fazer coisas como "o superbloco está corrompido e o superbloco de backup está desatualizado, mas posso coletar dados suficientes para reconstruí-lo sozinho"), IMO este é a ferramenta absolutamente mais útil para recuperar a maioria dos dados.
  • FotoRectentará encontrar sequências de bytes que se pareçam com arquivos. Ele está apenas adivinhando o início/fim do arquivo, não saberá nada sobre a estrutura do sistema de arquivos, como diretórios e nomes de arquivos, e não encontrará arquivos fragmentados.

Responder2

Supondo que você tenha passado por todos os prós e contras habituais dos serviços profissionais de recuperação de dados, você pesou o custo dos dados perdidos contra o risco de fazer isso sozinho... o usuário decidiu que os dados não valiam US$ 000, mas issoévale horas e horas do seu tempo...

Aqui está o que eu faria.

Se eu obtive 0,5kB/s consistentemente no dd, provavelmente não vale a pena tentar fazer isso.

Vocêpoderiaexecute Testdisk no disco. Istopodertrabalhar. Se o custo/risco não ditar outras opções, então... a decisão é sua. Pode funcionar.

Em geral, falando sério, esses problemas são um campo minado político. O usuário fica com vergonha de pedir a seus colegas de trabalho que reenviem seus arquivos ou não quer enfrentar seu gerenciamento e admitir que não executou backups regulares e agora precisa gastar milhares na recuperação de dados. Eles estão esperando que talvez você possa consertar isso para eles e fazer com que todos os seus problemas desapareçam... e se a unidade se autodestruir no processo. ELES VÃO JOGAR VOCÊ DEBAIXO DO ÔNIBUS para salvar a própria pele.

informação relacionada