Nie można zapisać zer do uszkodzonych sektorów / dysku twardego nie licząc ponownie przydzielonych sektorów

10

Mam napęd, który zgłasza, że ​​obecnie oczekującymi sektorami jest „45”. Użyłem złych bloków do identyfikacji sektorów i próbowałem zapisać do nich zera za pomocą dd .

Z tego, co rozumiem, kiedy próbuję zapisać dane bezpośrednio do uszkodzonych sektorów, powinno to spowodować realokację, zmniejszenie obecnych sektorów oczekujących o jeden i zwiększenie liczby przeniesionych sektorów.

Jednak na tym dysku zarówno nieprzetworzone wartości Reallocated_Sector_Ct, jak i Reallocated_Event_Count mają wartość 0, a dd kończy się niepowodzeniem z błędami we / wy, gdy próbuję zapisać zera w uszkodzonych sektorach. dd działa jednak dobrze, gdy piszę w dobrym sektorze.

# dd if=/dev/zero of=/dev/sdb bs=512 count=1 seek=217152
dd: error writing ‘/dev/sdb’: Input/output error

Czy to oznacza, że ​​mój dysk w jakiś sposób nie ma wolnych sektorów, które można by wykorzystać do realokacji? Czy mój dysk jest po prostu okropną osobą? (Dysk nie jest właściwie mój, pomagam przyjacielowi. Być może właśnie dostali tani dysk lub coś takiego.)

Jeśli jest to istotne, oto wynik działania smartctl -i :

