Como reparar um HD de 500GB mostrando-se como apenas 10MB?

0

Eu tenho um HD USB de 500 GB.

Eu tenho andado por aí com o dd cmd - apagando dados do MBR, copiando meu HD interno do Windows, elimitando partições, etc.

fdisk -l retorna

Disk /dev/sdc: 10MiB, 10485760 bytes, 20480 sectors
Units: sectors of 1 * 512 bytes = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk Identifier: 8xb77d52b7

Device    Boot  Start   End         Blocks      Id  System
...    
/dev/sdc1 *     2048    718847      358400      7   HPFS/NTFS/exFAT
/dev/sdc2       718848  81922047    40601600    7   HPFS/NTFS/exFAT

lsblk retorna

NAME   MAJ:MIN RM   SIZE   RO TYPE
sda     0:0     0  465.9G  0  disk 
>^sda1  0:1     0  350M    0  part
>^sda2  0:2     0  38.7G   0  part
sdc     8:32    0  465.8G  0  disk
loop0   7:0     0  275.1M  0  loop /livemnt/squashfs

lsblk mostra 465.8G enquanto fdisk -l mostra 10MiB

Como o HD é, eu não posso fazer muito com isso ... mesmo os cmds, como dd if=/dev/sda of=/dev/sdc bs=4096 , permitirão somente até 10 MB de dados da if= source para a of= target ...

cat /dev/sda > /dev/sdc retorna

cat: write error: no space left on device

Eu tenho trabalhado nisso por 4 horas com ferramentas como parted, fdisk / dev / sdc, gdisk, isso é realmente tão difícil?

Deve haver uma maneira de simplesmente retornar o HD ao seu estado de 500 GB ...

Para confirmar que / dev / sdc é o HD externo, eu desconectei / reconectei o USB HD e executei o seguinte

dmesg | tail retorna

[sdc] Attached SCSI disk
    
por Jimbo'sGun's 15.07.2016 / 22:18

1 resposta

0

O MBR (também conhecido como "tipo Disklabel: dos") não deve mencionar o tamanho do disco diretamente (nem o número de cilindros / setores / cabeçotes).

link

O limite do kernel também não deve ser gravado no dispositivo de bloco, com base em um MBR corrompido nesse dispositivo. Então, o kernel ou hardware estava confuso. Preocupante assim:).

Em suposição, no space left on device é gerado diretamente pelo kernel. Se o dispositivo retornar um erro ao kernel e reclamar sobre o acesso além do final (acontecendo porque o kernel achou que não estava além do fim), eu suspeito que o kernel retornaria um erro genérico de E / S. E eu ficaria surpreso se esse erro de dispositivo específico não fosse mostrado no log do kernel ( dmesg ).

O mais estranho é que, enquanto lsblk e fdisk usam abordagens ligeiramente diferentes, o AFAICT está lendo um valor que é armazenado em cache no kernel. Se eles consistentemente obterem valores diferentes, isso também soa como se fosse o buggy que age no kernel. É possível fdisk -l solicitar uma nova verificação antes de ler o valor. No entanto, parece que você executou lsblk depois de fdisk -l , então essa diferença não deveria importar.

Eu manteria uma suspeita ligeira deste sistema. ("Estou mantendo backups independentes de quaisquer dados valiosos, como seria uma boa prática?", Suspeito).

    
por 16.07.2016 / 20:48