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

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

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.


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)


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.


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 ...


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'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.