Como atualizo o estado magnético em discos com backups?


8

Eu tenho alguns discos grandes com material de backup / arquivamento. Eles são ext4 . Em relação àqueles que serão armazenados por alguns anos sem ler o disco inteiro novamente, estive pensando em uma maneira de atualizar o estado magnético dos discos. O prazo de validade das unidades parece ser uma questão de debate em todos os lugares em que estive procurando uma resposta, mas depois de alguns anos (digamos 5 ou mais) de armazenamento, seria sensato atualizar os dados de alguma forma (? )

Eu já vi isso sugerido:

dd if=/dev/sda of=/dev/sda

É seguro? É útil?

O que estou procurando fazer é outra coisa que não a fsckou a dd if=/dev/sda of=/dev/null, que provavelmente descobrirá as falhas magnéticas existentes no disco.

O que eu quero fazer é atualizar os dados magnéticos antes que as cargas magnéticas no disco abaixem abaixo de um nível legível. Como posso fazer isso?

Respostas:


8

Geralmente, você não pode realmente atualizar o disco inteiro sem ler / gravar tudo. fscké improvável que você forneça o que você precisa - ele funciona com o sistema de arquivos e não com o dispositivo subjacente; portanto, apenas verifica os metadados do sistema de arquivos (inodes e outras estruturas do sistema de arquivos).

badblocks -npode ser uma opção para dd if=X of=X. Em qualquer caso, você provavelmente desejará usar blocos grandes para acelerar as coisas (por ddalgo como bs=16M, pois badblocksisso seria lido -b 16777216ou -b $((1<<24))com conchas razoáveis). Provavelmente você também quiser usar conv=fsynccom dd.

Quanto à segurança do ddmesmo dispositivo de entrada e saída - ele lê o bloco da entrada e grava na saída, por isso deve ser seguro (eu re-criptografei uma partição criptografada como esta em várias ocasiões, criando dispositivos de loop com o mesmo dispositivo subjacente e senhas diferentes e depois ddde um para o outro) - pelo menos para alguns tipos de mídia física: por exemplo, com unidades shingled , definitivamente não é óbvio para mim, que é 100% à prova de falhas.


Obrigado pela sua resposta! Então conv=fsync, "grava fisicamente os dados do arquivo de saída e os metadados antes de terminar", o que isso significa? É mais seguro ou por que eu o usaria?
PetaspeedBeaver

1
Eu esperaria que ele garantisse que todos os caches do kernel fossem liberados para a mídia antes de sair. Como você está reescrevendo os mesmos dados, na verdade não deve importar muito. Apenas garante que, quando ddterminar, você pode desconectar (bem, pode haver um cache no disco rígido, mas isso está fora da jurisdição do software).
Peterph

Portanto, em resumo, o ddcomando completo deve ser algo como dd if=/dev/sda of=/dev/sda bs=16M conv=fsyncplus talvez também status=progresspara mostrar o progresso. Isso levará um tempo, dependendo do tamanho e da velocidade da unidade. Presumo que cancelar este meio do processo com, por exemplo, Ctrl + C seja seguro?
Martin Spacek 23/11

1
Sim, interromper todo o processo de qualquer forma deve, em teoria, ser seguro. Pelo menos para uma unidade magnética giratória sem shingled - essa é uma área em que o princípio físico exato e a tecnologia usados ​​são importantes.
Peterph

1

Não conheço uma maneira de fazer isso com ferramentas nativas do a * nix, mas algo que eu faço há alguns anos é executar um produto chamado Spinrite do GRC.com .

Ele tem alguns modos, um deles é o de atualizar a superfície / dados, executando todos os setores, invertendo o estado de cada bit algumas vezes e, em seguida, colocando-o de volta ao estado em que estava.

Eu corro assim algumas vezes por ano em minhas unidades, e não que eu queira dizer isso em voz alta, mas sinto que tenho muito poucos problemas com meus discos rígidos, e existem alguns.

Custa em torno de US $ 80-90 IIRC, mas esse custo é relativo, dependendo do que você acha que seus dados valem para você.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.