Eu sei que fazer um dd if=/dev/hda of=/dev/hdb
faz umcópia profunda do disco rígido. Ouvi dizer que as pessoas conseguiram acelerar o processo aumentando o número de bytes lidos e gravados por vez (padrão: 512
) com a bs
opção.
Minha pergunta é:
- O que determina o tamanho ideal de bytes para copiar de um disco rígido?
e
- Por que isso determina o tamanho ideal de bytes?
Responder1
ComoChris S.escreveu emesta respostao tamanho ideal do bloco depende do hardware. Na minha experiência, é sempre maior que os 512 bytes padrão. Se você estiver trabalhando com dispositivos brutos, a geometria do sistema de arquivos sobrejacente não terá efeito. Usei o script abaixo para ajudar a 'otimizar' o tamanho do bloco do dd.
#!/bin/bash
#
#create a file to work with
#
echo "creating a file to work with"
dd if=/dev/zero of=/var/tmp/infile count=1175000
for bs in 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M
do
echo "Testing block size = $bs"
dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs
echo ""
done
rm /var/tmp/infile /var/tmp/outfile
Responder2
Infelizmente, o tamanho perfeito dependerá do barramento do sistema, do controlador do disco rígido, da unidade específica e dos drivers de cada um deles. A única maneira de encontrar o tamanho perfeito é continuar tentando tamanhos diferentes. Aviso justo de que alguns dispositivos suportam apenas um tamanho de bloco, embora isso seja raro e, geralmente, os drivers compensam a diferença de qualquer maneira.
Acho que o tamanho do bloco de 2 ^ 15 ou 2 ^ 16 funciona melhor para minhas unidades SATA WDC (cache de 8 MB) conectadas a um controlador Adaptec SAS RAID, 4x PCIe, FreeBSD 8.0-STABLE de 64 bits. Mas para meu pen drive antigo e barato, tamanhos de 2 ^ 10 parecem ser os mais rápidos.
O “tamanho perfeito” é quase sempre uma potência de dois.
Responder3
Posso atestar o mérito de medir o resultado da realização de um teste no dispositivo usado antes de perder tempo. Estupidamente, não me incomodei e, depois de medir, ajustar o tamanho do bloco reduziu pela metade a duração do DD de uma transferência de 590 Gb. O mesmo valor de BS teria reduzido o tempo apenas em 20% usando uma combinação diferente de caddy/drive.