Jak określić najlepszy rozmiar bajtu dla polecenia dd

21

Wiem, że wykonanie dd if = / dev / hda z = / dev / hdb robi głęboką kopię dysku twardego. Słyszałem, że ludzie mogli przyspieszyć ten proces, zwiększając liczbę bajtów, które są odczytywane i zapisywane jednocześnie (512) dzięki opcji „bs”.

Moje pytanie brzmi:

Co decyduje o idealnym rozmiarze bajtu do kopiowania z dysku twardego?

i

Dlaczego to określa idealny rozmiar bajtu?

James T.
źródło
Pomyślałem, że musiałby się idealnie równomiernie podzielić na rozmiar dysku lub partycji: dlatego starałem się ustalić dokładny rozmiar bajtu partycji docelowej, uzyskać czynniki pierwsze i ustalić dość duży blok, który jest wielokrotnością kilka z tych głównych czynników ...
PP.

Odpowiedzi:

18

Jak mówi Chris S, optymalny rozmiar bloku zależy od sprzętu. Z mojego doświadczenia wynika, że ​​jest zawsze większy niż domyślnie 512 bajtów. Jeśli pracujesz z urządzeniami typu raw, wówczas geometria systemu plików nie będzie działać. Użyłem poniższego skryptu, aby pomóc „zoptymalizować” rozmiar bloku 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 obsługuje GoFundMonica
źródło
4
W OS X „1M ... 8M” powinno być pisane małymi literami do „1m ... 8m”.
Matt Beckman,
1
można dodać „czas” przed dd, aby mieć dodatkowe informacje o tym, ile czasu spędzono na oczekiwaniu na zamówienie, a jaka kwota to prawdziwa praca ...
Olivier Dulac
1
@lain /dev/zerojest generowany, nie trzeba czytać go z dysku; możesz dobrze dd if=/dev/zero ibs=1M count=32 obs=$bs of=/var/tmp/outfile@ olivier-dulac, ddjuż wydrukować prędkość; nie sądzę time(lub /usr/bin/time) dodawać żadnych informacji wartych uwagi.
bufh
1

Niestety, idealny rozmiar będzie zależeć od magistrali systemowej, kontrolera dysku twardego, konkretnego dysku i sterowników dla każdego z nich. Jedynym sposobem na znalezienie idealnego rozmiaru jest wypróbowanie różnych rozmiarów. Uczciwe ostrzeżenie, że niektóre urządzenia obsługują tylko jeden rozmiar bloku, choć jest to rzadkie i zwykle i tak nadrabiają różnice.

Uważam, że rozmiar bloku 2 ^ 15 lub 2 ^ 16 działa najlepiej dla moich napędów SATA WDC (8mb cache) podłączonych do kontrolera RAID Adaptec SAS, 4x PCIe, 64-bitowy FreeBSD 8.0-STABLE. Ale w przypadku mojego taniego starego napędu na kciuk rozmiary 2 ^ 10 wydają się najszybsze.

„Idealny rozmiar” to prawie zawsze potęga dwóch osób.

Chris S.
źródło
0

Mogę poręczyć za zasługi pomiaru wyniku testu urządzenia używanego przed zmarnowaniem w dowolnym momencie. Głupio nie zawracałem sobie głowy i po pomiarze, a następnie dostosowanie rozmiaru bloku skróciło mi czas DD transferu 590 Gb na pół. Ta sama wartość BS skróciłaby czas tylko o 20% przy użyciu innej kombinacji caddy / drive.

Bernster
źródło