Sự khác biệt giữa hai lệnh dd này là gì?


23

Sự khác biệt giữa hai ddlệnh có giá trị bscountgiá trị khác nhau , miễn là chúng nhân với nhau? Ví dụ:

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1

4
Cả hai lệnh sẽ mất nhiều năm. Sử dụng urandom nếu bạn cần số ngẫu nhiên. Sử dụng 0 nếu bạn chỉ cần đầu vào nhanh của một cái gì đó.
Nils

Câu trả lời:


26

Theo như kết quả cuối cùng, họ sẽ làm như vậy. Sự khác biệt là cách ddxử lý dữ liệu. Và trên thực tế, cả hai ví dụ của bạn đều cực kỳ liên quan đến vấn đề đó: bstham số cho ddbiết lượng dữ liệu cần đệm vào bộ nhớ trước khi xuất ra.

Vì vậy, về cơ bản, lệnh đầu tiên sẽ cố gắng đọc 2GB trong hai khối 1GB và lệnh sau sẽ cố gắng đọc toàn bộ 2GB trong một lần và sau đó xuất nó ra aatệp.


17

Kết quả sẽ giống nhau nhưng trong trường hợp đầu tiên ddsẽ ghi hai khối 1GB trong khi ở khối thứ hai là 2GB. Sự khác biệt là ddgiữ khối sao chép trong bộ nhớ. Bạn sẽ cần 1GB RAM trong trường hợp đầu tiên và 2GB trong lần thứ hai.

Theo tôi không cần phải sử dụng các khối lớn như vậy. Bạn có thể thực hiện một vài thử nghiệm nhưng trong trường hợp của tôi, tôi đạt được tốc độ lớn hơn với các khối nhỏ hơn nhiều (<1MB)


9

Cái đầu tiên sẽ chiếm 1G bộ nhớ, lấp đầy nó với dữ liệu từ tệp đầu vào và xuất ra nó, hai lần.

Cái thứ hai sẽ chiếm 2G bộ nhớ, lấp đầy nó với dữ liệu từ tệp đầu vào và xuất nó.


2

Kích thước khối được sử dụng phải phù hợp với cài đặt tốc độ tốt nhất cho thiết bị nguồn và thiết bị đích.

Bạn có thể thấy rõ nhất sự khác biệt nếu bạn cố gắng sao chép một thiết bị LV. Việc sử dụng kích thước BS rất nhỏ sẽ làm gián đoạn quá trình đọc không cần thiết. Việc sử dụng kích thước BS rất lớn sẽ dẫn đến sự chờ đợi lâu trong quá trình viết.

Vì LV tiêu chuẩn thường bao gồm các khối 4 MB, wich cũng là một kích thước tốt để truy cập đĩa vật lý, tôi sử dụng bs = 4M cho các khối này.

Hãy thử trải nghiệm với 16K hoặc 256M - bạn sẽ nhận thấy sự khác biệt - và xem chỉ báo đĩa trong khi sao chép ...


Các hình phạt cho kích thước khối nhỏ hoặc lớn được bù đắp phần nào bởi bộ đệm được thực hiện bởi kernel. Xem ở đây cho một điểm chuẩn nhỏ.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Tôi không nhớ các con số trong các bài kiểm tra của mình, nhưng chúng ấn tượng hơn nhiều so với của bạn. Bạn đã sử dụng thiết lập ổ cứng vật lý nào trong bài kiểm tra của mình? Của tôi là trên một phần cứng RAID 5 sọc trên 5 đĩa (SAS 15k) với 128 KB. kích thước sọc.
Nils

Đĩa SATA, không có RAID, nếu không thì máy nhàn rỗi. Tôi không nhớ thông số kỹ thuật chính xác.
Gilles 'SO- ngừng trở nên xấu xa'
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.