ประสิทธิภาพของ dd บน Mac OS X และ Linux


18

ฉันพยายามคัดลอก iso ของตัวติดตั้ง windows ลงบนฮาร์ดไดรฟ์เพื่อหลีกเลี่ยงการเบิร์นดิสก์ ฉันได้ลองใช้ฟังก์ชั่นการกู้คืนของ Disk Utility ครั้งแรก แต่มันไม่ชอบ ISO ด้วยเหตุผลบางอย่าง จากนั้นฉันลองใช้ dd:

dd if=/path/to/image.iso of=/dev/disk3

ฉันรู้ว่ามันกำลังคัดลอกไฟล์อย่างช้าๆประมาณ 160 KB / วินาที ฉันบูตเครื่องใหม่ในการติดตั้ง linux ของฉันและรันคำสั่งอีกครั้งเกือบทุกคำต่อคำ:

dd if=/path/to/image.iso of=/dev/sdc

เวลานี้คำสั่งดำเนินการภายในไม่กี่นาทีด้วยความเร็วเฉลี่ย 57 MB / วินาที ในทั้งสองกรณีแหล่งที่มาและปลายทางเป็นฮาร์ดไดรฟ์จริงเดียวกัน เกิดอะไรขึ้น?

ฉันใช้ OSX 10.7.3 และ Linux 2.6.38-13


1
อืมฉันคาดหวังว่า linux จะทำงานช้าโดยไม่มีbsพารามิเตอร์ คุณมีชื่อแทนสำหรับddการตั้งค่าบน linux (พิมพ์aliasที่พรอมต์) หรือไม่?
Paul

คำตอบ:


28

สำหรับ OS X /dev/rdisk3ใช้

ด้วยเหตุผลบางอย่างจะเร็วกว่าrdisk diskฉันเชื่อว่าเกี่ยวข้องกับบัฟเฟอร์

โดยทั่วไปแล้วการใช้bsธงด้วยความddช่วยเหลือเกี่ยวกับความเร็ว

dd if=/path/to/image.iso of=/dev/sdc bs=1M

ไบต์คือ 1M ซึ่งถ่ายโอนได้เร็วขึ้น บน OS X ที่คุณต้องใช้1m(ตัวพิมพ์เล็ก) 1Mแทน


ขอขอบคุณ ! ฉันลืมที่จะเพิ่มbs=1mและมันช้าเหมือนนรก!
LoremIpsum

4
ความคิดเห็นเกี่ยวกับตัวพิมพ์เล็ก mบน OS X เป็นเครื่องช่วยชีวิต ขอบคุณมาก!
Jonathan Komar

0

ดิสก์ดิบ BSD

โดยทั่วไป BSD จะมีอุปกรณ์ดิสก์อยู่ 2 ประเภท: bufferend และ unbuffered (raw) จากhdutil(1)หน้าคน:

DEVICE SPECIAL FILES
     Since any /dev entry can be treated as a raw disk image, it is worth
     noting which devices can be accessed when and how.  /dev/rdisk nodes
     are character-special devices, but are "raw" in the BSD sense and
     force block-aligned I/O. They are closer to the physical disk than
     the buffer cache. /dev/disk nodes, on the other hand, are buffered
     block-special devices and are used primarily by the kernel's
     filesystem code.

     It is not possible to read from a /dev/disk node while a filesystem
     is mounted from it, ...

เนื่องจากย่อหน้าที่ 2 ดิสก์จะต้องถูกถอดออกเพื่อให้สามารถใช้งานddได้ใน "โหมดดิบ"

ขนาดบล็อก

จากdd(1)หน้าคน:

     Where sizes are specified, a decimal, octal, or hexadecimal number of bytes
     is expected.  If the number ends with a ``b'', ``k'', ``m'', ``g'', or ``w'',
     the number is multiplied by 512, 1024 (1K), 1048576 (1M), 1073741824 (1G) or
     the number of bytes in an integer, respectively.  Two or more numbers may be
     separated by an ``x'' to indicate a product.

ขนาดเริ่มต้นคือ 512 ไบต์ ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.