Como determinar o melhor tamanho de byte para o comando dd

21

Eu sei que fazer um dd se = / dev / hda de = / dev / hdb faz uma có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 (512) com a opção "bs".

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?

James T
fonte
Eu pensei que teria que dividir perfeitamente uniformemente no tamanho da unidade ou partição: portanto, tentei determinar o tamanho exato de bytes da partição de destino, obter os fatores primos e determinar um bloco razoavelmente grande que seja múltiplo de vários desses fatores principais ...
PP.

Respostas:

18

Como Chris S diz, o 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 subjacente não terá efeito. Eu 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
user9517 suporta GoFundMonica
fonte
4
No OS X, "1M ... 8M" deve estar em minúsculas para "1m ... 8m".
226128 Matt Beckman
1
você pode adicionar um "tempo" na frente de dd, para ter informações sobre additionnal sobre que quantidade de tempo foi gasto à espera de IO e qual o montante é um trabalho real ...
Olivier Dulac
1
@lain /dev/zeroé gerado, não é necessário lê-lo no disco; você poderia dd if=/dev/zero ibs=1M count=32 obs=$bs of=/var/tmp/outfile@ olivier-dulac bem, ddjá imprimir a velocidade; acho que time(ou /usr/bin/time) não adiciono nenhuma informação que valha a pena.
bufh
1

Infelizmente, o tamanho perfeito dependerá do barramento do sistema, do controlador do disco rígido, da unidade específica e dos drivers de cada uma delas. 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.

Acho que o tamanho do bloco de 2 ^ 15 ou 2 ^ 16 funciona melhor para minhas unidades SATA WDC (cache de 8mb) conectadas a um controlador RAID Adaptec SAS, 4x PCIe, FreeBSD 8.0-STABLE de 64 bits. Mas para o meu pen drive antigo e barato, tamanhos de 2 ^ 10 parecem ser mais rápidos.

O "tamanho perfeito" é quase sempre uma potência de dois.

Chris S
fonte
0

Posso garantir o mérito de medir o resultado da realização de um teste no dispositivo que está sendo usado antes de perder tempo. Eu estupidamente não me incomodei e, depois de medir, o ajuste do tamanho do meu bloco reduziu minha duração de DD de uma transferência de 590Gb pela metade. O mesmo valor de BS teria reduzido o tempo apenas em 20% usando um combo caddy / drive diferente.

Bernster
fonte