Cách xác định kích thước byte tốt nhất cho lệnh dd


21

Tôi biết rằng làm một dd nếu = / dev / hda của = / dev / hdb sẽ sao chép ổ cứng sâu. Tôi đã nghe nói rằng mọi người đã có thể tăng tốc quá trình bằng cách tăng số byte được đọc và ghi tại một thời điểm (512) với tùy chọn "bs".

Câu hỏi của tôi là:

Điều gì xác định kích thước byte lý tưởng để sao chép từ ổ cứng?

Tại sao điều đó xác định kích thước byte lý tưởng?


Tôi nghĩ rằng nó sẽ phải phân chia hoàn toàn đồng đều thành kích thước của ổ đĩa hoặc phân vùng: do đó tôi đã cố gắng xác định kích thước byte chính xác của phân vùng đích, lấy các thừa số nguyên tố và xác định một khối lớn hợp lý là bội số của một vài trong số các yếu tố chính ...
PP.

Câu trả lời:


18

Như Chris S nói kích thước khối tối ưu phụ thuộc vào phần cứng. Theo kinh nghiệm của tôi, nó luôn lớn hơn 512 byte mặc định. Nếu bạn làm việc với các thiết bị thô thì hình học hệ thống tập tin quá mức sẽ không có hiệu lực. Tôi đã sử dụng tập lệnh bên dưới để giúp 'tối ưu hóa' kích thước khối của 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

4
Trong OS X, "1M ... 8M" nên được hạ xuống thành "1m ... 8m".
Matt Beckman

1
bạn có thể thêm "thời gian" vào trước dd, để có thêm thông tin bổ sung về lượng thời gian đã dành cho IO và số tiền là công việc thực sự ...
Olivier Dulac

1
@lain /dev/zerođược tạo, không cần đọc nó từ đĩa; bạn có thể dd if=/dev/zero ibs=1M count=32 obs=$bs of=/var/tmp/outfile@ olivier-dulac, ddđã in tốc độ; tôi không nghĩ time(hoặc /usr/bin/time) thêm bất kỳ thông tin nào có giá trị.
bufh

1

Thật không may, kích thước hoàn hảo sẽ phụ thuộc vào bus hệ thống, bộ điều khiển ổ cứng, chính ổ đĩa cụ thể và trình điều khiển cho từng loại. Cách duy nhất để tìm kích thước hoàn hảo là tiếp tục thử các kích cỡ khác nhau. Cảnh báo công bằng rằng một số thiết bị chỉ hỗ trợ một kích thước khối, mặc dù điều này rất hiếm và thông thường trình điều khiển tạo nên sự khác biệt.

Tôi thấy rằng kích thước khối 2 ^ 15 hoặc 2 ^ 16 hoạt động tốt nhất cho các ổ đĩa WDC (bộ nhớ cache 8mb) của tôi được kết nối với bộ điều khiển RAID Adaptec SAS, 4x PCIe, FreeBSD 8.0-STABLE. Nhưng đối với ổ đĩa cũ giá rẻ của tôi, kích thước 2 ^ 10 dường như là nhanh nhất.

"Kích thước hoàn hảo" hầu như luôn là một sức mạnh của hai.


0

Tôi có thể chứng minh bằng cách đo lường kết quả của việc thực hiện thử nghiệm trên thiết bị đang được sử dụng trước khi lãng phí bất cứ lúc nào. Tôi ngu ngốc đã không làm phiền và sau khi đo, sau đó điều chỉnh kích thước khối của tôi đã cắt giảm thời gian DD của tôi chuyển một nửa 590Gb. Giá trị BS tương tự sẽ chỉ giảm 20% thời gian khi sử dụng kết hợp caddy / ổ đĩa khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.