Model Family:     Western Digital Caviar Green (AF)
Device Model:     WDC WD15EARS-00Z5B1
Serial Number:    WD-WMAVU3027748
LU WWN Device Id: 5 0014ee 25998d213
Firmware Version: 80.00A80
User Capacity:    1,500,301,910,016 bytes [1.50 TB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Fri Oct 18 17:47:29 2013 CDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

AKTUALIZACJA:
Uruchomiłem shredna dysku, co spowodowało, że Current_Pending_Sector wyzerował się. Jednak Reallocated_Sector_Ct i Reallocated_Event_Count są nadal zerowe, a dd jest teraz w stanie zapisywać dane w sektorach, w których wcześniej nie był w stanie. To prowadzi mnie do kilku innych pytań:

  • Dlaczego przeniesienia nie są odtwarzane przez dysk? Zakładam, że realokacja nastąpiła, ponieważ mogę teraz zapisywać dane bezpośrednio w sektorze i wcześniej nie mogłem.

  • Dlaczego shred spowodował realokację, a nie dd? Czy fakt, że shred zapisuje losowe dane zamiast samych zer, ma znaczenie?

MetaNova
źródło
Jakie są inne wartości SMART? Czy Uncorrectable Sector Countwięcej niż zero?
Synetech,
Offline_Uncorrectable, który, jak zakładam, jest tym samym, ma surową wartość 25.
MetaNova,
Tak, i wygląda na to, że napęd jest w naprawdę złym stanie. Możesz porównać wartości z tą tabelą , zwracając szczególną uwagę na czerwone rzędy (wartości krytyczne dla zdrowia). Najlepiej jest skopiować (nie przenosić) wszystko, co cenne / niezastąpione w innym miejscu, uruchomić ponownie, aby nadać mu cykl zasilania, a jeśli nadal działa, dobrze wyczyść (najlepiej przy użyciu własnych dedykowanych narzędzi ) i odłóż na bok jako wolne miejsce na nieistotne dane, takie jak pobrane filmy
Synetech,
Dzięki za twoją odpowiedź. Moim głównym pytaniem prawdopodobnie musiałoby być pytanie, dlaczego nie może dokonać realokacji tych sektorów. Czy nie powinien po prostu wykryć sektorów, które są złe, unikać ich w próżnię, ponownie przydzielić i przejść dalej? Nie martwię się o żadne dane na dysku, ponieważ od dawna zostały wyczyszczone. Mój przyjaciel nie chce mieć przycisku do papieru o pojemności 1,5 TB, jeśli może tego uniknąć.
MetaNova,
Wydaje się, że należy się tego spodziewać, ale może być tak, że ma złą głowę. Jeśli tak, to próba odczytania dysku będzie działać, dopóki nie spróbujesz uzyskać dostępu do talerza, który ma złą głowę, wtedy pojawi się mnóstwo błędów odczytu, ponieważ bez głowy do odczytu cały talerz jest niedostępny. Oczywiście mówi, że sektor 45 jest zły, co może być spowodowane tym, że został już ponownie przydzielony, ale SMART nie został zaktualizowany. Gwarancja wygasła kilka miesięcy temu, ale można spróbować je pocztą elektroniczną, a może zrobią zastępstwo uprzejmości.
Synetech,

Odpowiedzi:

9

Dysk WD15EARS (i większość innych ostatnio produkowanych dysków) korzysta z formatu zaawansowanego , co oznacza, że ​​rzeczywisty rozmiar sektora fizycznego tego dysku wynosi 4 KiB, a tradycyjny rozmiar sektora 512-bajtowego jest po prostu emulowany. Z tego powodu, jeśli pojedynczy sektor fizyczny 4 KiB ulegnie awarii, wszystkie 8 odpowiadających emulowanych sektorów 512-bajtowych stanie się nieczytelnych naraz.

(Dane Sector Size: 512 bytes logical/physicalwyjściowe smartctlsą niepoprawne, ponieważ niektóre dyski WD15EARS zgłaszają nieprawidłowy rozmiar sektora fizycznego  - najwyraźniej twój dysk ma wersję oprogramowania układowego, która jest zepsuta pod tym względem.)

Co więcej, gdy zapisywany jest pojedynczy emulowany sektor 512-bajtowy, napęd Advanced Format faktycznie musi odczytać cały sektor fizyczny 4 KiB, zmienić odpowiadającą mu 512-bajtową część, a następnie zapisać cały sektor fizyczny na nośniku. Jeśli nośnik jest dobry, ta operacja odczytu-modyfikacji-zapisu powoduje jedynie znaczne spowolnienie w porównaniu z dyskiem z prawdziwymi 512-bajtowymi sektorami fizycznymi. Jeśli jednak sektor fizyczny 4 KiB jest zły i nie można go odczytać, każda operacja zapisu, która nie przepisuje sektora całkowicie, zakończy się niepowodzeniem. Z tego powodu nie można wymuszać realokacji sektorów na takich dyskach korzystających ddz bs=512 count=1 - należy użyć co najmniej bs=512 count=8i upewnić się, że numer sektora wseek= opcja jest wielokrotnością liczby 8. (Zakłada się, że zworka „Windows XP” nie jest zainstalowana, w przeciwnym razie należy również wziąć pod uwagę przesunięcie wyrównania dodane przez tę zworkę.)

Innym powodem, dla którego wymuszanie ponownego przydzielenia ddmoże się nie powieść, jest to, że domyślnie Linux używa pamięci podręcznej w warstwie blokowej, aby uzyskać dostęp do urządzeń blokowych, co może powodować operacje odczytu, modyfikacji i zapisu w oprogramowaniu, co również nie powiedzie się, gdy napotkany zostanie nieczytelny sektor. Możesz dodać oflag=directopcję pomijania tej pamięci podręcznej dla urządzenia określonego przez of=...(istnieje również iflag=directopcja, która dotyczy urządzenia wejściowego).

Siergiej Własow
źródło
Dziękuję, dziękuję, dziękuję, to było bardzo pomocne. Przeczytałem etykietę na dysku i napisano „zaawansowany format”. Wiem, co to teraz oznacza ... Czy masz jednak pojęcie, że dysk nie zgłasza żadnych przeniesionych sektorów?
MetaNova,
1
„obecne sektory w toku” niekoniecznie są uszkodzonymi sektorami, dysk po prostu miał trochę problemów z odczytaniem go wcześniej podczas sprawdzania bezczynności, być może z powodu braku zapisu w tym miejscu przez długi czas i danych zaczyna zanikać (tj. osłabienie pola magnetycznego ). Zapisywanie nowych danych w tym sektorze odświeża dane w tym sektorze nowymi danymi, które są silnie uformowane na dysku. Dlatego jeśli piszesz do oczekującego sektora, dysk zakłada, że ​​jest teraz w porządku. Powinieneś spróbować odczytać dane z tych sektorów, aby potwierdzić, że są stabilne.
BeowulfNode42
dla osób, które nie dbają o żadne dane na dysku i nie chcą znaleźć dokładnej listy sektorów lub matematyki liczenia sektorów, po prostu dd całego dysku z blokiem wielkości wielokrotności 4KiB, na przykład 16 Mb. Następnie użyj rozmiaru bloku 4KiB dla ostatniej części dysku, która jest mniejsza niż poprzednio wybrany rozmiar bloku.
BeowulfNode42
0

Musiałem to zrobić niedawno i stwierdziłem, że uruchamianie niszczenia na całym dysku działa bardzo dobrze. Chociaż niszczenie jest bezużyteczne zgodnie z przeznaczeniem, z wyjątkiem dyskietek, robi to, co jest wymagane, aby samoleczenie przebiegało na złych blokach.

emil
źródło