Come determinare la migliore dimensione in byte per il comando dd


21

So che fare un dd se = / dev / hda di = / dev / hdb fa una copia profonda del disco rigido. Ho sentito che le persone sono state in grado di accelerare il processo aumentando il numero di byte letti e scritti alla volta (512) con l'opzione "bs".

La mia domanda è:

Cosa determina la dimensione dei byte ideale per la copia da un disco rigido?

e

Perché questo determina la dimensione ideale dei byte?


Ho pensato che avrebbe dovuto dividere perfettamente uniformemente nella dimensione dell'unità o della partizione: quindi ho cercato di determinare la dimensione esatta del byte della partizione di destinazione, ottenere i fattori primi e determinare un blocco ragionevolmente grande che è un multiplo di molti di quei fattori primi ...
PP.

Risposte:


18

Come dice Chris S, la dimensione ottimale del blocco dipende dall'hardware. Nella mia esperienza è sempre maggiore dei 512 byte predefiniti. Se lavori con dispositivi non elaborati, la geometria del file system sovrastante non avrà alcun effetto. Ho usato lo script qui sotto per aiutare a "ottimizzare" la dimensione del blocco di 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

4
In OS X, "1M ... 8M" deve essere impostato su "1m ... 8m".
Matt Beckman,

1
potresti aggiungere un "tempo" davanti a dd, per avere ulteriori informazioni su quanto tempo è stato speso in attesa di IO e quale importo è un vero lavoro ...
Olivier Dulac

1
Viene /dev/zerogenerato @lain , non è necessario leggerlo dal disco; potresti dd if=/dev/zero ibs=1M count=32 obs=$bs of=/var/tmp/outfile@ olivier-dulac bene, ddgià stampare la velocità; non credo time(o /usr/bin/time) aggiungere alcuna informazione utile.
bufh,

1

Sfortunatamente, le dimensioni perfette dipenderanno dal bus di sistema, dal controller del disco rigido, dall'unità specifica stessa e dai driver per ognuno di essi. L'unico modo per trovare la dimensione perfetta è continuare a provare taglie diverse. Un chiaro avvertimento che alcuni dispositivi supportano solo una dimensione di blocco, anche se questo è raro, e di solito i driver fanno comunque la differenza.

Trovo che la dimensione del blocco di 2 ^ 15 o 2 ^ 16 funzioni meglio per le mie unità SATA WDC (cache 8mb) collegate a un controller RAID SAS Adaptec, 4x PCIe, FreeBSD 8.0-STABLE a 64 bit. Ma per la mia vecchia chiavetta a buon mercato, le dimensioni di 2 ^ 10 sembrano essere le più veloci.

La "dimensione perfetta" è quasi sempre una potenza di due.


0

Posso garantire il merito di misurare l'esito dell'esecuzione di un test sul dispositivo utilizzato prima di perdere tempo. Stupidamente non mi sono preoccupato e dopo aver misurato, regolando la dimensione del mio blocco ho dimezzato la mia durata DD di un trasferimento di 590Gb. Lo stesso valore BS avrebbe solo ridotto il tempo del 20% utilizzando una diversa combinazione caddy / drive.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.