Potwierdź, że błędy dysku twardego były spowodowane tym, że obudowa USB nie obsługuje napędów o dużej pojemności?

4

Nagle zacząłem pojawiać się błędy podczas kopiowania plików na zewnętrzny dysk twardy. Jest dużo wolnego miejsca: 1,64 TB bez 3,63 TB. Udało mi się ukończyć kopiowanie pliku, wykonując jedną z dwóch czynności:

  1. Najpierw należy usunąć niektóre duże pliki z zewnętrznego dysku twardego
  2. LUB umieszczenie dysku twardego w innej obudowie USB

Ponadto narzędzie do sprawdzania błędów systemu Windows 8 nie powiedzie się z błędem, chyba że zostanie użyta inna obudowa USB (w tym przypadku usunięcie dużych plików nie pomaga). Narzędzie wiersza polecenia CHKDSK zawsze działa i nie zgłasza błędów na dysku.

Jak mogę potwierdzić, że obudowa dysku twardego USB była przyczyną problemu? (Chciałbym potwierdzić, że problem nie dotyczy mojego dysku twardego i można z niego bezpiecznie korzystać.) I jak mogę określić pojemność obsługiwaną przez obudowę dysku twardego USB?


szczegółowe informacje:

Błąd podczas kopiowania dużego pliku:

wprowadź opis zdjęcia tutaj

  • Kod 0x80070057 wydaje się być dość ogólnym kodem.
  • Zaraz po otrzymaniu tego błędu pomyślnie skopiowałem plik 2 GB. Próbowałem ponownie skopiować ten sam plik (łącznie 4 TB) i otrzymałem ten sam błąd.
  • W dziennikach zdarzeń systemowych wydaje się, że jest to rejestrowane za każdym razem, gdy kopia kończy się niepowodzeniem: „Kopie w tle woluminu D: zostały przerwane z powodu awarii operacji we / wy woluminu D:”.

Błąd narzędzia sprawdzania błędów systemu Windows 8:

  • Po awarii otwiera przeglądarkę zdarzeń Windows z pewnym błędem związanym z kopiowaniem woluminu w tle. (Zapomniałem zapisać szczegóły na ten temat)

Sprzęt komputerowy:

  • Obudowa dysku twardego Enermax Jazz 3.5 USB (ta powoduje błędy; jest to dość stary model).
  • Stacja dokująca USB HDD Leto DATACLONE3.0 (Ten wydaje się nie zawierać błędów; znacznie nowszy model.)
  • Dysk twardy Western Digital 4 TB ZIELONY WD40EZRX

System plików:

  • GPT (dysk 2 MB MBR został sklonowany na dysk 4 TB, a następnie tablica partycji przekonwertowana na GPT)
  • NTFS

System:

  • Windows 8
  • Laptop Lenovo X1 Carbon

aktualizacja: Więcej szczegółów z zarejestrowanego zdarzenia „Kopie w tle woluminu D: zostały przerwane ...”:

System 
  - dostawca 
   [Nazwa] volsnap 
  - EventID 14 
   [Kwalifikatory] 49158 
   Poziom 2 
   Zadanie 0 
   Słowa kluczowe 0x80000000000000 
  - TimeCreated 
   [SystemTime] 2015-01-24T21: 23: 54.296013300Z 
   EventRecordID 1063256374 
   System kanałów 
   Komputer X1-Carbon 
   Bezpieczeństwo 
- EventData 
   \ Device \ HarddiskVolumeShadowCopy6 
   RE: 
   RE: 
   0000000003003000000000000E0006C00A0000000D0000C002000000000000000000000000000000 

aktualizacja 2:

Błąd montażu napędu 4 TB w Ubuntu ze stacją dokującą działającą w systemie Windows:

