Como desmarcar um cluster NTFS como ruim?

14

Como desmarcar clusters como inválidos no NTFS?

fundo

Eu corri por engano

>chkdsk /R

no meu SSD, onde

/ R : localiza setores defeituosos e recupera informações legíveis (implica / F)
/ F : corrige erros no disco

E agora eu tenho um cluster marcado como ruim na minha unidade. Eu preciso desmarcar esse cluster como ruim.

Nota : chkdsktem uma opção para reavaliar um cluster e retorná-lo para usar:

/ B : apenas NTFS: reavalia clusters incorretos no volume (implica / R)

Infelizmente, essa opção só desmarca o cluster se ele não estiver mais ruim. Eu preciso que o cluster seja desmarcado, independentemente.

Como desmarcar um cluster NTFS como inválido?

Por que você está fazendo isso?

Não importa por que eu e centenas de outras pessoas estamos fazendo a pergunta. Mas o problema é que há um setor ruim no meu disco. É hora de substituir a unidade por uma nova. A maneira de fazer isso é espelhar o SSD em outro SSD usando o espelhamento de software do Windows .

Infelizmente, um bug conhecido no espelhamento do Windows NTFS impede a conclusão do espelho, conforme documentado no KB325615 :

Não é possível criar espelho de software se o disco contiver blocos incorretos

O DMIO opera abaixo do sistema de arquivos e, se encontrar erros de E / S ao ler de um setor no disco de origem ou ao tentar gravar os dados no disco de destino, interrompe a operação de espelhamento.

A solução óbvia foi reduzir o volume do sistema operacional, para que o setor defeituoso tenha passado do final do volume. No Windows 7, quando você tenta reduzir um volume, ele automaticamente move os arquivos para fora do caminho.

insira a descrição da imagem aqui

Isto é uma coisa boa. Antigamente, se você queria reduzir um volume, era necessário usar uma ferramenta de desfragmentação que empurrava todos os arquivos em direção à frente da unidade; deixando espaço para folga no final.

Infelizmente há agora uma inabalável arquivo no caminho: $BadClus. A operação de desfragmentação do psiquiatra observa o arquivo imóvel no log de eventos:

Uma análise de redução de volume foi iniciada no volume OS (C :). Essa entrada do log de eventos detalha informações sobre o último arquivo imóvel que pode limitar o número máximo de bytes recuperáveis.

Detalhes do diagnóstico:

  • O último arquivo imóvel parece ser: \ $ BadClus: $ Bad: $ DATA
  • O último cluster do arquivo é: 0xdc1ded
  • Reduzir o potencial alvo (endereço LCN): 0xa91bd9
  • Os sinalizadores de arquivo NTFS são: -S - D
  • Fase de contração: <análise>

Então:

  • não consigo espelhar o volume até que os setores defeituosos sejam removidos
  • encolher o volume removerá os setores defeituosos
  • não consigo reduzir o volume até que o $BadClusarquivo esparso seja movido
  • não consigo me mexer $BadClusenquanto ocupa fisicamente aglomerados ruins
  • $BadClus ocupará fisicamente clusters ruins, enquanto o NTFS acha que o cluster é ruim

Como desmarcar um cluster como ruim?

Também para as pessoas que fantasmam drives

A solução para o meu problema também funcionaria no caso mais comum:

Alguém coloca uma unidade que contém setores defeituosos em uma nova unidade e, em seguida, a unidade boa ainda tem os clusters marcados como ruins, mesmo que sejam bons. Acontece que eles têm uma solução alternativa disponível para eles:

>chkdsk /B

Exceto que isso não funciona no meu caso. (E mesmo que funcionasse no meu caso, não é a pergunta que estou fazendo.)

Bônus Chatter

É claro que o SSD Kingson não mantém setores de reposição. Se isso acontecesse, poderia remapear de forma transparente o setor de reposição para mim, e eu não teria o NTFS tentando pensar demais.

SpinRite

Eu tentei SpinRite'ing a unidade SS. Ele se depara com o setor defeituoso, mas não consegue obter nenhum valor da unidade:

══════════════════╤═══════════════════════════╤═════════════════════════════════
cylinder : 7,183  │     data samples : 1,999  │  first uncertain bit : · · · · ·
  sector :    17  │   unique samples :     0  │   last uncertain bit : · · · · ·
    head :   187  │  discarded sples :     0  │   uncertain bit span : · · · · ·

O número de amostras de dados conta até 2.000, volta ao zero e continua.

insira a descrição da imagem aqui

Após cerca de 20 loops (ou seja, 40.000 amostras de dados), desisti.

Clonagem

Novamente; não vamos confundir a pergunta com o exemplo. A questão é como desmarcar clusters como inválidos no NTFS. Muito tempo depois de eu desistir e jogar fora o SSD, a questão ainda permanece. Não confunda meu problema com a pergunta. Isso não significa que eu possa tentar resolver meu problema:

