Jak wymusić remap sektorów zgłoszonych w SMART C5 (bieżąca liczba sektorów oczekujących)?

38

Wartość SMART C5 mojego dysku twardego Samsung HM640JJ (w laptopie HP Pavilion dv6) to „żółty status = przestroga”

C5 miał wczoraj 10, a dzisiaj 21.

C4 (Reallocation Event Count) = 0 i 05 (Reallocated Sectors Count) = 0

Jak zmusić oprogramowanie układowe do ponownego przydzielenia?

  • Usunąłem partycje, odtworzyłem je ponownie i sformatowałem cały dysk.
  • Pobiegłem chkdsk /r /f
  • Uruchomiłem narzędzie do sprawdzania dysku BIOS i inne narzędzia diagnostyczne / naprawcze
edteke
źródło
Korzystam z dysku rozruchowego spinrite6 na poziomie 2, aby to zrobić .... grc.com/intro.htm
Moab

Odpowiedzi:

118

Krótka odpowiedź: napisz coś nowego w sektorze (nawet zera - co robi długi format).

Długa odpowiedź

Dyski twarde próbują dziś ukryć uszkodzone sektory przed komputerem hosta. Komputer hosta prosi dysk o zwrócenie zawartości określonego numeru sektora. Zwykle dysk odczytuje sektor, zwraca go do komputera hosta i wszystko jest w porządku.

Dysk twardy wie, czy odczytana wartość jest poprawna, czy nie, ponieważ dysk używa kodu korekcji błędów (ECC) w celu sprawdzenia poprawności odczytanej zawartości. Jeśli dysk wykryje, że zawartość sektora jest nieprawidłowa, ponowi próbę odczytu. Mamy nadzieję, że jeśli po prostu przeczyta go ponownie, może uzyskać poprawną zawartość sektora. Będzie kontynuował próbę, aż osiągnie dobrą wartość lub osiągnie limit czasu (formalnie znany jako limit czasu wykonania polecenia lub CCTL ).

Podczas tych ponownych prób napęd będzie wyglądał na martwy; ponieważ nie reaguje już na polecenia .

Zapasowe sektory

Większość współczesnych dysków zawiera wiele „zapasowych” sektorów (np. 1 024 wolnych sektorów). Jeśli dysk rozpozna sektor jako zły, przestanie go używać. Wszelkie żądania odczytu lub zapisu w tym uszkodzonym sektorze zostaną w sposób przejrzysty przekierowane do sektora zapasowego. Wyznaczenie złego sektora i przeniesienie jego danych do sektora zapasowego nazywa się zdarzeniem realokacji . A łączna liczba sektorów, które zostały realokowane (a więc ile z twoich wolnych sektorów zostało wykorzystanych), to liczba sektorów realokowanych .

W tym przykładzie z jednego z moich twardych dysków 64 sektory okazały się złe. Oznacza to, że wezwano do użycia 64 wolnych sektorów napędu:

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ===
(05) Reallocated Sector Count  192      192    140        64

Na tym samym dysku twardym odbyły się 4 zdarzenia realokacji . Oznacza to, że były cztery sytuacje, w których dysk oznaczał sektory jako złe i zamiast tego używał sektorów zapasowych.

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ===
(05) Reallocated Sector Count  192      192    140         64
(C4) Reallocated Event Count   196      196    0            4

Co jeśli nie będzie w stanie odczytać danych?

Te działania polegające na ponownym czytaniu sektorów, zużywaniu części zamiennych, wszystko za plecami komputera, są dobrą rzeczą. Oznacza to, że system operacyjny hosta nie musi radzić sobie z problemem awarii sektorów. Sam dysk może sam poradzić sobie z tymi szczegółami.

Dodatkowe rozmowy : W dawnych czasach dysk twardy wysyłany był z przymocowaną naklejką. Ta naklejka zawierała listę wad fabrycznych ; lista wszystkich znanych złych miejsc na dysku.

wprowadź opis zdjęcia tutaj

Jeśli wykonałeś formatowanie niskiego poziomu napędu, musiałeś użyć narzędzia do wpisania wszystkich lokalizacji złych miejsc w głowicy cylindrów .
Dyski SCSI mają polecenie, IOCTL_DISK_REASSIGN_BLOCKSktóre każe im przydzielić złe miejsce na dysku po wykryciu go przez system operacyjny. W napędach IDE wszystko dzieje się automatycznie, bez potrzeby interwencji systemu operacyjnego.

