Usamos HDDs ruins antigos

Desde meus dias de estudante, eu tinha vários discos rígidos. De tempos em tempos eu os atualizava - vendia os antigos, mas colocava-os mais espaçosos. Então a demanda por volume era bastante grande, tudo tinha que ser armazenado com seus próprios parafusos. Mas chegou a hora da Internet e as LANs desapareceram sozinhas. Por algum tempo, os discos foram usados ​​como limpador de arquivos para torrents. Mas a necessidade de uma atualização devido à falta de volume desapareceu gradualmente. No final, acabei com um monte de discos rígidos bem antigos que começaram a morrer gradualmente. Ainda não são cadáveres, mas já se cobriram de blocos ruins e se arrastaram em direção ao túmulo. Naturalmente, aos primeiros sinais de problemas, tudo mais ou menos valioso foi transferido para um novo parafuso, e o antigo ...

Então surgiu a questão, mas o que fazer com os antigos? De alguma forma, é uma pena jogar fora um parafuso de 4 TB quando há apenas uma dúzia de defeitos. Além disso, na maioria dos casos, seu número não cresce rapidamente, e esse parafuso de 4 TB pode ser usado para qualquer absurdo por algum tempo. A questão surgiu, mas como garantir que os dados não caiam sobre o mal. A maioria dos utilitários está tentando recuperar esses setores. Mas com esse volume, surge a pergunta - por quê? Esse processo é muito longo e ± gigabytes em um disco de 4 TB não desempenham um papel especial. Especialmente quando vários desses mortos-vivos se acumularam. Um pouco do google, uma maneira de marcar rapidamente os problemas deparou-se com vários ramos em fóruns onde as pessoas procuravam algo semelhante. Mas não encontrei uma solução normal.

Se não houver solução, será. Depois de pensar um pouco, decidi fazer o caminho mais fácil - escrever um utilitário de console que conecte um parafuso aos arquivos e depois verifique esses arquivos para leitura. Leia o arquivo? Bem, o setor no arquivo é inteiro, o arquivo é excluído. Não é legível? Então, encontramos o bloco defeituoso, deixamos o arquivo com esse problema para que nada mais seja gravado nele.

Das desvantagens dessa abordagem - ela não verifica o espaço nos arquivos existentes, apenas o espaço livre em disco. Dos benefícios - rapidamente e pode ser feito em "porções".

No total, existem 2 modos, completo e modo de limpeza.

O modo completo obstrui o disco com os arquivos, depois eles são verificados e excluídos. Para fazer isso, especifique a unidade e o tamanho do bloco / arquivo desejado.

BadBlocksPlaceholder [disk] [file_size_kb] BadBlocksPlaceholder e:\ 4096 

Os arquivos são criados na pasta BadBlockPlaceholders \ yyyymmdd

O segundo modo foi projetado para continuar verificando / limpando. Entupir arquivos de 4 TB e verificá-los para leitura também não é um processo instantâneo e, às vezes, é necessário dividi-lo em alguns dias. Nesse modo, você precisa especificar a pasta com os arquivos de espaço reservado criados no primeiro estágio.

  BadBlocksPlaceholder clean e:\BadBlockPlaceholders\20190110 

Naturalmente, após a limpeza, deixe os suportes BadBlockPlace no parafuso. Espero que alguém venha a calhar. Somente o script de happy-day foi testado, então não se assuste e não chute muito. Escrito em .net core / C #.

As fontes estão no github .

Source: https://habr.com/ru/post/pt443612/


All Articles