Dlaczego dysk twardy, o którym wiadomo, że ma złe bloki (sprawdzone w HDTune i HDDScan), zawiesza cały mój system?
To nie jest dysk systemu operacyjnego; jest podłączony do innego portu SATA i próbuję skopiować z niego pliki na inny zdrowy dysk.
Wystąpił ten problem z prawie każdym uszkodzonym dyskiem twardym i każdym komputerem z systemem Windows.
Spodziewałbym się, że zawiesi się tylko w przypadku programu, którego używam do kopiowania plików (Eksplorator Windows itp.), Ale zamiast tego cały mój komputer się popada i nie mogę przeglądać stron internetowych ani oglądać filmów podczas kopiowania plików z uszkodzonego dysku.
Długa historia
Mieszkam na wsi, gdzie występują problemy z elektrycznością (przerwy w dostawie prądu itp.). Ja sam korzystam z zasilacza UPS, a moje dyski twarde są całkowicie w porządku. Ale moi sąsiedzi często proszą o pomoc w problemach z komputerem i często stwierdzam, że dyski twarde są uszkodzone, najprawdopodobniej z powodu problemów z elektrycznością. Oczywiście po wymianie uszkodzonego napędu sugeruję moim sąsiadom zakup UPS.
Zawsze zastanawiałem się, dlaczego mój komputer całkowicie zawiesza się podczas pobierania danych z uszkodzonych dysków. Czy to problem sprzętowy? Czy jest to spowodowane sposobem, w jaki system operacyjny odczytuje dane? Czy jest to coś specyficznego dla systemu Windows i nie zobaczę go na * nix?
W każdym razie, od teraz będę używać specjalnego oprogramowania (takiego jak Unstoppable Copier Roadkila) zamiast Eksploratora Windows, chociaż nie jestem pewien, czy to zadziała inaczej, bez zamrażania całego komputera.
To nie jest prośba o pomoc, ale raczej w celach edukacyjnych, więc wiem, dlaczego rzeczy działają w ten sposób.
źródło
Odpowiedzi:
Jest to jeden z tych obszarów, w których SATA jest nieoptymalny. Problem występuje na poziomie protokołu połączenia urządzenia pamięci masowej, a zatem nie jest związany z używanym oprogramowaniem. Użycie innej kopiarki plików lub innego systemu operacyjnego nie poprawi magicznie sytuacji, z wyjątkiem tego, że może próbować ustawić różne wartości limitu czasu w celu zmniejszenia wpływu problemu (co może, ale nie musi być możliwe, w zależności od sprzętu i oprogramowania układowego; patrz poniżej ).
Jest tu kilka ważnych punktów:
Punkt 1 jest jednym z głównych punktów sprzedaży SAS na serwerach; SAS ma znacznie lepszą obsługę błędów niż SATA. Punkt # 2 jest ograniczeniem oprogramowania układowego napędu, a # 3 staje się problemem tak naprawdę tylko z powodu # 2.
Tak więc dzieje się tak, że system operacyjny wydaje polecenie „odczytu sektorów” na dysk, a poszczególne sektory są w jakiś sposób uszkodzone. Tak więc dysk przechodzi w tryb ponownej próby, aby spróbować usunąć dane z talerzy, próbując odczytywać raz za razem, aż otrzyma wystarczająco dobre dane, aby własna korekcja błędów dysku ( FEC ) mogła naprawić pozostałe błędy. Jeśli masz pecha, może się to nie udać, ale dysk będzie próbował przez dość długi czas, zanim zdecyduje, że ten odczyt nie powiedzie się.
Ponieważ system operacyjny czeka na odczyt, spowoduje to przynajmniej spowolnienie procesu kopiowania do przeszukiwania, a w zależności od dokładnej architektury systemu operacyjnego może spowodować, że system operacyjny ulegnie szarpnięciu lub nawet zawiesi się na czas trwania. Dysk w tym momencie jest zajęty pierwotnym odczytem i nie będzie odpowiadał na dalsze polecenia odczytu, dopóki aktualnie wykonywane polecenie nie zakończy się (pomyślnie lub nie), a inne oprogramowanie na ogół nie poradzi sobie lepiej niż system operacyjny działa na.
Dlatego wszystko, co uruchamia odczyt w innym miejscu ( najlepiej tylko na uszkodzonym dysku), będzie musiało czekać w kolejce, aż uszkodzony dysk albo odczyta dany sektor, albo stwierdzi, że nie można go odczytać. Z powodu mniej niż optymalnej obsługi dysków nieodpowiadających przez SATA, może to oznaczać, że nie tylko dysk, z którego kopiujesz, będzie miał opóźnione operacje we / wy. Może to bardzo łatwo spowodować spowolnienie lub brak reakcji innego oprogramowania, ponieważ oprogramowanie to czeka na zakończenie innego żądania We / Wy, nawet jeśli system operacyjny jest w stanie sobie z tym poradzić.
Należy również zauważyć, że dyskowe operacje we / wy mogą się zdarzyć, nawet jeśli nie masz bezpośredniego dostępu do żadnych plików na dysku. Dwie główne przyczyny tego to kod wykonywalny typu ładuj na żądanie i zamiana. Ponieważ zamiana jest czasem używana nawet wtedy, gdy system nie jest obciążony pamięcią, a kod wykonywalny ładowania na żądanie jest powszechny w nowoczesnych systemach i przy nowoczesnych formatach plików wykonywalnych, niezamierzone działanie odczytu dysku podczas normalnego użytkowania jest bardzo realną możliwością.
Jak wskazano w komentarzu do pytania Matteo Italia , jedną ze strategii ograniczających ryzyko jest użycie innego interkonektu pamięci, co jest skomplikowanym sposobem powiedzenia „włóż dysk do obudowy USB”. Po wyodrębnieniu za pomocą protokołu pamięci masowej USB izoluje to problematyczną część SATA od reszty systemu, co oznacza, że teoretycznie tylko we / wy na tym konkretnym dysku powinny mieć wpływ problemy we / wy na tym dysku.
Nawiasem mówiąc, jest to prawie to, dlaczego SATA (szczególnie SATA bez ERC na poziomie dysku) jest często odradzana dla RAID (szczególnie poziomy RAID z redundancją, które wśród standardowych są wszystkie oprócz RAID 0 ); długie limity czasu i słaba obsługa błędów mogą z łatwością spowodować wyrzucenie całego urządzenia z macierzy dla pojedynczego uszkodzonego sektora, co kontroler RAID poradziłby sobie dobrze, jeśli istnieje nadmiarowość, a kontroler pamięci po prostu wie, że to jest problem. SAS został zaprojektowany z myślą o dużych macierzach pamięci, a zatem z oczekiwaniem, że czasami pojawią się problemy na różnych dyskach, co doprowadziło do tego, że zaprojektowano go tak, aby z wdziękiem obsługiwał przypadek pojedynczego problematycznego dysku lub żądania We / Wynawet jeśli dysk nie. Dyski problematyczne nie są bardzo powszechne w systemach konsumenckich, ponieważ zazwyczaj nie mają wielu zainstalowanych dysków, a te, które są instalowane, praktycznie nigdy nie mają redundancji; ponieważ SATA miała na celu zastąpienie PATA / IDE, a nie SCSI (ten drugi jest niszowym celem SAS), prawdopodobne jest, że jego funkcje obsługi błędów i wymagania (lub gwarancje) zostały uznane za odpowiednie do zamierzonego zastosowania.
źródło
Jak wspomniano powyżej, problem z zawieszaniem się systemu z powodu wadliwego dysku twardego wynika przede wszystkim z długich prób odzyskania przez system nieczytelnych danych z uszkodzonych sektorów. Jedną z zalet sprzedaży dysków dla przedsiębiorstw jest bardzo krótki czas oczekiwania na awarie sektorów. Korzystanie z dysku korporacyjnego może w pewnym stopniu złagodzić problemy, ale ich nie rozwiąże.
Najlepszym rozwiązaniem, idącym naprzód, jest utrzymywanie odpowiednich kopii zapasowych, aby odzyskiwanie nie było wymagane. Zmiana oprogramowania do odzyskiwania nie ma znaczenia, ponieważ jest to problem z przekroczeniem limitu czasu oprogramowania układowego.
źródło
Nie muszą (ogólnie). To zależy od konkretnego systemu plików, w jaki sposób rozwiązywana jest awaria dysku.
Zastanów się nad ZFS, który został zaprojektowany od podstaw, aby radzić sobie z dość dużą odpornością na uszkodzenia. Oto wideo demonstracyjne (i bardziej wyjaśniające ), w którym umieszczają napędy na kowadle, huśtają się młotkiem i wiercą inny napęd. Przez cały czas ZFS działa.
źródło
Myślę, że problemem, który napotykasz, jest niskopoziomowa część systemu operacyjnego, która wiele razy próbuje odczytać uszkodzone bloki przed poddaniem się. Ta procedura jest implementowana na niskim poziomie w przypadku, gdy jest potrzebna podczas rozruchu lub innej samodzielnej operacji, a zatem trudno jest ją ponownie uruchomić. System operacyjny będzie ciągle wyświetlał strony podczas normalnego działania i trudno jest nadać priorytet konkurującym żądaniom, ponieważ system niskiego poziomu nie będzie wiedział o priorytecie procesu, który jest właścicielem żądania stronicowania.
źródło