Idealnie byłoby, gdyby dysk rozpoznał awarię sektora, przeniósł dane do sektora zapasowego i nigdy więcej nie używałby pierwotnego sektora. Ale co się stanie, jeśli dysk nie będzie w stanie poprawnie odczytać sektora?

Oto jakie Pending Sectorssą. Dysk wykrył awarię sektora i należy go przypisać do rezerwy. Ale nie może tego zrobić, dopóki nie może z powodzeniem odczytać danych. Gdy dysk wie, że sektor jest zły i wymaga ponownego mapowania, ale nie może tego jeszcze zrobić, ponieważ czeka na dobry odczyt z sektora: to się nazywa liczba oczekujących sektorów :

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ====
(05) Reallocated Sector Count  192      192    140          64
(C4) Reallocated Event Count   196      196    0             4
(C5) Current Pending Sector    100      100    0             2

Mój dysk twardy ma 2 sektory, które dysk rozpoznaje jako zły, ale nie można go jeszcze ponownie przydzielić. Jeśli odczytasz jeden z tych „sektorów oczekujących”, napęd prawdopodobnie spróbuje ponownie (i spróbuje ponownie, i spróbuje ponownie), a ostatecznie zwróci błąd odczytu do systemu operacyjnego hosta:

wprowadź opis zdjęcia tutaj

Porzuć oczekujący sektor, a zostanie on ponownie przydzielony

Istnieją dwa sposoby, aby dysk mógł w końcu ponownie przydzielić sektor i wykorzystać inny wolny sektor:

  • wreszcie dobrze się czyta
  • nie obchodzi Cię już, co jest w sektorze

Jeśli dysk w końcu odczyta sektor, to wie, że może dokonać realokacji sektora.

Innym sposobem, w jaki dysk może ponownie przydzielić sektor, jest powiadomienie go, że zawartość tego sektora jest nieistotna; że już cię to nie obchodzi. Jak to robisz?

Pisząc coś nowego w branży.

Ilekroć czytasz z sektora na dysku twardym lub piszesz do niego, musisz odczytać / zapisać cały 512-bajtowy sektor 1 . Nie możesz napisać tylko części sektora. Kiedy system operacyjny zapisuje dane w sektorze, musi określić całe 512 bajtów. Jeśli powiesz dyskowi twardemu, że chcesz, aby ta nowa zawartość zastąpiła ten zły sektor, oznacza to, że nawet nie obchodzi Cię, co jest obecnie w złym sektorze. Następnie może realokować zły sektor do jednej z części zapasowych, a sektor nie jest już w toku .

Właśnie dlatego, gdy ludzie pytają o ich posiadanie Current Pending Sectors, powszechną radą jest użycie narzędzia (takiego jak Data Digital LifeGuard firmy Western Digital), aby zapisać wszystkie zera na dysku.

wprowadź opis zdjęcia tutaj

Pisząc zera do każdego sektora na dysku, mówisz dyskowi, że może w końcu dokonać realokacji wszystkich tych nieznośnych oczekujących sektorów . Po wyczyszczeniu wszystko Pending Sectorsstanie się Reallocated Sectors:

ID                             Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ====
(05) Reallocated Sector Count  192      192    140          66
(C4) Reallocated Event Count   196      196    0             5
(C5) Current Pending Sector    100      100    0             0

Uwaga: użycie narzędzia „niskiego poziomu”, takiego jak Data Digital LifeGuard firmy Western Digital, nie jest absolutnie konieczne. Jeśli poinstruujesz system Windows, aby wykonał pełny format woluminu (tj. Format inny niż szybki ), zapisuje zera w każdym sektorze woluminu.

System archiwizacji systemu operacyjnego obsługuje oznaczanie sektorów jako złe

Uzbrojeni w tę wiedzę zbadamy często mylący scenariusz.

Przed pojawieniem się zintegrowanej elektroniki napędowej (IDE) system operacyjny hosta był odpowiedzialny za wykrywanie uszkodzonych sektorów, ponawianie odczytów, przenoszenie danych do innego sektora i oznaczanie starych sektorów jako złe.

Jeśli miałbyś uruchomić chkdsk /r c:system operacyjny hosta, rozpoznałby, że „oczekujące” sektory są złe, i oznaczył je jako złe, i nigdy nie próbowałby ich użyć ponownie:

> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.

        12 KB in bad sectors.

