Gdzieś w Internecie przeczytałem, że gddrescue jest lepszy od dd, przynajmniej pod względem możliwości rozróżnienia między odczytami dysku wykonanymi w niesprawnym sektorze. Czy to naprawdę tak jest?
czas dd if = / dev / sda skip = 900343967 of = a.bin count = 4 iflag = direct conv = noerror, sync
dd: odczyt `/ dev / sda ': Błąd wejścia / wyjścia
2 + 0 zapisów w
2 + 0 zapisów
1024 bajty (1,0 kB) skopiowane, 18,6057 s, 0,1 kB / s
3 + 1 zapisów w
4 + 0 zapisów
2048 skopiowane bajty (2,0 kB), 18,6707 s, 0,1 kB / srzeczywisty 0m18.672s
użytkownik 0m0.000s
sys 0m0.004s
Btw, bezpośrednia flaga naprawdę pomaga, bez tego byłem w stanie odczytać tylko 1 sektor z 4 (w porównaniu z 3/4). To jednak wyraźnie spowalnia prędkość transferu - jest to dla mnie co najmniej około 5 razy wolniejsze: 5 MB / s vs 25 MB / s bez tej flagi. W każdym razie, teraz dla części gddrescue (ddrescue) ..
czas ddrescue -b512 -c1 -s4b -dnvD -i900343967b -o0b / dev / sda b.bin
Informacje o kopiowaniu 2048 bajtów z / dev / sda do b.bin
Pozycje początkowe : infile = 460976 MB, outfile = 0 B
Rozmiar bloku kopiowania: 1 twardy
blok Rozmiar bloku twardego: 512 bajtów
Max_retries: 0
Bezpośrednio: tak Rzadko: nie Podziel: bez Obcięcia: nieNaciśnij Ctrl-C, aby przerwać
uratowane: 1536 B, błędny rozmiar: 512 B, bieżąca szybkość: 53 B / s
ipos: 460976 MB, błędy: 1, średnia szybkość: 53 B / s
opos: 1536 B, czas od ostatniego udanego odczytu: 0 s
Zakończonerzeczywisty 0m18.736s
użytkownik 0m0.004s
sys 0m0.000s
Jak pokazano powyżej, wykonanie zajęło dokładnie tyle samo czasu. Zgodnie z oczekiwaniami - te same statystyki: 3/4. Jednak chociaż mogłem uzupełnić problematyczne sektory wartością 0x00 dla dd (conv = sync), gddrescue wydaje się brakować tej funkcji? Zamiast tego po prostu pomija problematyczny sektor bez zapisywania czegokolwiek na swoim miejscu i przechodzi do następnego następnego sektora (jeśli mam już dane zapisane nad tym sektorem w pliku wyjściowym - nie zostaną one zastąpione: czasami może to nie być pożądane ). Nie jestem pewien, jak działa opcja -t (obcinanie) dla urządzenia blokowego z gddrescue(myślę, że całkowicie nadpisze go 0x00), ale w zwykłym pliku, zgodnie z przewidywaniami, obetnie cały plik bez robienia tego tylko w obrębie wymiarów przesunięcia (tj. -o1). Jest to więc trochę podobne do synchronizacji dd , ale nie jest takie samo, jak naśladuje funkcjonalność identyfikacji, JEŚLI jesteś gotowy na zastąpienie całego urządzenia wyjściowego / pliku.
Chociaż dzięki obecności opcji pełnej i możliwości rejestrowania złych sektorów / bloków - gddrescue wydaje się lepszym wyborem. Należy zauważyć, że obie aplikacje zostały uruchomione z (prawie) identycznymi parametrami.
Dane wyjściowe
diff? .bin
jest pusty (wyjście 0), co oznacza, że pliki są dokładnie takie same.
Teraz jest to część, której NIE rozumiem:
dd działa wolno nawet w przypadku elementów wolnych od błędów, ponieważ robi małe odczyty i zapisy. Spędza dużo czasu, przeżuwając błędne części dysku, zamiast czytać tyle bezbłędnych rzeczy, ile się da, NASTĘPNIE wracając do robienia trudnych rzeczy.
O co w tym wszystkim chodzi? Zwłaszcza część „ spędza dużo czasu na przeżuwaniu błędnych części napędu, zamiast czytać tyle bezbłędnych rzeczy, ile się da, A NASTĘPNIE wracając do trudnych rzeczy ”? Zajęło to tyle samo czasu, co pokazano powyżej (chociaż sprawdziłem bardzo małą część danych, ale czy to powinno mieć znaczenie?).
gddrescue oferuje przełącznik -r , który powinien kontrolować ilość ponownych odczytów w „złym sektorze”, jednak wydaje się, że dd działa z opcją -r0 przez cały czas (ponieważ zajęło to ten sam czas). Czy więc ta opcja służy jedynie do „przetwarzania końcowego”? Mam na myśli , że pierwotnie zarówno dd, jak i gddrescue wydają się działać z -r0, a dd nie wydaje się przeżuwać błędnych części bardziej niż gddrescue (oba wydają się zatrzymywać na złym bloku na 15-18 sekundy dają lub biorą, więc o co chodzi, w jaki sposób gddrescue jest szybszy ???)
Ponadto, do czego służy opcja -D (użyj zapisu synchronicznego dla pliku wyjściowego)? Nie zauważyłem żadnej różnicy w stosunku do niektórych przeprowadzonych testów.
Czy ktoś może komentować całość? Dzięki.