Limpando um disco em partes

2

Preciso limpar um disco rígido antes de entregá-lo, mas quero a capacidade de fazer isso em partes para que eu possa parar e retomar em vários pontos no meio. Por exemplo, se demorar 24 horas para limpar o disco, mas eu só tenho blocos de 6-8 horas por noite disponível, gostaria de ligar o disco rígido USB no meu laptop para limpar durante a noite, desligue e tire o meu laptop em de manhã, depois retome a próxima noite até que esteja completamente pronto.

Estou usando dd de um terminal do Linux, por exemplo,

$ nohup dd if=/dev/zero of=/dev/sdX bs=1M &

Originalmente, pensei em simplesmente monitorar seu progresso com kill -USR1 ${ddpid} , acompanhando-o e depois retomando de onde parei após as interrupções. Eu não gostava imediatamente disso, pois estraguei as contas na primeira tentativa e perdi tempo re-limpando uma área já limpa.

Agora estou pensando em particionar a unidade com antecedência e depois limpar cada partição, uma de cada vez ou um par de cada vez. Como é um disco de 4 TB, não consegui ultrapassar o limite de 2 TB usando fdisk , então usei gdisk para criar novas partições:

Device          Start        End   Sectors   Size Type
/dev/sdb1        2048  589826047 589824000 281.3G Linux filesystem
/dev/sdb2   589826048 1179650047 589824000 281.3G Linux filesystem
/dev/sdb3  1179650048 1769474047 589824000 281.3G Linux filesystem
/dev/sdb4  1769474048 2359298047 589824000 281.3G Linux filesystem
/dev/sdb5  2359298048 2949122047 589824000 281.3G Linux filesystem
/dev/sdb6  2949122048 3538946047 589824000 281.3G Linux filesystem
/dev/sdb7  3538946048 4128770047 589824000 281.3G Linux filesystem
/dev/sdb8  4128770048 4718594047 589824000 281.3G Linux filesystem
/dev/sdb9  4718594048 5308418047 589824000 281.3G Linux filesystem
/dev/sdb10 5308418048 5898242047 589824000 281.3G Linux filesystem
/dev/sdb11 5898242048 6488066047 589824000 281.3G Linux filesystem
/dev/sdb12 6488066048 7077890047 589824000 281.3G Linux filesystem
/dev/sdb13 7077890048 7667714047 589824000 281.3G Linux filesystem
/dev/sdb14 7667714048 7814037134 146323087  69.8G Linux filesystem

Estou executando dd de sdb14 para sdb1 apenas para manter as coisas corretas.

Ao concluir cada partição, estou pensando em voltar para o fdisk / gdisk e excluir a partição, mesmo que o disco inteiro não seja apagado.

Quando terminar com todas as partições, planejo também limpar o início do disco:

$ dd if=/dev/zero of=/dev/sdX bs=1M count=512

(Eu entendo 512 é um pouco excessivo; por favor, sinta-se livre para fornecer um número melhor nos comentários.)

Isso atingirá meu objetivo de limpar o disco inteiro, peças de cada vez, sem deixar lacunas perdidas em nenhum lugar?

    
por jia103 07.12.2017 / 05:46

2 respostas

0

Sobre o começo do disco. A primeira partição começa no setor 2048 . Os setores são numerados de 0 . O gdisk de saída fornecido não indica isso explicitamente, mas posso calcular que seu disco usa setores de tamanho 512B . Portanto, há 2048 setores de 512 bytes antes da primeira partição. Este comando irá preenchê-los com zeros:

dd if=/dev/zero of=/dev/sdX bs=512 count=2048

Will this accomplish my goal of wiping the disk in full, pieces at a time, without leaving any missed gaps anywhere?

Eu analisei os números - não há lacunas entre as partições. Mas! O esquema GPT coloca a tabela de partições de backup no final do disco e leva 33 setores. Além disso, ferramentas de particionamento podem alinhar o final da última partição de alguma forma (embora o número ímpar de 146323087 sugira que não é o caso aqui). Então você também deve cobrir este espaço além da última partição:

dd if=/dev/zero of=/dev/sdX bs=512 seek=7814037135

Espere que este comando alcance o final do disco quase imediatamente.

As operações de disco usam cache, então você deve executar sync depois de tudo isso. Normalmente todo o cache é liberado quando você desliga normalmente. Mas se você desconectar o disco (desconecte o USB) anteriormente, algumas alterações podem ser perdidas. Vamos esperar que você nunca se desconecte dessa maneira depois de limpar partições particulares.

Depois disso, todo o seu disco será zerado. Isso deve ser suficiente (leia este e isso ). Se o disco era SSD, pode haver algumas preocupações por causa do nivelamento de desgaste; mas acho que 4 TB aqui é HDD, então não há problema.

    
por 07.12.2017 / 06:25
1

Outra alternativa para a solução @KamilMaiorowski seria criar um sistema de arquivos em / dev / sdX e, em seguida, gravar arquivos vazios nele. Desta forma, você pode parar de parte e continuar à vontade, seja anexando ao arquivo ou escrevendo um novo. Uma vez que o disco fica sem espaço para mais arquivos você está feito. Você também pode excluir os arquivos do disco assim que tiver feito isso.

Para fazer isso (de um disco inicializável)

mkfs.ext4 /dev/sdX
mkdir /tmp/tempdisk
mount /dev/sdX /tmp/tempdisk
dd if=/dev/zero of=/tmp/tempdisk/file0.zero
    
por 07.12.2017 / 09:48