Ogólnie rzecz biorąc, w bezpośredniej odpowiedzi na twoje pytanie, nie znam żadnych głównych marek napędów SATA, że sam napęd miał błędy związane z poprawnym działaniem z włączonym buforowaniem zapisu. To znaczy, tylko z perspektywy dysku, dysk robi to, co powinien zrobić z perspektywy buforowania. Chciałbym również zauważyć, że nawet gdy buforowanie zapisu jest włączone, opóźnienie od zapisu dysku kablem SATA do fizycznie aktualizowanego obracającego się nośnika jest nadal bardzo krótkie (zwykle około 50 do 100 ms). To nie jest tak, że brudne dane z pamięci podręcznej będą po prostu tam siedzieć przez kilka sekund ..... dysk nieustannie próbuje uzyskać brudne dane z pamięci podręcznejna fizyczny nośnik tak szybko, jak to możliwe. Nie jest to tylko kwestia bezpieczeństwa danych, ale gotowość do przyjęcia zapisów w przyszłości bez żadnych opóźnień (np. Napisanie postu).
Problem, który pojawia się, gdy buforowanie jest włączone, polega na tym, że kolejność zapisu do napędu za pomocą kabla SATA i kolejność zapisu na obracającym się nośniku nie są takie same. Nie może to nigdy powodować problemu, chyba że nastąpi utrata zasilania lub awaria systemu, zanim cała zawartość pamięci podręcznej nie znajdzie się na dysku. Dlaczego? ->
Problem, który może się tutaj pojawić, dotyczy odporności transakcji systemu plików i / lub zawartości plików bazy danych na nieuporządkowane zapisy utracone. W efekcie te potencjalnie utracone zapisy w kolejności mogą teoretycznie uszkodzić integralność logiki transakcji, która w innym przypadku byłaby zagwarantowana przez zapisy dysku w bardzo określonej kolejności dla mediów.
Teraz, oczywiście, projektanci systemu plików, baz danych, kontrolerów RAID itp. Są świadomi (a na pewno powinni być świadomi) tego zjawiska w odniesieniu do buforowania zapisu. Buforowanie zapisu jest niezwykle pożądane z punktu widzenia wydajności w większości scenariuszy we / wy typu dostępu swobodnego. W rzeczywistości dostępność buforowania zapisu jest kluczowym elementem umożliwiającym czerpanie rzeczywistych korzyści z bardziej zaawansowanego Native Command Queuing ( NCQ)), który jest obsługiwany w nowszych wersjach SATA i ostatnich generacjach implementacji PATA. Tak więc, aby zagwarantować porządek na fizycznym nośniku w takich krytycznych momentach, system plików i / lub aplikacja itp. Mogą w szczególności zażądać opróżnienia pamięci podręcznej zapisu na nośniku. Po zakończeniu tego żądania synchronizacji - wszystko oczekujące od (potencjalnie) buforów plików, buforowania dysku systemu operacyjnego, buforowania dysku fizycznego itp. Jest faktycznie dostępne na nośniku zgodnie z projektem systemu transakcyjnego przy właściwych operacjach krytycznych. Oznacza to, że dzieje się to poprawnie, jeśli programiści wykonują odpowiednie wywołania u góry ORAZ każdy element tego łańcucha warstw oprogramowania i sprzętu wykonał swoją pracę poprawnie. tj .: nie ma żadnych błędów w tym zakresie w napędzie, kontrolerach RAID, sterownikach dysków, pamięciach podręcznych systemu operacyjnego, systemie plików, silniku bazy danych itp. To dużo oprogramowania, które wszystko musi działać dokładnie tak, jak trzeba. Ponadto weryfikacja poprawności pod tym względem jest bardzo trudna, ponieważ w prawie każdej sytuacji zwykle kolejność zapisu nie ma żadnego znaczenia ... a scenariusze awarii zasilania i awarii są trudnymi do skonstruowania testami. Tak więc w końcu „wyłączenie buforowania zapisu” na jednej lub kilku różnych warstwach i / lub znaczeniach tego terminu… ma reputację „naprawiania” niektórych rodzajów problemów. W efekcie wyłączenie zachowań buforowania zapisu kontrolera RAID, pamięci podręcznej dysku systemu operacyjnego lub napędu itp. Pozwala uniknąć jednego lub więcej błędów w systemie ..... i źródła takiej wiedzy. a scenariusze awarii zasilania i awarii są trudnymi do zbudowania testami. Tak więc w końcu „wyłączenie buforowania zapisu” na jednej lub kilku różnych warstwach i / lub znaczeniach tego terminu… ma reputację „naprawiania” niektórych rodzajów problemów. W efekcie wyłączenie zachowań buforowania zapisu kontrolera RAID, pamięci podręcznej dysku systemu operacyjnego lub napędu itp. Pozwala uniknąć jednego lub więcej błędów w systemie ..... i źródła takiej wiedzy. a scenariusze awarii zasilania i awarii są trudnymi do zbudowania testami. Tak więc w końcu „wyłączenie buforowania zapisu” na jednej lub kilku różnych warstwach i / lub znaczeniach tego terminu… ma reputację „naprawiania” niektórych rodzajów problemów. W efekcie wyłączenie zachowań buforowania zapisu kontrolera RAID, pamięci podręcznej dysku systemu operacyjnego lub napędu itp. Pozwala uniknąć jednego lub więcej błędów w systemie ..... i źródła takiej wiedzy.
W każdym razie wracając do sedna pytania: w SATA specyficzna obsługa wszystkich poleceń odczytu / zapisu na dysku i poleceń opróżniania pamięci podręcznej jest dobrze zdefiniowana w specyfikacjach SATA . Ponadto producenci napędów powinni mieć szczegółową dokumentację dla każdego modelu lub rodziny napędów opisującą ich implementację i zgodność z tymi regułami, takimi jak ten przykład dla dysków Seagate Barracuda . W szczególności zobacz szczegóły FUNKCJI SATA SETpolecenie sterujące trybem pracy dysku, a konkretnie opcja 82h może być użyta do wyłączenia buforowania dysku na poziomie napędu, ponieważ domyślnie jest to buforowanie zapisu włączone na wszystkich dyskach, o których wiem. Jeśli naprawdę chcesz wyłączyć pamięć podręczną, to polecenie należy wykonać na początku każdego resetu lub włączenia napędu i zwykle jest ono kontrolowane przez sterowniki dysku dla twojego systemu operacyjnego. Możesz być w stanie zachęcić sterownik systemu operacyjnego do ustawienia tego trybu za pomocą IOCTL i / lub ustawienia rejestru, ale jest to bardzo zróżnicowane.