Qual è la differenza tra questi due comandi dd?


23

Qual è la differenza tra due ddcomandi che hanno valori bse countvalori diversi , purché si moltiplichino allo stesso? Per esempio:

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1

4
Entrambi i comandi impiegheranno anni. Usa urandom se hai bisogno di numeri casuali. Usa zero se hai solo bisogno di un input veloce di qualcosa.
Nils,

Risposte:


26

Per quanto riguarda il risultato finale, faranno lo stesso. La differenza sta nel modo in cui ddelaborare i dati. E in realtà, entrambi i tuoi esempi sono alquanto estremi a questo proposito: il bsparametro dice ddquanti dati dovrebbero bufferizzare nella memoria prima di inviarli.

Quindi, in sostanza, il primo comando sarebbe provare a leggere 2GB in due pezzi di 1 GB, e la seconda sarebbe cercare di leggere tutta 2GB in una volta sola e poi l'uscita al aafile.


17

Il risultato sarà lo stesso ma nel primo caso ddscriverà due blocchi da 1 GB mentre nel secondo blocco da 2 GB. La differenza è che ddmantiene il blocco copiato in memoria. Avrai bisogno di 1 GB di RAM nel primo caso e 2 GB nel secondo.

Secondo me non è necessario utilizzare blocchi così grandi. Puoi fare un paio di test ma nel mio caso raggiungo una maggiore velocità con blocchi molto più piccoli (<1 MB)


9

Il primo occuperà 1 G di memoria, lo riempirà di dati dal file di input e lo produrrà due volte.

Il secondo occuperà 2 G di memoria, lo riempirà con i dati del file di input e lo produrrà.


2

Le dimensioni del blocco utilizzate devono corrispondere alle migliori impostazioni di velocità per il dispositivo di origine e di destinazione.

Puoi vedere meglio la differenza se provi a copiare un dispositivo LV. L'uso di dimensioni BS molto ridotte interromperà il processo di lettura non necessario. L'uso di una dimensione BS molto grande porterà a lunghe attese durante la scrittura.

Poiché i LV standard sono normalmente costituiti da blocchi di 4 MB, che è anche una buona dimensione per l'accesso fisico al disco, per questi uso bs = 4M.

Prova a sperimentare 16K o 256M - noterai la differenza - e guarda l'indicatore del disco durante la copia ...


Le penalità per blocchi di piccole o grandi dimensioni sono in qualche modo compensate dalla memorizzazione nella cache eseguita dal kernel. Vedi qui per un mini-benchmark.
Gilles 'SO- smetti di essere malvagio' il

@Gilles Non ricordo i numeri nei miei test, ma erano molto più drammatici dei tuoi. Quale configurazione dell'hard disk fisico hai usato nel tuo test? Il mio era su un RAID 5 hardware con striping su 5 dischi (SAS 15k) con 128 KB. dimensione della striscia.
Nils,

Dischi SATA, nessun RAID, altrimenti macchina inattiva. Non ricordo le specifiche esatte.
Gilles 'SO- smetti di essere malvagio' il
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.