É possível calcular onde está, fisicamente, um bloco defeituoso localizado em um disco rígido?

6

Eu dd_rescue tinha um disco rígido e sei onde estão os blocos ruins. Eu ainda tenho a unidade comigo, para que eu possa obter qualquer informação necessária do SMART ou fdisk .

Eu gostaria de saber se é possível ver, fisicamente, onde esses blocos ruins estão localizados. Já ouvi falar de setores, trilhas, cilindros (pelo menos em discos antigos), mas não sei exatamente como um disco é organizado ou as matemáticas envolvidas no mapeamento de um bloco para um setor físico. Tenho certeza de que este será um bom lugar para começar, e vou procurá-lo o mais rápido possível, mas como essa é uma situação que tenho agora, estou fazendo a pergunta com antecedência para que qualquer pessoa possa me ajude mais cedo.

Idealmente, eu teria a imagem (literal) de um disco circular, e eu seria capaz de identificar onde, no disco, é, digamos, o bloco # 1000.

É factível? Provavelmente não em discos com técnicas de nivelamento de desgaste, mas pelo menos em um disco rígido de desktop, como um Western Digital Caviar Green, que é o que eu estou olhando, com mais de 40k blocos ruins.

É uma questão acadêmica. Este disco obviamente não será mais confiável, mas eu gostaria de poder ver se existe um padrão físico.

    
por Valmiky Arquissandas 09.10.2014 / 02:27

1 resposta

9

Isso realmente não é viável com discos modernos.

Nos velhos tempos, os discos eram essencialmente dispositivos burros (simplificando, mas fiquem comigo). O sistema solicitaria dados de um Cilindro específico (fisicamente, um anel no disco), Cabeça (2 cabeças por prato) e Setor (cada anel tinha setor numerado de 1 a qualquer coisa). O controlador disse ao disco para mover para tal e tal localização de CHS e ler ou gravar os dados. Você sabia que o cilindro 0 estava perto da borda do disco e o cilindro mais alto estava na raiz. Discos realmente antigos tinham uma marca física onde o setor 1 estava localizado em cada cilindro, então você poderia abrir uma unidade e quase ver os locais dos dados.

Os discos de hoje têm formatações permanentes que incluem informações de endereço, endereços físicos reais e não os lógicos apresentados ao controlador. Quando um disco é solicitado a mover a cabeça para o endereço de bloco grande (LBA) 0, que é mapeado para um setor físico (provavelmente o primeiro setor real, ou próximo a ele, a menos que tenha sido remapeado). Mas o disco prevê onde esse setor será baseado no algoritmo de suposição. Ele então espera que o próximo setor voe sob a cabeça, lendo o endereço - se ele errou o ajuste, se apenas adivinhar, então ele lê / escreve o setor. Esse processo de adivinhação é necessário porque o disco se expande fisicamente à medida que se aquece, fazendo com que o setor fique em um lugar diferente quando o disco está quente ou frio. Além disso, não há um número consistente de setores em cada cilindro. Os discos CHS mais antigos tinham setores de tamanho fisicamente diferentes devido ao sistema de endereçamento. Os discos modernos têm setores de tamanho consistentes porque são numerados de 0 a qualquer coisa sequencialmente.

Para compor sua pergunta, como um disco detecta setores que podem ou realmente têm problemas, ele os remapeia silenciosamente (o SMART mostra, mas não é um erro para o sistema operacional host até ficar ilegível - ou discos SCSI podem ser avisados para notificar sistema operacional host). Assim, os LBAs lógicos que você vê podem não corresponder aos endereços físicos internos da unidade.

    
por 09.10.2014 / 03:22