Błąd montowania / dev / sdc1 at / media / daniel / DeskStar: Wiersz polecenia `mount -t" ntfs "-o" uhelper = udisks2, nodev, nosuid, uid = 1000, gid = 1000, dmask = 0077, fmask = 0177 Wyjście „” / dev / sdc1 ”„ / media / daniel / DeskStar ”z niezerowym statusem wyjścia 13: ntfs_attr_pread_i: ntfs_pread nie powiodło się: Błąd wejścia / wyjścia
Nie można odczytać mapy bitowej NTFS $: Błąd wejścia / wyjścia
NTFS jest albo niespójny, albo występuje awaria sprzętowa, albo jest
Sprzęt SoftRAID / FakeRAID. W pierwszym przypadku uruchom polecenie chkdsk / f w systemie Windows
następnie dwukrotnie uruchom ponownie system Windows. Zastosowanie parametru / f jest bardzo duże
ważny! Jeśli urządzeniem jest SoftRAID / FakeRAID, najpierw aktywuj
i zamontuj inne urządzenie w katalogu / dev / mapper /, (np
/ dev / mapper / nvidia_eahaabcc1). Zobacz dokumentację „dmraid”
po więcej szczegółów.

Dysk nie jest wymieniony na fdisk -l, więc nie mogę spróbować dd... Próbowałem ponownie podłączyć się do systemu Windows: nie ma problemu; Narzędzie do sprawdzania błędów właściwości dysku systemu Windows nie zgłasza błędów.

Również:

Próbowałem użyć ddna (problem?) Obudowie z innym dyskiem twardym 2 TB:

  • Brak odczytu błędu skip=0
  • Brak odczytu błędu skip=SOMEWHERE_NEAR_MIDDLE_OF_DRIVE
  • Błędy odczytu sektorów na końcu lub blisko końca dysku:
daniel @ computer: ~ $ sudo dd bs = 512 if = / dev / sdb1 of = test skip = 3907026942 count = 1
dd: '/ dev / sdb1': nie można pominąć: niepoprawny argument
0 + 0 rekordów w
0 + 0 zapisów
0 bajtów (0 B) skopiowanych, 0,000210598 s, 0,0 kB / s
Leftium
źródło
Nie „robię” systemu Windows, ale prawdopodobnie okaże się, że oprogramowanie układowe / sprzęt kontrolera obsługuje tylko dyski 2 TB. Przy tej wielkości wprowadzono zmianę w logice (dotyczy GPT, ale myślę, że mapowanie dysku)
davidgo,
(1) Proszę zamieścić błędy rejestrowane w Podglądzie zdarzeń. (2) Czy D: dysk wewnętrzny? (3) Jeśli chodzi o limity czasu kopiowania w tle, postaraj się postępować zgodnie z tym artykułem, aby ustawić klucz rejestru HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\SPP, nowy DWORD o nazwie CreateTimeout, wartość 12000000 (2 * 10 * 60 * 1000 = 20 minut) w systemie dziesiętnym, a następnie uruchom ponownie.
harrymc
@harrymc: D: jest dyskiem zewnętrznym. Do pytania dodałem szczegóły zarejestrowanego błędu.
Leftium
Zastanawia mnie kopia woluminu w tle na dysku zewnętrznym. Czy w oknie dialogowym Właściwości dysku zewnętrznego masz kartę Kopie w tle? Aby wyłączyć ochronę systemu na dysku, przejdź do Panel sterowania / Ochrona systemu / systemu, kliknij D :, jeśli ochrona jest włączona, a następnie kliknij Konfiguruj, wybierz Wyłącz ochronę systemu, a następnie OK.
harrymc
@harrymc: Ani D:, ani C: nie mają karty Kopie w tle. W Panelu sterowania / ochronie systemu / systemu „Ochrona” jest „Włączona” dla C: ale „Wyłączona” dla D:
Leftium

Odpowiedzi:

4

Jeśli jest to dysk USB i jest on związany z rozmiarem, oznacza to, że dysk USB nie przetwarza poprawnie żądania zapisu sektora (i prawdopodobnie również odczytu). Rozmiar pliku nie ma znaczenia. Przyczyną jest to, że większy plik ma „części” wychodzące poza adresowalną granicę.

Ze względu na fragmentację dysku trudno jest potwierdzić lub odrzucić tę hipotezę, ale można wypróbować dowolne narzędzie, które wyświetla mapę fragmentacji dysku. Powinno to wyświetlić duży dysk z początkiem, który się zapełnia, i nic poza pewnym punktem. Zwłaszcza na końcu.

Na dysku FAT32 można spróbować wypełnić dysk małymi plikami, każdy o wielkości 8 KB, dopóki obszar „osiągalny” nie zostanie zapełniony, a dysk stanie się niemożliwy do zapisu. Ale dysk to NTFS, ale metoda nie jest tak naprawdę bardzo precyzyjna ani pewna.

Jeśli to w ogóle możliwe, zamontowałbym dysk w dystrybucji Linux na żywo. W tym momencie możesz spróbować odczytać dysk po jednym sektorze na raz:

fdisk -l

powie ci, ile 512-bajtowych bloków znajduje się na dysku zewnętrznym. Następnie

dd bs=512 if=/dev/sdc of=test skip=NNNNN count=1

zażąda odczytu sektora NNNNN (one-based :-)).

Jeśli chodzi o ograniczenie do NNNNN, zauważysz, że:

N=1         it works
N=MAX_NUM   it fails
N=MAX_NUM/2 it fails

...

więc możesz zacząć od klasycznego algorytmu bisekcji i ustalić, gdzie znajduje się sektor krytyczny „C” (każdy sektor przed C jest czytelny, a później nie). Jeśli taki sektor istnieje, masz albo niesamowicie dziwne uszkodzenie sprzętu, albo dowód, którego szukałeś, od winy obudowy.

Aktualizacja - znalezienie granicy przez podzielenie na dwie części: przykład

Powiedzmy, że dysk ma pojemność 4 TB, czyli 8 000 000 000 sektorów. Wiemy, że sektor 1 jest czytelny, a sektor 8 miliardów nie. Niech READABLE będzie równa 1, niech UNREADABLE będzie równa 8. Wówczas algorytm:

 let TESTING be (READABLE + UNREADABLE)/2
 if sector TESTING is readable then READABLE becomes equal to TESTING
 else, UNREADABLE becomes equal to TESTING.
 Lather, rinse, repeat with the new values of (UN)READABLE.
 When two consecutive values of TESTING are obtained, that's your boundary.

Wyobraźmy sobie, że granica leży w sektorze 3.151.592.653 z powodu jakiegoś dziwnego błędu w obudowie.

 first pass: testing = (1 + 8000000000)/2 = 4000000000.
 4,000,000,000 is unreadable, so replace 8,000,000,000 with 4,000,000,000
 second pass: testing (1 + 4M)/2 = 2M
 sector 2M is readable, so replace 1 with 2,000,000,000
 third pass: testing (2M + 4M)/2 = 3M
 sector 3,000,000,000 is readable
 fourth pass: testing (3M + 4M)/2 = 3,500,000,000 which is UNREADABLE
 fifth: (3 + 3.5) / 2 = 3,250,000,000 UNREADABLE
 ...

W ten sposób CZYTELNY i NIEDOSTĘPNY zbliża się bliżej nieznanej granicy z obu kierunków. Gdy są wystarczająco blisko, możesz nawet przejść do wszystkich sektorów pomiędzy.

Aby zlokalizować granicę, należy odczytać tylko log2 (max - min) = log2 (4 TB - 0) = log2 (4 TB) = log2 (2 40 ) = 40 (właściwie myślę, że 42) sektorów. Biorąc pod uwagę 30-calowe opóźnienie resetu na obudowie, gdy wystąpi błąd odczytu, powinno to wynosić najwyżej 20 minut; prawdopodobnie znacznie mniej.

Gdy masz już granicę B, aby potwierdzić, że jest to granica, możesz wykonać sekwencyjny odczyt dużych fragmentów przed B (nie potrwa to zbyt długo), może jeden megabajt na każdy gigabajt; a następnie losowe próbkowanie sektorów poza B. Na przykład pierwsze 4 * 63 sektory poza granicą, następnie jeden sektor co 3905 (lub każdy RAND (4000, 4100)), aby uniknąć uderzenia zawsze w ten sam talerz magnetyczny.

Ale tak naprawdę, jeśli znajdziesz zachowanie podobne do granicy i potwierdzisz, że przy innej klauzuli nie ma takiej granicy - cóż, ogłosiłbym (zamkniętą) sprawę.

LSerni
źródło
To najlepsza jak dotąd odpowiedź. Adresowalna granica granic jest najbardziej prawdopodobną przyczyną, ale trudno ją potwierdzić. Zwłaszcza 4 TB przez USB 2. Odczyt każdego sektora zajmie minimum 2 dni. Wątpię, aby odczyt sektor po sektorze osiągnął maksymalną prędkość 20 MB / s USB 2. (Anulowałem, CHKDSK /rponieważ zajęło to kilka tygodni.) Ponadto: Boję się nieokreślonego zachowania obudowy teraz, gdy trudne dysk ma dane przekraczające hipotetyczny limit adresowalny.
Leftium
Nie, nie, nie musisz czytać każdego sektora. Poprawiam odpowiedź ...
LSerni,
@Iserni: OK, lepiej rozumiem twoją odpowiedź. Co dzieje się, gdy ddczyta pusty sektor? Czym różni się od błędu podczas odczytu prawidłowego sektora (ale nie można go rozwiązać przez kontroler obudowy). BTW dd(„niszczyciel dysku”) brzmi jak niebezpieczne polecenie: S
Leftium
Zależy to od podsystemu we / wy. Otrzymasz błąd; który błąd dokładnie to inna sprawa. Teoretycznie Error: attempt to access beyond end of devicebez zwłoki. Jeśli zagranie zagra faul, prawdopodobnie dostaniesz end_request: I/O error, dev sdc, sector 3141592700opóźnienie.
LSerni
Jeśli chodzi o dd(tak naprawdę to dumper dyskowy :-)), jest to niebezpieczne, do cholery - może czytać z dysku, ale może także pisać , całkowicie nadpisując wszystko, co znajdzie. Zawsze upewnij się, że „if =” wskazuje na coś, co chcesz przeczytać, a „of =” wyświetla coś, co możesz wygodnie zastąpić, na przykład plik lub /dev/null.
LSerni
1

OK, chyba to wymyśliłem:

  • Przejrzyj dmesgdziennik, aby zweryfikować pamięć adresowalną obsługiwaną przez urządzenie USB.
  • Wydaje się, że Linux uniemożliwia użycie dysku twardego, jeśli przekracza on adresowalną pamięć urządzenia USB. (Z kilkoma błędami).
  • Windows pozwala na użycie dysku twardego, nawet jeśli przekracza on adresowalną pamięć urządzenia USB. (Do momentu przekroczenia limitu adresu.) (Więc problemem był ... Windows?)

Ten sam napęd, różne obudowy dają dwie różne zgłaszane pojemności:

  • 7814037168 512-byte logical blocks: (4.00 TB/3.63 TiB)
  • 3519069872 512-byte logical blocks:(1.80 TB/1.63 TiB)

Pełne szczegóły:

1. dmesgprzy podłączaniu „nowoczesnej” stacji dokującej z napędem 4 TB:

[93507.922275] USB 1-1.2: nowe szybkie urządzenie USB numer 17 z wykorzystaniem ehci-pci
[93508.087948] usb 1-1.2: Znaleziono nowe urządzenie USB, idVendor = 067b, idProduct = 2773
[93508.087959] USB 1-1.2: Ciągi nowych urządzeń USB: Mfr = 1, Product = 2, SerialNumber = 3
[93508.087964] USB 1-1.2: Produkt: Kontroler mostu ATAPI-6
[93508.087969] USB 1-1.2: Producent: Prolific Technology Inc.
[93508.087973] USB 1-1.2: Numer seryjny: 0123456789000000110
[93508.088621] pamięć USB 1-1.2: 1.0: Wykryto urządzenie pamięci masowej USB
[93508.089092] scsi24: pamięć USB 1-1.2: 1.0
[93509.087318] scsi 24: 0: 0: 0: Prolific Prolific ATAPI-6 Bridge C MPAO PQ: 0 ANSI: 0
[93509.087836] sd 24: 0: 0: 0: Dołączony ogólny scsi typ sg2 0
[93509.088684] sd 24: 0: 0: 0: [sdb] Bardzo duże urządzenie. Próba użycia CZYTAJ POJEMNOŚĆ (16).
[93509.089837] sd 24: 0: 0: 0: [sdb] 7814037168 512-bajtowe bloki logiczne: (4,00 TB / 3,63 TiB)
[93509.090945] sd 24: 0: 0: 0: [sdb] Ochrona przed zapisem jest wyłączona
[93509.090958] sd 24: 0: 0: 0: [sdb] Mode Sense: 03 00 00 00
[93509.092819] sd 24: 0: 0: 0: [sdb] Nie znaleziono strony trybu buforowania
[93509.092832] sd 24: 0: 0: 0: [sdb] Zakładając pamięć podręczną dysku: zapisz przez
[93509.094321] sd 24: 0: 0: 0: [sdb] Bardzo duże urządzenie. Próba użycia CZYTAJ POJEMNOŚĆ (16).
[93509.100539] sd 24: 0: 0: 0: [sdb] Nie znaleziono strony trybu buforowania
[93509.100545] sd 24: 0: 0: 0: [sdb] Zakładając pamięć podręczną napędu: zapisz przez
[93509.170090] sdb: sdb1
[93509.171931] sd 24: 0: 0: 0: [sdb] Bardzo duże urządzenie. Próba użycia CZYTAJ POJEMNOŚĆ (16).
[93509.176059] sd 24: 0: 0: 0: [sdb] Nie znaleziono strony trybu buforowania
[93509.176078] sd 24: 0: 0: 0: [sdb] Zakładając pamięć podręczną dysku: zapisz przez
[93509.176086] sd 24: 0: 0: 0: [sdb] Podłączony dysk SCSI

2. dmesgprzy podłączaniu starszej obudowy z napędem 4 TB:

[89939.561869] USB 1-1.2: nowe szybkie urządzenie USB numer 14 korzystające z ehci-pci
[89939.656581] usb 1-1.2: Znaleziono nowe urządzenie USB, idVendor = 152d, idProduct = 2338
[89939.656592] usb 1-1.2: Ciągi nowych urządzeń USB: Mfr = 1, Product = 2, SerialNumber = 5
[89939.656598] USB 1-1.2: Produkt: USB na ATA / ATAPI Bridge
[89939.656602] usb 1-1.2: Producent: JMicron
[89939.656606] USB 1-1.2: Numer seryjny: 0613316A1498
[89939.658334] pamięć USB 1-1.2: 1.0: Wykryto urządzenie pamięci masowej USB
[89939.658805] scsi20: pamięć USB 1-1.2: 1.0
[89940.659147] scsi 20: 0: 0: 0: Bezpośredni dostęp HGST HMS 5C4040ALE640 A580 PQ: 0 ANSI: 2 CCS
[89940.659959] sd 20: 0: 0: 0: Dołączony ogólny scsi typ sg2 0
[89940.661373] sd 20: 0: 0: 0: [sdb] 3519069872 512-bajtowe bloki logiczne: (1,80 TB / 1,63 TiB)
[89940.662410] sd 20: 0: 0: 0: [sdb] Ochrona przed zapisem jest wyłączona
[89940.662424] sd 20: 0: 0: 0: [sdb] Mode Sense: 00 38 00 00
[89940.663438] sd 20: 0: 0: 0: [sdb] Żądanie danych w pamięci podręcznej nie powiodło się
[89940.663446] sd 20: 0: 0: 0: [sdb] Zakładając pamięć podręczną dysku: zapisz przez
[89940.667752] sd 20: 0: 0: 0: [sdb] Żądanie danych w pamięci podręcznej nie powiodło się
[89940.667761] sd 20: 0: 0: 0: [sdb] Zakładając pamięć podręczną napędu: zapisz przez
[89940.684862] sdb: nieznana tablica partycji
[89940.687887] sd 20: 0: 0: 0: [sdb] Żądanie danych w pamięci podręcznej nie powiodło się
[89940.687893] sd 20: 0: 0: 0: [sdb] Zakładając pamięć podręczną napędu: zapisz przez
[89940.687897] sd 20: 0: 0: 0: [sdb] Podłączony dysk SCSI

Leftium
źródło
To naprawdę interesujące: „Bardzo duże urządzenie. Próbuję użyć READ CAPACITY (16).”. Wygląda na to, że istnieje specyficzne wywołanie API do zapytania o pojemność, które jest obsługiwane tylko przez dysk Prolific. Później przejrzę źródła, aby sprawdzić, skąd pochodzi ta wiadomość.
LSerni
1
OK, to jest obudowa . Stary używa wewnętrznego 32-bitowego rejestru do odczytu pojemności LBA napędu. Jest to 7814037168 sektorów, których wartość szesnastkowa to 0x1'D1C0'BEB0. Z powodu ograniczenia rozmiaru, odczytywane są tylko dolne 32 bity i otrzymujesz 0xD1C0'BEB0, który jest 3519069872 dziesiętny. Obudowa nie zgłasza błędu : po prostu upuszcza „dodatkowy” bit. Nie ma sposobu, aby uzyskać 4 TB w starej jednostce. ( Być może teoretycznie przy dokładnym planowaniu partycji można sformatować dysk za pomocą jednej partycji 1,8 TB i jednej partycji 2,2 TB - pierwsza widoczna w starej obudowie, obie widoczne w nowej).
LSerni
0

Istnieje kilka sposobów przetestowania dysku twardego. Pobierz oprogramowanie o nazwie „HDTune”. Jest to program płatny, ale ma wersję próbną, która działa przez 30 dni z pełną funkcjonalnością. Możesz go używać do sprawdzania uszkodzonych sektorów, sprawdzania stanu dysku twardego. W każdym razie miałeś złe sektory, możesz spróbować naprawić to za pomocą Regeneratorów HDD, Pobierz Hirens, których osobiście używam.

Upewnij się, że nie masz żadnych dysków twardych umieszczonych poza tym, który chcesz przetestować. jest bootowalny, możesz go wypalić na dysku CD lub USB.

następnie sugeruję sprawdzenie kabli. Zwłaszcza na dyskach zewnętrznych, zwykle te błędy są spowodowane brakiem zasilania, spróbuj podłączyć go do innego komputera lub zmienić kable, jeśli masz dodatki, a następnie sprawdź, czy nadal nie działa.

g chłopcze
źródło
Istnieje również kilka poprawek w Internecie, jeśli przeprowadzasz małe badania, takie jak poprawka Microsoft: support.microsoft.com/kb/982736
g boy
możesz również wypróbować ten sugerowany przez @Overmind lub ten: Wykonaj poniższe proste kroki, aby rozwiązać kod błędu 0x80070057: - Kliknij Start> Panel sterowania> Data, godzina, język i opcje regionalne> następnie kliknij Region i opcje językowe. Kliknij kartę Formaty, a następnie kliknij Ustawienia dodatkowe. W polu Symbol dziesiętny wpisz. (kropka), a następnie dwukrotnie kliknij przycisk OK. Zrestartuj komputer. Mam nadzieję, że to pomoże
g chłopak
@g boy: Próbowałem już tego, zanim opublikowałem to pytanie (i było już ustawione na to ustawienie). Dlatego powiedziałem: „kod 0x80070057 wydaje się być dość ogólnym kodem”. Wydaje się, że istnieje wiele przyczyn, z których żadna nie jest związana z moją sytuacją (z wyjątkiem samego kodu błędu).
Leftium
Czy próbowałeś również mojej pierwszej sugestii? co się stało, gdy próbujesz użyć go na innym komputerze?
g chłopiec
-1

Dziwne, że generuje błąd przy plikach powyżej 4 GB. Ponieważ FS to NTFS, ograniczenie jest wykluczone.

Podejrzewam, że to błąd braku synchronizacji bufora.

Spróbuj: przejdź do regedit -> HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\System Utwórz nową wartość DWORD o nazwie CopyFileBufferedSynchronousIo. Zmień jego wartość z domyślnej 0 na 1.

Inne kwestie do rozważenia: Czy masz bardzo duże ścieżki i nazwy plików (na przykład ponad 255 znaków)? Czy używasz dodatkowych języków w systemie operacyjnym lub innych niż domyślne ustawienie formatu regionalnego / klawiatury lub formatu godziny / daty? (Choć to dziwne, może to zepsuć wystarczająco dużo rzeczy w oknach). Alternatywnie kontroler dysku zewnętrznego może nie być w stanie zająć więcej niż 2,0 TB. -edit- Czy możesz opublikować zrzut ekranu z dokładnie używaną obecnie przestrzenią?

Overmind
źródło