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 : chkdsk
tem 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.
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
$BadClus
arquivo esparso seja movido - não consigo me mexer
$BadClus
enquanto 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.
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.
Como desmarcar um cluster como ruim no NTFS?
CreateFile
para 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.Respostas:
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 é
$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 ).chkdsk -f
com a mão ou omitir-d
para 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:$Bad
para a escrita)fonte
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.
fonte
cmd
janela. Em seguida, execute ochkdsk d: /f
que diráCHKDSK discovered free space marked as allocated in the volume bitmap.
e depoisWindows has made corrections to the file system.
.Primeiro, o melhor caminho a seguir é clonar a unidade. Em seguida, use
chkdsk /B
na nova unidade de trabalho.Agora, no que diz respeito a desmarcar um setor realmente ruim, é complicado. Você poderia usar:
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 /B
vai 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.
fonte
Pending Sector Count
de zero e umReallocated Sector Count
de zero.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.
fonte
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.
fonte
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.
fonte