Rozumiem, że dyski twarde i dyski SSD implementują podstawowe korekcje błędów wewnątrz dysku, a większość konfiguracji RAID, np. Mdadm, będzie zależeć od tego, aby zdecydować, kiedy dysk nie naprawi błędu i musi zostać przełączony w tryb offline. Zależy to jednak od tego, czy pamięć jest w 100% dokładna w diagnozie błędów. Tak nie jest, a wspólna konfiguracja, taka jak dwudyskowe lustro RAID-1, będzie podatna na atak: załóżmy, że niektóre bity na jednym dysku są cicho uszkodzone, a dysk nie zgłasza błędu odczytu. Dlatego systemy plików, takie jak btrfs i ZFS, implementują własne sumy kontrolne, aby nie ufać błędnym oprogramowaniom napędowym, uszkodzonym kablom SATA i tak dalej.
Podobnie pamięć RAM może mieć problemy z niezawodnością, dlatego mamy pamięć ECC RAM, aby rozwiązać ten problem.
Moje pytanie brzmi : jaki jest kanoniczny sposób ochrony pliku wymiany Linuksa przed cichym uszkodzeniem / zgnilizną bitów, która nie została złapana przez oprogramowanie napędu w konfiguracji z dwoma dyskami (tj. Przy użyciu sterowników jądra głównego)? Wydaje mi się, że konfiguracja pozbawiona tutaj kompleksowej ochrony (taka jak ta zapewniona przez btrfs) nieco neguje spokój ducha przyniesiony przez RAM ECC. Nie mogę jednak wymyślić dobrego sposobu:
- btrfs w ogóle nie obsługuje plików wymiany. Możesz skonfigurować urządzenie pętlowe z pliku btrfs i dokonać na nim wymiany. Ale to ma problemy:
- Losowe zapisy nie działają dobrze: https://btrfs.wiki.kernel.org/index.php/Gotchas#Fragmentation
- Sugestia wyłączenia kopiowania przy zapisie spowoduje również wyłączenie sumowania kontrolnego - tym samym pokonując cały punkt tego ćwiczenia. Zakładają, że plik danych ma własne zabezpieczenia wewnętrzne.
- ZFS w Linuksie pozwala na używanie ZVOL-a jako wymiany, co, jak sądzę, mogłoby działać: http://zfsonlinux.org/faq.html#CanIUseaZVOLforSwap - jednak z moich odczytów, ZFS zwykle wymaga pamięci i sprawienia, by działała w trybie wymiany -Tylko aplikacja brzmi jak praca nad rozgryzaniem. Myślę, że to nie jest mój pierwszy wybór. Dlaczego musiałbyś użyć jakiegoś nie-drzewa modułu jądra tylko po to, aby mieć niezawodną zamianę, która jest poza mną - na pewno istnieje sposób, aby to osiągnąć za pomocą większości współczesnych dystrybucji / jąder Linuksa w dzisiejszych czasach?
- Na liście mailingowej jądra Linuksa znajdował się wątek z łatami umożliwiającymi sumy kontrolne w samym menedżerze pamięci, właśnie z powodów, które omawiam w tym pytaniu: http://thread.gmane.org/gmane.linux.kernel/989246 - niestety, o ile mogę stwierdzić, łatka umarła i nigdy nie dotarła do góry z nieznanych mi powodów. Szkoda, że brzmiało to jak fajna funkcja. Z drugiej strony, jeśli umieścisz swap na RAID-1 - jeśli uszkodzenie nie jest w stanie naprawić sumy kontrolnej, chciałbyś, aby menedżer pamięci spróbował odczytać z drugiego dysku przed panikowaniem lub czymkolwiek innym, co jest prawdopodobnie poza zakresem tego, co powinien zrobić menedżer pamięci.
W podsumowaniu:
- Pamięć RAM ma ECC do korygowania błędów
- Pliki w pamięci trwałej mają btrfs do naprawy błędów
- Zamień ma ??? <--- to moje pytanie