Cara menentukan ukuran byte terbaik untuk perintah dd

21

Saya tahu bahwa melakukan dd jika = / dev / hda dari = / dev / hdb melakukan copy hard drive yang dalam. Saya pernah mendengar bahwa orang dapat mempercepat proses dengan meningkatkan jumlah byte yang dibaca dan ditulis sekaligus (512) dengan opsi "bs".

Pertanyaanku adalah:

Apa yang menentukan ukuran byte ideal untuk menyalin dari hard drive?

dan

Mengapa itu menentukan ukuran byte yang ideal?

James T
sumber
Saya pikir itu harus membagi dengan sempurna secara merata ke dalam ukuran drive atau partisi: maka saya telah mencoba untuk menentukan ukuran byte yang tepat dari partisi target, mendapatkan faktor prima, dan menentukan blok yang cukup besar yang merupakan kelipatan dari beberapa faktor utama itu ...
PP.

Jawaban:

18

Seperti yang dikatakan Chris S, ukuran blok optimal tergantung pada perangkat keras. Dalam pengalaman saya selalu lebih besar dari 512 byte default. Jika Anda bekerja dengan perangkat mentah maka geometri sistem file yang ada tidak akan berpengaruh. Saya telah menggunakan skrip di bawah ini untuk membantu 'mengoptimalkan' ukuran blok 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 mendukung GoFundMonica
sumber
4
Di OS X, "1M ... 8M" harus diturunkan menjadi "1m ... 8m".
Matt Beckman
1
Anda dapat menambahkan "waktu" di depan dd, untuk memiliki informasi tambahan tentang berapa lama waktu yang dihabiskan menunggu IO dan berapa jumlah adalah pekerjaan nyata ...
Olivier Dulac
1
@lain /dev/zerodibuat, tidak perlu membacanya dari disk; Anda bisa dd if=/dev/zero ibs=1M count=32 obs=$bs of=/var/tmp/outfile@ olivier-dulac dengan baik, ddsudah mencetak kecepatan; saya tidak berpikir time(atau /usr/bin/time) menambah nilai informasi apa pun.
bufh
1

Sayangnya ukuran yang sempurna akan tergantung pada bus sistem Anda, pengontrol hard drive, drive tertentu itu sendiri, dan driver untuk masing-masing. Satu-satunya cara untuk menemukan ukuran sempurna adalah tetap mencoba ukuran yang berbeda. Peringatan adil bahwa beberapa perangkat hanya mendukung satu ukuran blok, meskipun ini jarang terjadi, dan biasanya driver membuat perbedaan.

Saya menemukan bahwa ukuran blok 2 ^ 15 atau 2 ^ 16 bekerja paling baik untuk drive WDC (8mb cache) saya yang terhubung ke kontroler RAID SAS Adaptec, 4x PCIe, FreeBSD 64-bit 64-bit 8.0-STABLE. Tetapi untuk thumb drive lama saya yang murah, ukuran 2 ^ 10 tampaknya paling cepat.

"Ukuran sempurna" hampir selalu merupakan kekuatan dua.

Chris S
sumber
0

Saya dapat menjamin layaknya mengukur hasil dari melakukan tes pada perangkat yang digunakan sebelum membuang-buang waktu. Saya bodoh tidak mengganggu dan setelah mengukur, kemudian menyesuaikan ukuran blok saya memangkas durasi DD saya dari transfer 590Gb menjadi dua. Nilai BS yang sama hanya akan mengurangi waktu 20% menggunakan kombo / drive kombo yang berbeda.

Bernster
sumber