Jak naprawić błąd wejścia / wyjścia za pomocą dd?

14

Cześć, próbuję naprawić mój system Windows 7 z uszkodzonym dyskiem twardym, ale nadal działa.

Próbuję skopiować wszystkie dane na nowy dysk, aby ponownie zainstalować system Windows 7. Dysk o nazwie SQSERVICE.

Nie mogę w ogóle kopiować - patrz poniżej:

$ sudo dd if=/dev/sdc1 of=/dev/sda1
dd: reading `/dev/sdc1': Input/output error
11233976+0 records in
11233976+0 records out
5751795712 bytes (5.8 GB) copied, 187.731 s, 30.6 MB/s

Jak naprawić ten „błąd wejścia / wyjścia”?

Gumka
źródło
1
@Gertvddijk dzięki rozwiązaniu mojego problemu z pisownią, jestem z Holandii i nadal dobrze się uczę angielskiego.
Erazer

Odpowiedzi:

16

Sam to powiedziałeś: twój dysk jest uszkodzony. Możesz spróbować ddrescue, może być w stanie obejść zepsutą ścieżkę. Uważaj jednak, aby utracić dane.

Przywracanie z kopii zapasowej będzie łatwiejsze :)

Prawidłowe użycie ddrescuejest następujące:

sudo apt-get install gddrescue
sudo ddrescue /dev/sdc1 /dev/sda1

lub jeśli chcesz stdoutpotokować do narzędzia do monitorowania postępu:

sudo ddrescue /dev/sdc1 /dev/sda1 | pv
Dennis Kaarsemaker
źródło
tak, powiedziałem to, ale przywracanie z kopii zapasowej jest na tym dysku .. i mam ten problem tylko z sektorem, jak mogę użyć tego polecenia?
Jestem
2
Więc twoja kopia zapasowa znajduje się na tym samym dysku, co dysk, który robisz ?! boggles
Dennis Kaarsemaker
1
ten sam dysk tak, ale nie na tej samej partycji. no cóż, jestem trochę głupi: '(zrób kopię zapasową w ogóle
nieistotną
6

Nie wiem, czy jest to przydatne dla kogokolwiek, ale jeśli znalazłem tę stronę w moich poszukiwaniach, być może pomoże to komuś (poza OP, który mam nadzieję rozwiązał swój problem kilka miesięcy temu).

ddrescue może być najlepszym wyborem w tym przypadku do odzyskiwania danych (inaczej niż „naprawianie” błędu / dysku zgodnie z brzmieniem pierwotnego pytania), jak sugerował Dennis.

Alternatywnie możesz także zamontować dysk i skopiować pliki. Jest to O DUŻO szybciej, jeśli jest dużo pustej przestrzeni lub jeśli chcesz tylko niektóre określone pliki. OSTRZEŻENIE: wykonane z komputera z systemem Linux, traci wszystkie rozszerzone atrybuty, takie jak uprawnienia do plików, więc jest to bardzo zły wybór dla plików systemu operacyjnego, ale tolerowany dla plików użytkownika. Wykonanie tego z poziomu systemu Windows powinno je zachować, ale może nie obsługiwać błędów płynnie, co może powodować bardzo wolne działanie.

Inną opcją „naprawienia” sektorów, a nie tylko ich ominięcia, jest realokacja złych sektorów. Jeśli znasz numer sektora (w twoim przypadku 11233976, zakładając, że rozmiar bloku w dd, a rozmiar sektora to 512), po prostu uruchom go i uruchom ponownie dla każdego nowego uszkodzonego sektora:

hdparm –write-sector 11233976 –yes-i-know-what-i-am-doing /dev/sdb

OSTRZEŻENIE: Spowoduje to zniszczenie danych w tym sektorze. Upewnij się więc, że naprawdę wiesz, co robisz. Jeśli tego sektora nie można odczytać, zastąpienie go zatrzyma błędy, ale będzie to oznaczać, że sektor będzie zawierał śmieci, co może uszkodzić ważny plik.

Zobacz to, aby uzyskać więcej informacji: http://www.sjvs.nl/forcing-a-hard-disk-to-reallocate-bad-sectors/

A jeśli na dysku znajduje się duża liczba (być może tysiące) uszkodzonych sektorów (widocznych jako Current_Pending_Sector, Offline_Uncorrectable lub Reallocated_Sector_Ct), lub jeśli jest nowy i nadal jest objęty gwarancją, lub jeśli liczba ta stale rośnie w miarę upływu czasu, należy wymienić dysk mimo to. Nie pozwól im powiedzieć, że przeniesienie naprawia dysk. Naprawia tylko znane uszkodzone sektory i zużywa sektory zarezerwowane do realokacji. Jeśli dysk ma tendencję do rozwijania większej liczby uszkodzonych sektorów, problem będzie po prostu wracał, za każdym razem uszkadzając niektóre dane.

Piotr
źródło
1

Chociaż niektóre części dysku są uszkodzone, nadal możesz kopiować dobre części dysku.

$ dd --help
...
 noerror   continue after read errors
...
sudo dd if=/dev/sdc1 of=/dev/sda1 conv=noerror
Max A.
źródło