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).
hdparmprawdopodobnie cię okłamie.
$ sudo hdparm -I /dev/sda | grep -i physical
Physical Sector size: 4096 bytes
hdparm -I /dev/sda | grep Sectorjest ł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, lshwaby zweryfikować inne wyniki (a także dlatego, że wydaje się, że nie mam hdparmdostępnych w mojej dystrybucji). Może to pomóc w zawężeniu:
sudo lshw | awk 'BEGIN {IGNORECASE=1;} /SCSI/,!//{print}'