Przyjmując więc dysk twardy o wielkości 512 bajtów, 12 KB „sektorów oczekujących” lub w tym przykładzie 12 KB oznaczonych przez system operacyjny jako „uszkodzone sektory”, co odpowiada 24 lub dziesiętnemu 0x18, jak pokazano w narzędziu dyskowym SMART takie jak informacje o dysku Crystal:

ID   Attribute Name            Current  Worst  Threshold  Raw  
=============================  =======  =====  =========  ====
(C5) Current Pending Sector    100      100    0            18

Uwaga : Narzędzie Data LifeGuard v1.31 firmy Western Digital (najnowsze na 31.08.2017) nie wydaje się poprawnie wyświetlać bieżących wartości licznika SMART „Raw”.

Teraz, jeśli wykonasz pełny format (który zapisuje zera do każdego sektora w wolumenie) :

wprowadź opis zdjęcia tutaj

Oznacza to, że wszystkie sektory, które miały Pendingzostać realokowane. System archiwizacji może teraz bezpiecznie korzystać z tych sektorów. Aby poinstruować system plików, że te sektory nie są już „złe” , należy wykonać opcję, w której ponownie ocenia złe sektory:

>chkdsk c: /B

gdzie mówi dokumentacja polecenia

/B              NTFS only: Re-evaluates bad clusters on the volume
                (implies /R)

Lub

Według: https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx

/B              NTFS only: Clears the list of bad clusters on the volume and 
                  rescans all allocated and free clusters for errors. /b includes
                  the functionality of /r. Use this parameter after imaging a
                  volume to a new hard disk drive.

To było całe pisanie lotty i całe zrzuty ekranu lotty, dla czegoś, co nigdy nie zostanie przeczytane.

Ian Boyd
źródło
Mam plik 200 MB, który ma problem z 87%. Mam 3 oczekujące sektory. Próbowałem zaszyfrować plik, aby uzyskać dobre odczyty i zgłosić roszczenia o przeniesienie sektorów, ale nie są one ponownie przydzielane! Wyniki mieszania: ok, nie, ok, ok, nie, nie. Za każdym razem, gdy system operacyjny generował kilka błędów dysku w przeglądarce zdarzeń i przy poprawnych skrótach, zawieszał się na pół minuty na 87%. Wszystkie skróty są równe. C5 to wciąż 3, a C4 wciąż 0. Jaka jest Twoja opinia na ten temat?
Mark Jeronimus
@MarkJeronimus Spróbuj użyć wycieraczki pliku, która zapisze wszystkie zera (lub wszystkie losowe dane) do pliku. To powinno sprawić, że zorientujesz się, że nie obchodzi Cię już te sektory.
Ian Boyd
Zrobiłem pełny format, ale nadal nie ma zmian.
Mark Jeronimus
2
Jednej rzeczy nie do końca rozumiem: czy można (a) pokazać, które pliki zawierają bieżące sektory C5, i (b) „nuke” te sektory, tj. Przenieść je do C6 i przestać je czytać? Nie chcę, aby mój dysk twardy utknął w niekończącym się nieudanym cyklu odczytu; wolałby zaciemnić te sektory i usunąć dane pliki (ręcznie przywracając je z innego źródła, jeśli są ważne).
MM
1
Nie chcę jednak wyzerować całego dysku, po prostu obejść ten zły fragment. Przyjrzyjmy się temu programowi, dzięki
MM
5

Nie musisz nic robić - jeszcze. Liczba realokacji oznacza „dysk znalazł uszkodzony sektor i pomyślnie go realokował”. Oprogramowanie układowe już rozwiązało problem.

Musisz tylko pamiętać, że dysk zaczyna się zawodzić. W pewnym momencie w przyszłości na dysku nie pozostaną wolne sektory do realokacji i utracisz dane. Jeśli jakiś ważny blok zostanie utracony, możesz stracić wszystkie dane na dysku.

Miej oko na tę wartość lub kup nowy dysk, aby o nim zapomnieć.

Aaron Digulla
źródło
3

Miałem dobre doświadczenie z opisaną tutaj metodą https://www.smartmontools.org/wiki/BadBlockHowto . Mój dysk hałasował i przestał działać, więc używam inteligentnego raportu i formuły, aby obliczyć zły blok i użyć dd, aby go wyczyścić. Miałem szczęście, ponieważ smart wciąż zgłasza bieżącą liczbę sektorów, ale dysk działa od około 2 lat. Kupiłem zamiennik, ale nigdy go nie użyłem. Wydaje mi się, że mądry też nie jest tak dokładny.

