Ostatnio przeczytałem kilka niepokojących statystyk dotyczących współczynników korupcji w systemach z pamięcią nie-ECC i typowymi systemami plików. Z tego, co mogę zrobić, Google, posiadanie systemu z pamięcią ECC RAM z systemem ZFS jest prawdopodobnie najlepszym sposobem zapobiegania korupcji. Większość tych informacji dotyczyła dyskusji w NAS.
Widzę, jak posiadanie takiego systemu byłoby przydatne do archiwizowania plików, zakładając, że nie są one już uszkodzone na maszynie źródłowej i są perfekcyjnie przesyłane przez sieć.
To, czego nie mogłem zrobić w Google, to: jaki jest sens posiadania maksymalnie niezawodnych plików hostujących NAS (lub jako kopii zapasowych), gdy pracuję z plikami na mniej niezawodnych komputerach? Nie jestem też w stanie znaleźć dobrych informacji na temat korekcji błędów w Sambie (bez względu na to, jaka jest najnowsza wersja w systemie operacyjnym ZFS, takim jak FreeNAS lub OpenIndiana) - jeśli jest to podatne na błędy, to prawie wszystko inne jest bezcelowe (chyba że osobiście wymieszać wszystko i zweryfikować wszystkie transfery).
Czy muszę (w przenośni) wyrzucić moje obecne systemy i zastąpić je (mini) sprzętem klasy serwerowej, jeśli nie chcę się martwić o zgniliznę bitową itp.? A jeśli pójdę tą trasą, czy mogę rozsądnie oczekiwać, że będę dysponował zasobami na coś innego niż uruchomienie ZFS? Bez wydawania tysięcy dolarów?
Mój przypadek użycia:
Zajmuję się nie tylko odtwarzaniem (np. Filmów i innych mediów). Często pracuję nad programowaniem na komputerach domowych. Na przykład mam stale rosnącą liczbę plików bazy danych SQLite dla różnych projektów. Problem w tym, że jeden z nich zostanie uszkodzony. Mam też wiele gigabajtów rodzinnych i wakacyjnych zdjęć, które nie tylko chcę archiwizować, ale także organizować, oznaczać itd. Więc chociaż nie prowadzę banku, mam rzeczy, które trudno byłoby zastąpić są „cicho zepsute”.
Odpowiedzi:
Szansa, że coś pójdzie nie tak, kumuluje się.
Innymi słowy (i z fałszywymi liczbami):
Jeśli istnieje 10% szans na to, że coś pójdzie nie tak na NAS, i
Jeśli istnieje 10% szans, że coś pójdzie nie tak na drugim urządzeniu,
Wtedy masz 20% szans na niepowodzenie podczas czytania czegoś z NAS i odtwarzania go na innym urządzeniu.
Która wersja samby. Protokoły zmieniły się nieco między trzema wersjami.
Zawsze istnieje ryzyko błędów. Te po prostu się zdarzają. I są wykrywane i korygowane (np. Poprzez sumy kontrolne). Nie zawsze jest to prawdą w przypadku korzystania z pamięci RAM, co można poprawić za pomocą parzystości i / lub ECC. Problemy te są jednak stosunkowo mało prawdopodobne i trzeba znaleźć równowagę między pozłacanym (i drogim) projektem a „wystarczająco dobrym”.
Ta równowaga będzie zupełnie inna dla niektórych z nas (np. Banki potrzebują czegoś doskonale). Prawdopodobnie nie gwarantują używania ECC w systemach osobistych przeznaczonych do odtwarzania filmów.
źródło
Połączenie:
Próbowałem przeczytać dokumentację na stronie Samby, ale nie byłem w stanie stwierdzić, czy Samba ma korektę błędów. Musiałem założyć najgorszy przypadek - że Samba polega na sieci bazowej, aby była wolna od błędów. Jeśli tą podstawową siecią jest TCP / IP, wydaje się, że jedyną ochroną jest słaba suma kontrolna.
Skończyłem z iSCSI, ponieważ obsługuje opcjonalne nagłówki i skróty danych wykorzystujące algorytm CRC32C. To ponad sprawdzanie TCP / IP.
Czy jest jakaś korzyść?
Dla mnie odpowiedź brzmi „Tak, w co najmniej jednym scenariuszu”. Mogę tworzyć kopie zapasowe plików na maszynie ZFS klasy serwerowej za pomocą programu, któremu ufam. Następnie mogę okresowo sprawdzać, czy podobno niezmodyfikowane pliki na oryginalnym komputerze to tak właściwie niemodyfikowany. Jeśli istnieje rozbieżność, mogę przywrócić kopię zapasową z serwera.
Jedynym słabym punktem jest celowe modyfikowanie plików na niewiarygodnej maszynie klasy konsumenckiej. Ponieważ korupcja w tych krótkich okresach czasu jest tak mało prawdopodobna, uważam to za dopuszczalne. Jeśli zdarzy mi się odkryć, że wystąpiła korupcja podczas modyfikacji, będę miał przyrostowe kopie zapasowe.
Zastąpienie komputera wystarczająco wydajnym serwerem, aby uruchomić ZFS, a zasoby pozostały moim podstawowym komputerem?
Może, ale byłoby to bardzo drogie. Jestem zadowolony ze scenariusza opisanego powyżej, więc nie będę tego próbował.
źródło
ZFS jest dość wybredny w kwestii sprzętu, na którym działa.
Nie w tym sensie, że musisz mieć dokładnie odpowiedni chipset, kartę graficzną, wersję oprogramowania układowego dysku itd., Ale w sensie możliwości zapewnianych przez sprzęt. Pamiętaj, że ZFS został zaprojektowany jako wysokiej klasy rozwiązanie serwerowe, a pewne przyjęte przez niego założenia odzwierciedlają to.
Główną częścią tego, co sprawia, że ZFS jest tak doskonały do przechowywania danych, na których Ci zależy, jest to, że możesz go skonfigurować w sposób, który może zarówno wykryć i popraw błędy w pamięci. Mogą to być trywialne błędy, takie jak przerzucanie pojedynczego bitu, lub katastrofalne błędy, takie jak awarie kilku dysków jednocześnie. Tak długo, jak pozostaniesz powyżej progu redundancji układu pamięci masowej (na przykład, nie więcej niż dwa dyski jednocześnie doświadczają problemów w raidz2 vdev) ZFS może skorygować każdy błąd przy użyciu nadmiarowych danych. Dalsze błędy, w zależności od miejsca i sposobu ich wystąpienia, mogą prowadzić do (pół) zgrabnej paniki systemu lub prostego błędu we / wy.
Jeśli zrobisz to dobrze, skonfigurujesz swój system do regularnego szorowania puli ZFS. Spowoduje to przechwycenie degredacji, zanim stanie się problemem, i powiadomi Cię o tym, abyś mógł rozważyć wymianę urządzeń pamięci masowej, które mają problemy z przechowywaniem danych, zanim stanie się to problemem.
Jednak ta wielkość zależy od tego, że można zaufać pamięci RAM. Cała ta walidacja, korekta, przepisywanie itd. Odbywa się głównie w pamięci RAM. Na wysokiej klasy serwerach nie znajdziesz niczego poza pamięcią ECC RAM.
ZFS chroni (i obsługuje) metadane puli, metadane systemu plików i dane użytkownika w ten sam sposób. Nie ma tu żadnej różnicy.
Jeśli system stacji roboczej przerzuci bit pamięci RAM, po zapisaniu danych przerzuconych bitowo do ZFS, dane odwrócone bitowo będą podstawą tego, co ZFS ostatecznie wypisze na dysk. Jest to oczywiście złe, ponieważ oznacza to, że plik zostanie uszkodzony. Jednak dane odwrócone bitowo będą poprawne, jeśli chodzi o ZFS . To jest właściwie dobry , ponieważ oznacza to, że wszystkie normalne metody odzyskiwania ZFS będą działać. Tak, najnowsza kopia danego pliku będzie uszkodzona, ale i tak byłoby zepsute, bez względu na używany system plików. Możesz wykorzystać migawki ZFS przynajmniej móc cofnąć się w czasie do nieuszkodzonej kopii. Skonfiguruj coś takiego zfs-auto-snap aby migać swoje systemy plików w regularnych, bliskich odstępach czasu, zachowuj starszą historię wstecz i zapomnij o niej, dopóki ich nie potrzebujesz. (Na przykład, trzymaj dziesięć migawek w odstępie dziesięciu minut; 50 migawek w odstępie jednej godziny; 30 migawek w odstępie sześciu godzin itd.) Migawki są praktycznie wolne w ZFS; jeśli używasz ZFS, używaj migawek także.
Jeśli Twój serwer pamięci, na którym działa ZFS, ma złą pamięć RAM, niezależnie od tego, czy jest to bit flip, czy zablokowany (jeden lub więcej) bitów, a na serwerze pamięci znajduje się pamięć ECC RAM, zostanie to wykryte, a zdarzenie zostanie zarejestrowane lub system być zatrzymany (jeśli błąd nie może zostać skorygowany). Tak czy inaczej, zachowana jest integralność danych przechowywanych na serwerze. Jeśli twój serwer pamięci ZFS ma RAM inny niż ECC, wtedy błąd może rozprzestrzeniać się na wszystkie dane i metadane ponieważ ZFS próbuje „poprawić” błędy, które naprawdę są tylko wytworami wyobraźni komputera. W najgorszym przypadku co faktycznie dzieje się z ludźmi , cała twoja pula zostanie zniszczona z tego powodu, a wszystkie dane znikną. Nadmiarowość na poziomie pamięci / vdev też tutaj nie pomaga. W przypadku większości innych systemów plików (bez zachowania automatycznej korekcji) tylko jedno miejsce, na które bezpośrednio wpłynął bit flip, zostanie uszkodzone, a jeśli tak się stanie, metadane systemu plików mogą być łatwo naprawione przez tradycyjne programy sprawdzające i odzyskiwanie systemu plików przybory. ZFS nie ma tego luku ratunkowego; nie ma fsck.zfs. (Jest peeling zpool , ale to nie działa, jeśli basen jest uszkodzony nie do naprawienia.)
Oznacza to, że masz zaufane repozytorium danych. Wiesz, że gdy dane dotrą do twojego NAS, jest to bezpieczne. Wszelkie uszkodzenia zostaną naprawione automatycznie lub zostaniesz poinformowany o problemie (w przypadku ZFS za pośrednictwem błędu we / wy). Dane mogą być nadal uszkodzone podczas pracy nad mniej niezawodnymi systemami, ale będziesz mieć miejsce na znaną nieuszkodzoną kopię. Jest to zaleta, nawet jeśli tylko system NAS ma pamięć ECC RAM, ZFS i wysokiej jakości monitorowanie pamięci masowej i alarmy.
W razie potrzeby możesz dodać (w szczególności) pamięć ECC RAM do innych systemów w zależności od budżetu, aby podłączyć ostatni otwór.
Po pierwsze, naprawdę nie potrzebujesz sprzętu klasy serwerowej. Potrzebujesz przede wszystkim pamięci ECC RAM (oraz procesora i kontrolera pamięci / chipsetu obsługującego ECC RAM) niezawodnie trwała pamięć masowa, a najlepiej przypadek, który ułatwia dodawanie i usuwanie dysków podczas pracy systemu. To nie musi być bardzo drogie iz pewnością nie musi kosztować „tysięcy dolarów”.
Po drugie, ZFS lubi pamięć RAM, ale głównie do buforowania. Przy większości obciążeń, 8-16 GB pamięci RAM powinno wystarczyć, a 24-32 GB (łatwo osiągalne nawet przy „konsumenckich” płytach głównych) jest wciąż w rozsądnej cenie nawet przy zakupie wysokiej jakości markowych pamięci ECC. ZFS nie jest strasznie głodny CPU; możesz sprawić, że będzie potrzebował dużo procesora (jak z ZoL , ustawiając sha256, kompresję gzip-9 i ewentualnie deduplikację w połączeniu), ale nie musisz. Mój własny system obsługuje ZFS, nie jest bardzo wydajny (taktowany procesorem FX-6100), wszędzie używam sha256, a nawet w czysto sekwencyjnym I / O dyski są czynnikiem ograniczającym: po przekroczeniu początkowego małego losowo odczytuje część zarośli, mam taką samą przepustowość zarośli jak na surowym
dd
z podstawowego urządzenia pamięci masowej, z zapasowym procesorem.źródło