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.
W zależności od tego, kiedy dysk twardy został wyprodukowany, a także od producenta i od jakiej wersji oprogramowania układowego działa, w przypadku nowoczesnych dysków twardych po wykryciu uszkodzonych sektorów są one usuwane z oprogramowania układowego, a dysk wie, że pomija uszkodzone sektory. Zatem pojęcie „ratowania” dysku twardego ze złych sektorów może być pod tym względem dyskusyjne. Pytanie, czy niegdyś uszkodzone sektory kiedyś miały prawidłowe dane, wydaje się rozwiązaniem, którego szukasz - nie ma zamiaru mówić!
Na stronie grc.com znajduje się oprogramowanie o nazwie spinrite 6, które twierdzi, że jest w stanie naprawić dyski twarde ze złymi sektorami. Jest to płatne oprogramowanie i nigdy go nie wypróbowałem. Warto o tym przeczytać, zwłaszcza jeśli ktoś próbuje „wskrzesić” dysk twardy i faktycznie działa tak, jak opisano. FAQ na grc.com dotyczące spinrite 6 wskazuje, że istnieje 30-dniowa gwarancja zwrotu pieniędzy (i nie ma wersji próbnej ani darmowej). Uwaga: nie jestem powiązany z grc.com, ani nie polecam go w twojej sytuacji. Wiem, że istnieje i może działać zgodnie z reklamą, ale nie wierz mi na słowo - zastrzeżenie.
W odniesieniu do oceny, czy gddrescue „przewyższa” dd, przynajmniej pod względem możliwości rozróżnienia między liczbą odczytów dysku wykonanych w niesprawnym sektorze, dowolną liczbą odczytów w uszkodzonym sektorze (ponieważ jest oznaczony jako inny niż sektor funkcjonalny na liście uszkodzonych sektorów przechowywanych na liście oprogramowania układowego) nie wydaje mi się przydatny w jakościowym użyciu gddrescue lub dd.
Przydatne może być przeczytanie strony internetowej, dd (Unix) pod adresem : https://secure.wikimedia.org/wikipedia/en/wiki/Gddrescue#Recovery-oriented_variants_of_dd
Przydatne może być także spojrzenie na: Jak utworzyć obraz uszkodzonego dysku twardego za pomocą UBCD, dd-rescue i P2 eXplorer na stronie : http://www.myfixlog.com/fix.php?fid= 21
źródło