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:
- W przypadku SATA, jeśli dysk przestaje reagować, może to wiązać się z całym systemem pamięci masowej, a nie tylko z jednym dyskiem, który ma problemy. Z pewnością ma potencjał do połączenia całego kontrolera, a ponieważ większość systemów konsumenckich ma tylko jeden kontroler dysku (ten zintegrowany z płytą główną), oznacza to całą pamięć. Gorzej, jeśli dysk ulegnie awarii w jakiś niestandardowy i / lub nieoczekiwany sposób, co z pewnością może się zdarzyć, jeśli dysk jest marginalny. Być może zainteresuje Cię, w jaki sposób pojedynczy dysk w sprzętowej macierzy SATA RAID-10 może zatrzymać całą macierz? na błąd serwera.
- Większość dysków SATA dla konsumentów ma długie domyślne limity czasu (rzędu minut), a wiele dysków SATA dla konsumentów nie ma konfigurowalnej kontroli odzyskiwania po błędzie . Tak zwane dyski „NAS” często mają konfigurowalny ERC, a dyski wysokiej klasy praktycznie zawsze mają; takie dyski mogą również mieć krótsze limity czasu domyślnego (7 sekund to wspólna wartość). Długie czasy oczekiwania są korzystne, jeśli dysk zawiera jedyną kopię danych, co niestety jest powszechne w systemach konsumenckich; są wadą w konfiguracji redundantnej lub gdy po prostu chcesz uzyskać jak najwięcej z dysku, zanim ulegnie on dalszemu pogorszeniu.
- Dysk będzie próbował odczytać uszkodzony sektor, dopóki nie osiągnie progu limitu czasu lub dopóki host nie zasygnalizuje przerwania. Ponieważ magistrala SATA może zostać związana przez oczekiwanie na zakończenie odczytu, system operacyjny może nie zasygnalizować przerwania polecenia na poziomie pamięci, aw skrajnych przypadkach dyski mogą nawet nie reagować dobrze na reset magistrali SATA w takiej sytuacji.
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.