O DriveImageXML chega ao setor defeituoso e aborta.

GParted falha ao carregar. Uma tela de inicialização gráfica é exibida e, em seguida, uma janela do console rola o texto, seguida pela tela preta.

O Clonezilla se recusa a clonar meu SSD:

Este disco contém partições GPT e MGR incompatíveis: / dev / sdb
Confunde o Clonezill e pode tornar a imagem salva inútil ou falhar ao clonar o disco.

Corrija o problema htis e reinicie o Clonezilla novamente.
Programa encerrado.

insira a descrição da imagem aqui

Como desmarcar um cluster como ruim no NTFS?

Ian Boyd
fonte
Deseja uma solução para Windows ou o Linux está bem?
Thomas Weller
2
@ThomasW. não me importo com uma ferramenta de inicialização automática; usando o SO que quiser. Claro que eu preferiria uma ferramenta GUI. eu me cansei de usar linhas de comando em 1990. comecei a usar CreateFilepara abrir o volume diretamente; mas percebi que teria que começar do zero, analisando todas as estruturas de dados não documentadas. eu abri o volume diretamente para edição no meu editor hexadecimal favorito, mas tinha o mesmo lado negativo, tendo que analisar manualmente as estruturas hexadecimais.
Ian Boyd
@ThomasW. por que perguntar se você não pode responder como corrigi-lo no linux? se tudo o que você quer dizer é que, se corrigi-lo a partir de um live CD do linux, tudo bem, então você não sabe como, mas ele deve adicionar uma tag linux.
barlop
Se você estiver usando o MBR para a partição do disco, o sgdisk -z / dev / sdb limpará a GPT e o clonezilla a copiará. backup-utility.com/articles/…
cybernard 10/10

Respostas:

7

Não responderei mais à pergunta do título. 1

Primeiro, observe que, se o setor for realmente ruim, desmarcá-lo não o tornará legível. Portanto, é provável que seu software de clonagem se engasgue ao lê-lo.

No NTFS, um cluster é marcado como ruim, atribuindo-o a um fluxo especial$BadClus:$Bad , um arquivo esparso.

O que você precisa é

  • edite sua lista de execução para remover os blocos alocados correspondentes
  • marque os agrupamentos correspondentes como livres em $Bitmap.

  • Para desmarcar todos os blocos defeituosos, existe ntfsfix -b -d( -b= limpar lista de blocos defeituosos, -d= limpar / não definir sinalizador "sujo") ( outro métodontfstruncate faz exatamente o mesmo 2 ).

    • Ele pode introduzir pequenas inconsistências em metadados (no meu caso, alguns índices, aparentemente, tornou-se indiferenciados), eu não sei por que, por isso ou correr chkdsk -fcom a mão ou omitir -dpara provocá-lo na inicialização do Windows if / no caso de você obter erros FS.
  • Para limpar um determinado bloco é muito mais difícil desde que eu não encontrou qualquer software existente que pode fazer isso fora da caixa 3 . Resolução de setores defeituosos do NTFS: O metarquivo $ BadClus - o código de Katy descreve o caminho - basicamente, ele está editando a lista de execução e o bitmap manualmente.


1 Somente porque lidar com setores defeituosos + NTFS + clonagem é um tópico muito amplo. Terei prazer em responder às que estão diretamente relacionadas ao assunto em questão.
2 verificou o código fonte de ntfsfix v2015.3.14.
3 para os mais insistentes, estes não podem fazê-lo: ntfscat(não pode ler setores ilegíveis), ntfscp(não pode escrever para compensar), ntfstruncate, ntfsfallocate, dd(não pode abrir $BadClus:$Badpara a escrita)

ivan_pozdeev
fonte
Isso deve ser selecionado como melhor resposta.
Hashim
1

Eu tinha um disco rígido que desenvolveu alguns clusters ruins. Substituí-lo por uma unidade boa conhecida. O processo de restauração restaurou os dados incorretos do cluster, bem como os outros dados. Este foi em um computador Windows 7 Enterprise.

Minha solução foi executar "chkdsk d: / b" (como foi sugerido anteriormente). O / b indica (apenas para NTFS) para verificar novamente os clusters incorretos marcados anteriormente. Pelo menos no meu caso (e eu suspeitaria de todas as versões compatíveis com / b), ele limpa a lista de clusters inválidos imediatamente antes de iniciar a verificação de leitura. Depois de ver a mensagem "Removendo clusters X do arquivo Bad Clusters", você poderá eliminar o processo chkdsk (pois ele está apenas lendo dados).

Nota: Existe a possibilidade de o chkdsk atualizar o arquivo de clusters inválidos no instante em que você interrompe o processo, caso encontre um setor inválido no início da unidade. Eu assumi o risco e ele redefiniu com êxito o arquivo de clusters ruins, sem a necessidade de baixar vários outros programas que exigem um chkdsk completo depois de qualquer maneira. YMMV.

