Używam dd w najprostszej formie do klonowania dysku twardego:
dd if=INPUT of=OUTPUT
Jednak przeczytałem na stronie podręcznika, że dd zna parametr wielkości bloku. Czy istnieje optymalna wartość parametru wielkości bloku, który przyspieszy procedurę klonowania?
linux
hard-drive
backup
clone
Phi
źródło
źródło
Odpowiedzi:
64k wydaje się być dobrym wyborem:
(wzięte stąd ).
zgadza się to z moimi własnymi ustaleniami dotyczącymi buforowania odczytu / zapisu w celu przyspieszenia ciężkiego programu konwertującego io, który kiedyś pimping @work.
źródło
dd z przyjemnością skopiuje używając BS tego, co chcesz i skopiuje częściowy blok (na końcu).
Zasadniczo parametr rozmiar bloku (bs) wydaje się ustawiać ilość pamięci, która była używana do odczytania bryły z jednego dysku przed próbą zapisania tej bryły na drugim.
Jeśli masz dużo pamięci RAM, to powiększenie stacji bazowej BS (ale całkowicie zawartej w pamięci RAM) oznacza, że podsystem I / O jest wykorzystywany w jak największym stopniu przez wykonywanie ogromnie dużych odczytów i zapisów - z wykorzystaniem pamięci RAM. Niewielkie BS oznacza, że zwiększa się narzut I / O jako odsetek całkowitej aktywności.
Oczywiście w tym jest prawo malejących zysków. Moje przybliżone przybliżenie jest takie, że rozmiar bloku w zakresie około 128K do 32M prawdopodobnie da wydajność tak, że koszty ogólne są małe w porównaniu do zwykłego wejścia / wyjścia, a powiększenie nie zrobi dużej różnicy. Przyczyną dolnej granicy jest 128K do 32M jest - zależy to od twojego systemu operacyjnego, sprzętu i tak dalej.
Gdybym to był ja, zrobiłbym kilka eksperymentów mierzących czas kopiowania / klonowania przy użyciu BS 128K i ponownie przy użyciu (powiedzmy) 16M. Jeśli ktoś jest znacznie szybszy, użyj go. Jeśli nie, użyj mniejszej BS z dwóch.
źródło
Dla tych, którzy kończą tutaj przez Google, nawet jeśli ta dyskusja jest trochę stara ...
Pamiętaj, że dd jest głupi z jakiegoś powodu: im prościej, tym mniej sposobów może to popsuć.
Skomplikowane schematy partycjonowania (rozważ dysk twardy z podwójnym uruchomieniem, który dodatkowo wykorzystuje LVM w systemie Linux), zaczną wyciągać błędy z stolarki w programach takich jak Clonezilla. Źle odmontowane systemy plików mogą zdmuchnąć ntfsclone w górę.
Uszkodzony system plików sklonowany sektor po sektorze nie jest gorszy niż oryginał. Uszkodzony system plików po nieudanej „inteligentnej kopii” może mieć NAPRAWDĘ przykro.
W razie wątpliwości użyj dd i przejdź do analizy sądowej. Obrazowanie kryminalistyczne wymaga kopii sektor po sektorze (w rzeczywistości może wymagać więcej sektorów niż będziesz w stanie uzyskać dzięki dd, ale to długa historia). Jest powolny i żmudny, ale wykona zadanie poprawnie.
Również poznać opcje „conv = noerror, Sync”, dzięki czemu można klonować dyski, które zaczynają fail-- lub dokonać obrazy ISO z porysowanych ( kaszel ) CDs-- bez niego biorąc miesięcy.
źródło
sync
opcja? Strona człowiek po prostu mówi:"use synchronized I/O for data and metadata"
. Z czym się synchronizujemy? To może być wiele różnych rzeczy.Jak powiedzieli inni, nie ma uniwersalnie poprawnego rozmiaru bloku; to, co jest optymalne dla jednej sytuacji lub jednego elementu sprzętu, może być strasznie nieefektywne w innym. Ponadto, w zależności od kondycji dysków, może być zalecane użycie innego rozmiaru bloku niż ten, który jest „optymalny”.
Jedną z rzeczy, która jest dość niezawodna na współczesnym sprzęcie, jest to, że domyślny rozmiar 512 bajtów jest prawie o rząd wielkości wolniejszy niż bardziej optymalna alternatywa. W razie wątpliwości stwierdziłem, że 64K to dość solidne, nowoczesne ustawienie domyślne. Chociaż 64K zwykle nie jest optymalnym rozmiarem bloku, z mojego doświadczenia wynika, że jest o wiele bardziej wydajny niż domyślny. 64K ma również dość solidną historię niezawodności: możesz znaleźć wiadomość z listy mailingowej Eug-Lug, około 2002, zalecając rozmiar bloku 64K tutaj: http://www.mail-archive.com/eug- [email protected]/msg12073.html
Aby określić optymalny rozmiar bloku wyjściowego, napisałem następujący skrypt, który testuje zapisanie pliku testowego 128M z dd w zakresie różnych rozmiarów bloku, od domyślnej 512 bajtów do maksymalnie 64M. Ostrzegam, ten skrypt używa dd wewnętrznie, więc używaj go ostrożnie.
dd_obs_test.sh:
Zobacz na GitHub
Testowałem ten skrypt tylko w systemie Debian (Ubuntu) i OSX Yosemite, więc prawdopodobnie zajmie trochę ulepszeń, aby działać na innych smakach Uniksa.
Domyślnie polecenie utworzy plik testowy o nazwie dd_obs_testfile w bieżącym katalogu. Alternatywnie możesz podać ścieżkę do niestandardowego pliku testowego, podając ścieżkę po nazwie skryptu:
Dane wyjściowe skryptu to lista testowanych rozmiarów bloków i odpowiadających im szybkości przesyłania, takich jak:
(Uwaga: Jednostka szybkości przesyłania różni się w zależności od systemu operacyjnego)
Aby przetestować optymalny rozmiar bloku odczytu, możesz użyć mniej więcej tego samego procesu, ale zamiast czytać z / dev / zero i zapisywać na dysku, możesz czytać z dysku i zapisywać na / dev / null. Skrypt do wykonania tego może wyglądać tak:
dd_ibs_test.sh:
Zobacz na GitHub
Ważną różnicą w tym przypadku jest to, że plik testowy jest plikiem zapisanym przez skrypt. Nie kieruj tego polecenia na istniejący plik, ponieważ istniejący plik zostanie zastąpiony losowymi danymi!
W przypadku mojego konkretnego sprzętu stwierdziłem, że 128K jest najbardziej optymalnym rozmiarem bloku wejściowego na HDD, a 32K jest najbardziej optymalnym na SSD.
Chociaż ta odpowiedź obejmuje większość moich ustaleń, wystarczająco często napotykałem tę sytuację, że napisałem o niej post na blogu: http://blog.tdg5.com/tuning-dd-block-size/ Możesz znaleźć więcej szczegółów na testach, które tam przeprowadziłem.
Ten post StackOverflow może być również pomocny: dd: Jak obliczyć optymalny rozmiar bloku?
źródło
Tak, ale nie znajdziesz go bez wielu testów. Przekonałem się, że 32M to dobra wartość do użycia.
źródło
klonowanie starego dysku rozruchowego na nowy dysk SSD na zewnętrznym dysku SATA (SSD na SSD)
using Disks (tool)> format> ATA Secure Erase (2min)
Przebiegi testowe:
druga próba po bezpiecznym skasowaniu z tym samym rezultatem:
źródło