Crie raid de software espelhado com blocos ruins hdd. Como verificar a integridade dos dados?

2

Há um erro no log de eventos do sistema como este: "O dispositivo \ Device \ Harddisk1 \ DR1 tem um bloco defeituoso."

Por causa do acima eu criei Raid 1 neste disco e outro. Estou usando volumes RAID de software do Windows Server 2008 R2.

O volume no Gerenciador de discos está marcado como "Redundância com falha" e "Em risco". Eu poderia mandar "Reativar disco" e ele começa a sincronizar novamente, mas depois de um tempo ele para e retorna ao estado anterior. Ele pára a nova sincronização no bloco defeituoso no disco antigo e cria o mesmo erro no log de eventos do sistema.

O status do disco antigo é Erros; o novo status do disco é Online.

Como posso verificar se há uma cópia exata do disco antigo em um novo? É a máquina do servidor, então eu preferiria mantê-lo funcionando durante esta verificação.

Eu só quero me livrar desse disco defeituoso e mantê-lo como está em um novo disco. Eu não me importo com setores defeituosos como eu tenho backups de dados. Eu só não quero reinstalar tudo.

    
por rumburak 26.10.2012 / 06:43

3 respostas

5

Primeiro de tudo:

  1. Criar um volume RAID 1 após o fato não é uma maneira útil de lidar com um erro de disco.

  2. Como a criação do espelho RAID 1 falha no ponto em que o bloco defeituoso é atingido, você pode seguramente assumir que você não tem uma cópia completa do disco original com o bloco ruim. Não há necessidade de verificar essa suposição.

  3. Depois de desmontar o Disco 1, executando chkdsk /r nas unidades C: e G: deve marcar os setores defeituosos, mover quaisquer dados legíveis para outras áreas da unidade e impedir futuras ler erros referentes aos mesmos setores defeituosos. Isso não impedirá uma deterioração adicional do disco (potencialmente em potencial) com setores defeituosos.

Se chkdsk /r não corrigir o problema, aqui está um método para mover todos os dados recuperáveis para um novo disco, evitando uma falha devido aos blocos defeituosos:

  1. Se ainda não o fez, verifique se você tem um backup atual e completo.
  2. No Gerenciamento de Disco do Windows, desmonte e reformate o Disco 1.
  3. Encerre o computador corretamente.
  4. Inicialize no Linux usando um CD ao vivo ou pendrive ao vivo, por exemplo PartedMagic. Até mesmo um disco de instalação do Ubuntu funcionará.
  5. Monte os dois discos. Descobrir qual volume físico é o novo disco e qual é o disco antigo. (Observar a saída do comando mount , executado sem nenhum parâmetro, pode ajudar.)
  6. Copie do disco rígido antigo para o novo disco rígido usando o comando dd . Não se esqueça de especificar as opções noerror e sync para que os blocos defeituosos sejam ignorados. Seu conteúdo (que já está perdido) será substituído por zeros na nova unidade, portanto, todos os arquivos que ocupam os blocos defeituosos serão corrompidos. No entanto, esses arquivos já estão ilegíveis, portanto, nenhum dano adicional será causado:

    dd if=/dev/<Disk0> of=/dev/<Disk1> bs=512 conv=noerror,sync

Substitua os identificadores reais do dispositivo (por exemplo, sd0 , sd1 , etc.) no lugar de <Disk0> e <Disk1> acima. Não copie acidentalmente do novo disco para o disco antigo, pois isso seria catastrófico. Além disso, esteja avisado que esta operação será executada lentamente (isto é, muito mais lenta que as velocidades sequenciais de leitura / gravação dos discos) devido ao pequeno tamanho do bloco. No entanto, não acho que funcione usar noerror e sync juntos (para ignorar setores defeituosos e preenchê-los com zeros na nova unidade, sem perder nenhum dado recuperável), a menos que dd tem seu tamanho de bloco definido para o tamanho real de um setor de disco.

    
por 04.11.2012 / 00:58
2

Conceitualmente, a criação do espelho para suceder todos os dados do volume de origem deve ser legível para que o disco de destino contenha uma cópia exata da origem.

Todos os drives SATA modernos possuem um machinary interno para remapear automaticamente os blocos defeituosos para um local alternativo. As unidades podem fazer esse remapeamento automaticamente sob certas condições, como em uma falha de gravação em um determinado local. No entanto, as unidades não podem remapear em uma falha de leitura subseqüente, pois o conteúdo do disco não pode ser lido para remapear os dados. Assim, deixar o erro ser é o comportamento menos destrutivo possível para a unidade de disco.

Com os atuais drives multi-TB gigantes, isso acontece até mesmo em um disco perfeitamente saudável. Só porque alguns blocos não são legíveis, ele não segue automaticamente o disco que está ruim ou precisa ser substituído.

Os comandos chkdsk para detectar e reparar blocos danificados são insignificantes quando você configura um espelho no Windows e na maioria dos outros sistemas operacionais. O Chkdsk não corrigirá esses problemas. O motivo é que o chkdsk funciona no nível do sistema de arquivos e armazena os blocos defeituosos na estrutura do sistema de arquivos. O RAID funciona no nível do disco abaixo do sistema de arquivos e, portanto, é totalmente alheio à existência do NTFS e da lista de bloqueios inválidos do NTFS.

A maneira de corrigir erros de leitura em discos com remapeamento interno é simplesmente escrever em blocos que não podem ser lidos. Se a área estiver com defeito, o disco remapeará a área de forma transparente e as leituras subsequentes a ela serão bem-sucedidas. Esse é o caminho mais rápido e com menos esforço para corrigir um erro de leitura, para que o disco possa ser sincronizado, mas talvez não seja o mais seguro, já que o ato de escrever sela toda a esperança de recuperar os dados ilegíveis. Além disso, se aplicável, gravar em um disco que você possa suspeitar de estar com defeito não é uma política vencedora.

Infelizmente, eu não sei da existência de um utilitário que leia e sobrescreva blocos inválidos se eles não puderem ser lidos depois que um número razoável de tentativas de leitura tiver expirado. Anteriormente, eu tinha que usar o 'dd' para fazer isso manualmente, procurando locais ilegíveis e escrevendo sobre eles.

Uma maneira muito mais segura é fazer uma cópia do disco usando uma ferramenta como ddrescue (Boot com g4l (Ghost4Linux) iso image disponível no sourceforge) dd rescuse inicia copiando o máximo de dados que puder e finalmente tenta novamente os blocos com erros de leitura até que todas as novas tentativas tenham sido esgotadas. Se você suspeitar que a unidade pode estar falhando, essa é uma abordagem muito mais segura.

    
por 12.01.2013 / 19:12
0

Atualização: não a resposta correta de acordo com a Microsoft .

Você pode executar uma verificação do sistema de arquivos em busca de blocos defeituosos, que informarão se há algum dado ilegível nos discos. Clique com o botão direito em cada disco (C: e G :), selecione Ferramentas, Verificação de erros. E certifique-se de selecionar "Procurar e tentar recuperar setores defeituosos".

Se houver algum dado ilegível no Disco 0, você saberá como o Windows terminará marcando o Disco 0 como ruim também.

Para os usuários da linha de comando:

chkdsk /R G:
chkdsk /R C:

Não tenho certeza do que fazer com a partição de inicialização de 100 MB, mas minha aposta é que você pode verificá-la também (ela diz que é NTFS).

    
por 31.10.2012 / 04:29