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 mount
poderá fsck
piorá-lo. (Mesmo no ro
modo! 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+found
e 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.
- Tente fazer a imagem dd durante a noite e reserve o disco
- use Testdisk no arquivo de imagemhttp://www.cgsecurity.org/wiki/TestDisk
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.