CasaDeRobison
fonte
Isso realmente funcionou. Após o passo 2, você apenas fecha a cmdjanela. Em seguida, execute o chkdsk d: /fque dirá CHKDSK discovered free space marked as allocated in the volume bitmap.e depois Windows has made corrections to the file system..
Davor Josipovic
0

Primeiro, o melhor caminho a seguir é clonar a unidade. Em seguida, use chkdsk /Bna nova unidade de trabalho.

Agora, no que diz respeito a desmarcar um setor realmente ruim, é complicado. Você poderia usar:

  • SpinRite , ou
  • mhdd (ative o remapeamento)

Qualquer um dos produtos deve remapear o setor defeituoso e o CHKDSK / B deve desmarcá-lo.

Faça o download da ISO gparted ou partedmagic . Inicialize a partir dele e reduza a partição.

Isso vai funcionar porque o Windows não está funcionando assim este software diminuir a partição não importa o que. Então chkdsk /Bvai lidar com o resto.

Se tudo isso falhar, você estará agora em uma estrada feia de dor. Você precisa obter um editor de setor e editar manualmente o sistema de arquivos. Infelizmente, está além do escopo do meu conhecimento para NTFS. Para FAT ou FAT32, é super simples.

cybernard
fonte
Como um SSD, não há setores extras para remapear. É por isso que o SMART da unidade continua observando um Pending Sector Countde zero e um Reallocated Sector Countde zero.
Ian Boyd
Katy Coe tem um excelente blog que começa a se aprofundar nas entranhas do NTFS. Mas meus olhos ficaram vidrados quando tive que começar a calcular compensações, números de cluster lógicos, números de cluster virtual e o fato de que $ BadClus é um arquivo sobressalente que é realmente o tamanho de todo o volume. eu quase certamente destruiria minha unidade (funcionando).
Ian Boyd
2
Na verdade, um SSD possui muitos setores de reposição. De fato, um ssd de 120GB provavelmente possui até 8GB de setores sobressalentes. Por que sua unidade não remapeava automaticamente é desconhecida para mim. Use gparted e reduza a partição.
26613 cybernard
Pode muito bem ser que seja uma unidade Kingston antiga, agora descontinuada e sem suporte, de 64 GB. Ou talvez seja apenas um bug no firmware da unidade, onde eles esqueceram de implementar o remapeamento do setor.
Ian Boyd
Além disso, a clonagem de unidade falha quando eles encontram o setor defeituoso (pelo menos o DriveImageXML encontrou ).
Ian Boyd
0

Como você está tentando espelhar seu disco (e parece que você está usando o Windows 7), existe outra abordagem:

Use a ferramenta interna para criar um backup a ser restaurado em um bom disco. Vá para Painel de Controle, Sistema e Segurança, Backup. Lá, crie uma imagem do sistema e também um disco de reparo do sistema.

Depois disso, você pode substituir o disco defeituoso antigo por um bom e, em seguida, restaurar o sistema ao seu estado usando o disco de reparo do sistema e o backup feito.

João Paulo
fonte
0

o pacote gddrescue (gddrescue - ferramenta de recuperação de dados GNU) deve fazer o trabalho por você.

Pegue uma distro autônoma baseada em Debian (CD ou pendrive), instale o gddrescue com "sudo apt-get install gddrescue" e depois clone o SSd abrindo uma janela de terminal e emitindo:

ddrescue -f / dev / sda / dev / sdb ./ddrescue.log

(onde / dev / sda é a fonte e / dev / sdb é o SSD de destino)

O ddrescue tentará recuperar o bloco defeituoso e, se não for possível, ignorá-lo.

Quando terminar, o chkdsk / f / b deve concluir o trabalho.

visnotjl
fonte
0

Parece que seu objetivo é reduzir o tamanho da partição e que o Windows não a reduzirá por causa do arquivo $ BadClus, que existe devido a clusters incorretos.

Eu tenho uma solução alternativa para você, que deve reduzir a unidade sem precisar lidar diretamente com o arquivo $ BadClus. Use o Assistente de Partição para reduzir a partição. O Partition Wizard é fácil de usar, é gratuito para uso não comercial, pode ser executado dentro do Windows com uma GUI ou a partir de uma inicialização por CD ou USB que executa um pequeno Linux e fornece a mesma GUI. Este programa também pode recuperar partições apagadas e converter entre tabelas de partição MBR e GPT.

Eu tive problemas com o Windows, que não diminuiu a partição após um certo ponto, e tentarei o Assistente de Partição na mesma partição, sem problemas. Suponho que o Assistente de Partição esteja disposto a ignorar o arquivo $ BadClus. Eu uso este programa há mais de 8 anos e finalmente comprei a versão Pro, porque eles ganharam. Encontrei este programa como um substituto para o PQMagic que comprei em 1996, que era um fabuloso programa de particionamento do DOS para unidades menores.

Erik
fonte