Apa perbedaan antara kedua perintah dd ini?

23

Apa perbedaan antara dua ddperintah yang memiliki nilai bsdan countnilai yang berbeda , asalkan dikalikan dengan yang sama? Sebagai contoh:

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1
Rocky
sumber
4
Kedua perintah akan memakan waktu lama. Gunakan urandom jika Anda membutuhkan nomor acak. Gunakan nol jika Anda hanya membutuhkan input cepat dari sesuatu.
Nils
4
Gunakan /dev/urandom, bukan /dev/random. Lihat security.stackexchange.com/questions/3936/… , security.stackexchange.com/questions/3259/… , ...
Gilles 'SO- stop being evil'

Jawaban:

26

Sejauh hasil akhirnya, mereka akan melakukan hal yang sama. Perbedaannya terletak pada bagaimana ddproses data. Dan sebenarnya, kedua contoh Anda cukup ekstrim dalam hal itu: bsparameter memberi tahu ddberapa banyak data yang harus disangga ke dalam memori sebelum mengeluarkannya.

Jadi, pada dasarnya, perintah pertama akan mencoba membaca 2GB dalam dua potongan 1GB, dan yang terakhir akan mencoba membaca seluruh 2GB sekaligus, kemudian mengeluarkannya ke aafile.

rozcietrzewiacz
sumber
17

Hasilnya akan sama tetapi dalam kasus pertama ddakan menulis dua blok 1GB sementara di yang kedua blok 2GB. Perbedaannya adalah bahwa ddmenjaga blok yang disalin dalam memori. Anda akan membutuhkan 1GB RAM untuk casing pertama dan 2GB untuk RAM kedua.

Menurut pendapat saya tidak perlu menggunakan blok besar seperti itu. Anda dapat melakukan beberapa tes tetapi dalam kasus saya, saya mencapai kecepatan yang lebih besar dengan blok yang jauh lebih kecil (<1MB)

Matteo
sumber
9

Yang pertama akan mengambil 1G memori, isi dengan data dari file input dan output, dua kali.

Yang kedua akan mengambil 2G memori, mengisinya dengan data dari file input dan output.

golimar
sumber
2

Ukuran blok yang digunakan harus sesuai dengan pengaturan kecepatan terbaik untuk perangkat sumber dan target.

Anda dapat melihat perbedaannya jika Anda mencoba menyalin perangkat LV. Penggunaan ukuran BS yang sangat kecil akan mengganggu proses baca yang tidak perlu. Penggunaan ukuran BS yang sangat besar akan menyebabkan menunggu lama saat menulis.

Karena LVs standar biasanya terdiri dari 4 MB, yang juga merupakan ukuran yang baik untuk akses disk fisik, saya menggunakan bs = 4M untuk ini.

Cobalah untuk bereksperimen dengan 16K atau 256M - Anda akan perhatikan perbedaannya - dan perhatikan indikator disk saat menyalin ...

Nils
sumber
Hukuman untuk ukuran blok kecil atau besar agak diimbangi oleh caching yang dilakukan oleh kernel. Lihat di sini untuk benchmark mini.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles Saya tidak ingat angka-angka dalam tes saya, tetapi mereka jauh lebih dramatis daripada Anda. Pengaturan fisik hard disk mana yang Anda gunakan dalam pengujian Anda? Milik saya pada perangkat keras RAID 5 bergaris di 5 disk (SAS 15k) dengan 128 KB. ukuran garis.
Nils
Disk SATA, tanpa RAID, jika tidak mesin idle. Saya tidak ingat spesifikasi persisnya.
Gilles 'SANGAT berhenti menjadi jahat'