zera um dispositivo de bloco grande com dd paralelizado

1

Temos um dispositivo de bloco de sessenta terabytes que queremos zerar usando o dd. É possível paralelizar esta operação para reduzir o tempo necessário?

Eu tentei executar o seguinte comando , mas isso não é bem o que estou procurando:

seq 1 5 | parallel dd if=/dev/zero of=/dev/mapper/mydevice{} bs=10M count=10
    
por palmbardier 27.07.2015 / 23:29

2 respostas

1
seq 0 600000 | parallel dd if=/dev/zero of=/dev/mapper/my60device bs=10M count=10 seek={}0

Você já usa if, of, bs, and count , então eu suponho que você sabe o que eles fazem.

seek procura n blocos no arquivo de saída antes de fazer o dd .

Você não escreve como o dispositivo de 60 TB é fisicamente organizado em fusos. Isso pode ter um impacto enorme. Então, isso pode ser mais rápido:

seq 0 60000 | parallel --shuf dd if=/dev/zero of=/dev/mapper/my60device bs=10M count=100 seek={}00

Ele grava blocos de 1 GB e embaralha a execução, o que pode aumentar ou diminuir a velocidade, dependendo do layout físico.

    
por 28.07.2015 / 17:34
0

A menos que o driver de dispositivo subjacente suporte o agendamento de duas operações de E / S de uma vez por meio de algum bizzare ioctl stuff, não é possível executar operações de E / S explicitamente paralelas a um dispositivo.

dd é a ferramenta errada para isso, já que funciona gravando dados em um arquivo ou bloqueando o dispositivo seqüencialmente - o melhor que você pode fazer é dizer para gravar um tamanho grande de bloco que permite otimizar o sistema operacional para acesso seqüencial melhor - o que melhora a velocidade de coisas como escrever em uma fita.

Girar dois dd em um dispositivo de bloco único não mudará o fato de que a maioria dos dispositivos de E / S, especialmente objetos parecidos com unidades de disco, podem fazer apenas uma única coisa ou uma pequena fila de coisas de uma só vez - e qualquer otimização (ou seja, alavancar o NCQ) é feita no nível do driver do dispositivo.

    
por 29.07.2015 / 00:20