Próbuję ustalić optymalny rozmiar dużej kopii z dysku twardego za pomocą dd. Próbuję dowiedzieć się, jaki najlepszy rozmiar bloku to użyć, a moim zdaniem byłby to rozmiar bloku sprzętowego dla tego napędu.
Próbuję ustalić optymalny rozmiar dużej kopii z dysku twardego za pomocą dd. Próbuję dowiedzieć się, jaki najlepszy rozmiar bloku to użyć, a moim zdaniem byłby to rozmiar bloku sprzętowego dla tego napędu.
Odpowiedzi:
Polecenie lsblk jest do tego świetne:
lsblk -o NAME,PHY-SeC
Wyniki:
NAME PHY-SEC
sda 512
├─sda1 512
├─sda2 512
└─sda5 512
Linux ujawnia rozmiar sektora fizycznego w plikach /sys/block/sdX/queue/physical_block_size
. Chociaż, aby uzyskać najlepszą wydajność, prawdopodobnie powinieneś zrobić małe testy z różnymi rozmiarami i miarą. Mogę nie znaleźć się jasną odpowiedź na to stosując dokładnie fizyczny rozmiar bloku by uzyskać optymalny wynik (choć zakładam, że nie może być zły wybór).
hdparm
prawdopodobnie cię okłamie.
$ sudo hdparm -I /dev/sda | grep -i physical
Physical Sector size: 4096 bytes
hdparm -I /dev/sda | grep Sector
jest ładniejszy, ponieważ pokaże jednocześnie zarówno fizyczne, jak i logiczne rozmiary, dla łatwego porównania.
Mój nie ma być całkowitą odpowiedzią, ale mam nadzieję, że to też pomoże.
Oto coś z http://mark.koli.ch/2009/05/howto-whole-disk-backups-with-dd-gzip-and-p7zip.html
W celu szybszego tworzenia kopii zapasowej może pomóc ustalić optymalny rozmiar bloku urządzenia dyskowego, którego kopię zapasową chcesz wykonać. Zakładając, że masz zamiar wykonać kopię zapasową / dev / sda, oto jak możesz użyć polecenia fdisk, aby określić najlepszy rozmiar bloku:
rescuecd#/> /sbin/fdisk -l /dev/sda | grep Units
Units = cylinders of 16065 * 512 = 8225280 bytes
Zauważ, że wyjście fdisk mówi „cylindry 16065 * 512”. Oznacza to, że na dysku jest 512 bajtów na blok. Można znacznie poprawić szybkość tworzenia kopii zapasowej, zwiększając rozmiar bloku o wielokrotność od 2 do 4. W takim przypadku optymalny rozmiar bloku może wynosić 1k (512 * 2) lub 2k (512 * 4). BTW, chciwość i użycie bloku o wielkości 5k (512 * 10) lub czegoś nadmiernego nie pomoże; ostatecznie system będzie wąskim gardłem w samym urządzeniu i nie będziesz w stanie wycisnąć żadnej dodatkowej wydajności z procesu tworzenia kopii zapasowej. (podkreślenie dodane)
Podejrzewam, że różnica w wydajności między prawie optymalnym a optymalnym rozmiarem bloku dla danej konfiguracji jest znikoma, chyba że zestaw danych jest ogromny. Rzeczywiście, użytkownik FixUnix (post z 2007 roku) twierdził, że jego optymalne czasy były tylko 5% szybsze niż nieoptymalne. Być może możesz wycisnąć nieco większą wydajność, używając wielokrotności rozmiaru „klastra” lub rozmiaru bloku systemu plików.
Oczywiście, jeśli przesuniesz się zbyt daleko w dowolną stronę optymalnego rozmiaru bloku, napotkasz problemy.
Najważniejsze jest to, że prawdopodobnie uzyskasz tylko około 5% wydajności (tj. 3 minuty na godzinę) przy absolutnie optymalnym rozmiarze bloku, więc zastanów się, czy warto poświęcić swój czas i wysiłek na dalsze badania. Dopóki trzymasz się z dala od ekstremalnych wartości, nie powinieneś cierpieć.
echo "p" | /sbin/fdisk /dev/sda...
zamiast /sbin/fdisk -l /dev/sda...
? drugi będzie czystszy i nie będzie próbował dokonywać żadnych zmian.
/sbin/fdisk -l /dev/sda | grep Units
. Mogło to ulec zmianie w ciągu ostatnich dwóch lat. W każdym razie zaktualizowałem twoją odpowiedź.
Każdy transfer dysku generuje przerwanie, które procesor musi obsłużyć. Typowy dysk 50 Mb / s będzie chciał generować 100 000 z nich co sekundę przy rozmiarze bloku 512b Normalny procesor poradziłby sobie z dziesiątkami tysięcy takich bloków, dlatego większy (2 ^ x) rozmiar bloku byłby bardziej przydatny (4k jako domyślny rozmiar bloku FS w większości systemy do 64k ISA DMA) byłyby bardziej praktyczne ...
Dodatkowo możesz przejrzeć dane wyjściowe, lshw
aby zweryfikować inne wyniki (a także dlatego, że wydaje się, że nie mam hdparm
dostępnych w mojej dystrybucji). Może to pomóc w zawężeniu:
sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'