Gigamegs
źródło
oflag = bezpośrednia opcja dla dd podczas pisania zer w złych lokalizacjach w celu wymuszenia realokacji (jak sugerowano w tym linku) była częścią, której szukałem. Dzięki!
Anton
2

Może nie znasz tego narzędzia: HD Sentinel

Hard Disk Sentinel (HDSentinel) to oprogramowanie do monitorowania i analizy dysków SSD i HDD dla wielu systemów operacyjnych. Jego celem jest wyszukiwanie, testowanie, diagnozowanie i naprawa problemów z dyskiem twardym, raportowanie i wyświetlanie stanu dysków SSD i HDD, obniżenie wydajności i awarie. Hard Disk Sentinel zawiera pełny opis tekstowy, wskazówki i wyświetla / raportuje najbardziej kompleksowe informacje na temat dysków twardych i dysków półprzewodnikowych wewnątrz komputera oraz w obudowach zewnętrznych (dyski twarde USB / dyski twarde e-SATA). Dostępnych jest wiele różnych alertów i opcji raportów, aby zapewnić maksymalne bezpieczeństwo cennych danych.

To wydaje się być doskonałym narzędziem do wykonywania takich działań. Ale uważaj, niektóre opcje uruchamiania mogą całkowicie zniszczyć dane.

Estevan TH.
źródło
1

Musisz użyć narzędzia zapisującego w każdym sektorze dysku. W przeciwnym razie nie da się tego zrobić. Jeśli dysk przydzieli sektor zapasowy i ponownie mapuje, jakie dane powinien umieścić w sektorze zapasowym? Nie ma pojęcia, ponieważ próba odczytu z istniejącego sektora nie powiodła się. Tylko operacja zapisu może usunąć błąd.

David Schwartz
źródło
Formatowanie całego dysku twardego to operacja zapisu w każdym sektorze? Sformatowałem już dysk (polecenie formatowania oparte na systemie Windows, brak „szybkiego formatowania”). Dzięki
edteke
2
Szybki format nie jest operacją zapisu dla każdego sektora, zwykle jest to zwykły format. Zawsze możesz użyć DBaN . Czy zwykły format przynajmniej zmniejszył liczbę?
David Schwartz
Zrobiłem normalny format (nie szybki), spodziewałem się odliczania lub ponownego mapowania po formacie, ale liczba była taka sama. Dzięki
edteke
Właściwie to bardzo dziwne. Czy sformatowana partycja miała rozmiar całego dysku?
David Schwartz
@edgh: Zwykły format nie pomaga w przypadku wystąpienia takiego błędu. Sugeruję wypróbowanie mojej metody.
Gigamegs,
1

Zapis zerowy, znany również jako format niskiego poziomu. Zazwyczaj można to zrobić tylko za pomocą narzędzia dyskowego producenta. Jeśli wystąpi awaria dysku twardego, która powoduje ten błąd, może wrócić niemal natychmiast.

Chris Abbott
źródło
1

Wypróbuj rozruchowe dyski CD Spinrite 6 lub HDD z regeneratorem. Piszą testy powierzchniowe, aby wyczyścić oczekujące uszkodzone sektory i podnieść liczbę przeniesionych ponownie.

danwat1234
źródło
0

Aby dodać inne rozwiązanie, niedawno użyłem Victorii do naprawy 2 dysków, które zawiodły w oczekujących sektorach, ale dysk nie zamieniłby ich automatycznie na własną rękę.

Victoria jest graficznym interfejsem niskiego poziomu do twojego dysku i zawiera (jeśli naprawdę chcesz!) Edycję dysku bajt po bajcie, wymusza mapowanie sektora w przypadku awarii, obsługuje dyski USB i te tanie zatoki USB-2-sata adaptery, zmień fabryczne inteligentne atrybuty i funkcje i wiele więcej.

Minusem - jest opracowany przez rosyjskiego programistę i zostawiam cię, aby otworzyć pudełko Pandory, jeśli masz z tym problemy ...

W przypadku Victorii złapałem pierwszy sektor, którego nie udało się zmienić mapowania, a następnie przeprowadziłem skanowanie każdego sektora z odczytem siły. Następnie uruchomiłem „Weryfikuj” całego dysku, ponownie uruchomiłem inteligentne sprawdzanie i teraz jest w porządku ...

... Ale mam zapasowe dyski, więc jestem w trakcie ich wymiany. To było trochę przerażające, ponieważ jestem też między rozwiązaniami do tworzenia kopii zapasowych przez cały czas!

KolonUK
źródło