Jaka jest różnica między tymi dwoma poleceniami dd?

23

Jaka jest różnica między dwoma ddpoleceniami, które mają różne bsi countwartości, jak długo mnożyć się tak samo? Na przykład:

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1
Skalisty
źródło
4
Oba polecenia potrwają wieki. Użyj urandomu, jeśli potrzebujesz liczb losowych. Użyj zera, jeśli potrzebujesz czegoś szybko wprowadzić.
Nils,
4
Użyj /dev/urandom, nie /dev/random. Zobacz security.stackexchange.com/questions/3936/... , security.stackexchange.com/questions/3259/... , ...
Gilles 'SO- przystanek jest zła'

Odpowiedzi:

26

Jeśli chodzi o wynik końcowy, zrobią to samo. Różnica polega na sposobie ddprzetwarzania danych. W rzeczywistości oba przykłady są pod tym względem ekstremalne: bsparametr określa, ddile danych powinien buforować w pamięci przed wysłaniem.

Zasadniczo pierwsze polecenie spróbuje odczytać 2 GB w dwóch porcjach po 1 GB, a drugie spróbuje odczytać całe 2 GB za jednym razem, a następnie wyśle ​​je do aapliku.

rozcietrzewiacz
źródło
17

Rezultat będzie taki sam, ale w pierwszym przypadku ddzapisze dwa bloki 1 GB, a w drugim bloku 2 GB. Różnica polega na tym, że ddzachowuje skopiowany blok w pamięci. Będziesz potrzebował 1 GB pamięci RAM w pierwszym przypadku i 2 GB w drugim.

Moim zdaniem nie ma potrzeby używania tak dużych bloków. Możesz wykonać kilka testów, ale w moim przypadku osiągam większą prędkość przy znacznie mniejszych blokach (<1 MB)

Matteo
źródło
9

Pierwszy zajmie 1G pamięci, wypełni dane danymi z pliku wejściowego i wyśle ​​dwa razy.

Drugi zajmie 2G pamięci, wypełni dane danymi z pliku wejściowego i wyśle ​​je.

Golimar
źródło
2

Użyty rozmiar bloku powinien odpowiadać najlepszym ustawieniom prędkości dla urządzenia źródłowego i docelowego.

Różnicę najlepiej zobaczyć, gdy spróbujesz skopiować urządzenie niskiego napięcia. Zastosowanie bardzo małego rozmiaru BS zakłóci proces odczytu niepotrzebny. Użycie bardzo dużego rozmiaru BS doprowadzi do długiego oczekiwania podczas zapisu.

Ponieważ standardowe LV składają się zwykle z 4 MB fragmentów, co jest również dobrym rozmiarem dla fizycznego dostępu do dysku, do tego używam bs = 4M.

Spróbuj eksperymentować z 16K lub 256M - zauważysz różnicę - i obserwuj wskaźnik dysku podczas kopiowania ...

Nils
źródło
Kary dla małych lub dużych bloków są nieco równoważone przez buforowanie wykonywane przez jądro. Zobacz tutaj, aby zobaczyć mini-test.
Gilles „SO- przestań być zły”
@Gilles Nie pamiętam liczb w moich testach, ale były one znacznie bardziej dramatyczne niż twoje. Jakiej fizycznej konfiguracji dysku twardego użyłeś w swoim teście? Mój był na sprzętowej macierzy RAID 5 rozłożonej na 5 dyskach (SAS 15k) o 128 KB. rozmiar paska.
Nils
Dyski SATA, bez RAID, w przeciwnym razie bezczynna maszyna. Nie pamiętam dokładnych specyfikacji.
Gilles „SO- przestań być zły”