Pamięci dyskowe: Obrona przed cichym zabójcą

Kilkanaście lat temu problemy ze składowaniem danych w dużych macierzach były związane głównie z odtwarzaniem po awarii jednego lub kilku dysków. Obecnie jedną z przyczyn uszkodzenia danych mogą być rzadkie zdarzenia – niekorygowane błędy napędów dyskowych.

W miarę wzrostu pojemności i wydajności dysków coraz bardziej dokuczliwe staje się niszczenie plików spowodowane losowymi zmianami pojedynczych bitów. Proces ten, nazywany „psuciem bitów” (ang bit rotting), jest spowodowany czynnikami zewnętrznymi, starzeniem zapisu, skutkami działań promieniowania kosmicznego lub lokalnego radioaktywnego, drobnymi przekłamaniami w transmisji. Uszkodzenia postępują powoli i w miarę upływu czasu powstają problemy z odtwarzaniem multimediów, ulegają uszkodzeniu skompresowane archiwa, a w aplikacjach będą pojawiać się nieznane dotąd błędy.

Backup ani RAID nie ochroni danych

Uszkodzenia danych postępują bardzo powoli i obejmują za jednym razem tylko pojedyncze bity. Oznacza to, że nie będzie przed nimi chronić standardowa pętla backupowa, gdyż oprogramowanie wykonujące kopię bezpieczeństwa będzie za każdym razem kopiować na trwały nośnik aktualny stan zasobu dyskowego, włącznie z błędami. W miarę upływu czasu kolejne kopie będą nadpisywane aż do chwili, gdy obecnie dostępne kopie z pętli (miesięczne, tygodniowe) będą zawierały tylko uszkodzone wersje. Prawdopodobnie część tych informacji uda się odzyskać, wprowadzając zasadę przechowywania kopii z pewnego okresu w archiwum, ale na to mogą sobie pozwolić jedynie te przedsiębiorstwa, które mają niewiele danych. Ponadto wykrywanie błędów oznacza konieczność wyliczania i sprawdzania sum kontrolnych dla każdego przechowywanego obiektu. Są rozwiązania, które przechowują sumy kontrolne wszystkich archiwizowanych plików (realizuje to w praktyce np. Tivoli Storage Manager).

Zobacz również:

Z kolei powolne uszkodzenie sprawia, że podobne błędy niespostrzeżenie przechodzą kontrolę – nie wszystkie kontrolery RAID domyślnie sprawdzają sumy kontrolne przy każdym odczycie. Konwencjonalna macierz RAID odbuduje uszkodzenie w przypadku całkowitej awarii dysku. Jednak jeśli uszkodzony dysk będzie odtwarzał dane z uszkodzonymi losowo pojedynczymi bitami, podobne uszkodzenie nie zawsze da się wychwycić i skorygować. Ponadto przy rekonstrukcji bloku z użyciem sumy kontrolnej kontroler nie może stwierdzić, który z dysków w macierzy dostarczył uszkodzoną porcję informacji. Podobne błędy, których dotąd nie zauważano, można było zaobserwować dzięki nowoczesnym systemom plików, takim jak eksperymentalny btrfs oraz stabilny do zastosowań profesjonalnych ZFS. Systemy te, w odróżnieniu od kontrolerów RAID, potrafią wykryć uszkodzenie pojedynczego bitu.

Błędy zdarzają się coraz częściej

Naprawa uszkodzonych porcji danych może uratować całkiem duże zbiory danych przed zniszczeniem. Kilkuletni napęd dyskowy może zawierać od kilku nawet do kilkudziesięciu uszkodzonych bitów, ale zdarzają się silnie obciążone dyski, w których znajduje się kilkadziesiąt tysięcy takich błędów. Dzięki mechanizmom kontroli i naprawy błędów, prawdopodobieństwo uszkodzenia plików przez błędy zmiany pojedynczych bitów radykalnie spada.

Problem związany z uszkodzeniami danych spowodowany przez bit rotting odkryła już kilka lat temu firma Net App i zbadała ponad 1,5 mln dysków, które pracowały w macierzach tego producenta. W 2013 r. ustalono, że średnio w jednym na 90 dysków SATA (powszechnie wykorzystywanym do długotrwałego przechowywania informacji, z racji na niski koszt składowania) wystąpi błąd, który nie zostanie wychwycony w procesie weryfikacji spójności w typowym kontrolerze macierzowym RAID. Statystycznie w woluminie RAID 5 jeden przekłamany bit (czyli uszkodzony sektor) przypada na 67 terabajtów odczytywanych porcji informacji. Oznacza to, że operacja odbudowy woluminu o znacznych rozmiarach jest obarczona bardzo wysokim ryzykiem uszkodzenia zapisanej tam informacji jedynie z powodu niekorygowanych błędów bit rotting.

Badania prowadzone przez amerykański instytut USC Shoah Foundation Institute for Visual History and Education udowodniły, że stopa błędów w archiwum wyniosła 2,3x10^-14. W praktyce oznacza to, że odtworzenie porcji danych o rozmiarze 8 petabajtów wymagało naprawy aż 1500 uszkodzonych bitów. Aby zapewnić trwałość archiwum, wprowadzono proces walidacji obejmujący wyliczanie sum kontrolnych SHA-1 na etapie tworzenia plików, przesyłania do zasobów Exlibris Rosetta i walidacji, wysyłania do nośnika archiwum NetApp StorageGRID oraz przy zapisie do węzłów storage. Wielokrotne wyliczanie sum kontrolnych SHA-1 sprawia, że uszkodzenie pojedynczego bitu można odpowiednio wcześnie wykryć i naprawić.

Więcej danych to większe ryzyko

W systemach składowania danych starszych generacji niekorygowane przekłamania pojedynczych bitów zdarzały się bardzo rzadko, gdyż stosowane wtedy dyski mechaniczne były powolne i mało pojemne. Obecnie macierze dyskowe mają olbrzymią pojemność i mogą przetransferować olbrzymie porcje danych w krótkim czasie. Pojawiające się błędy odczytu z dysków w dużych środowiskach były jednym z powodów do wdrożenia systemu plików wyposażonego w wykrywanie i korekcję uszkodzonych bloków danych.

Dla ochrony przed niszczeniem danych najważniejsze jest wprowadzenie sum kontrolnych i automatyczna naprawa błędów, a dla celów odzyskiwania poawaryjnego kopie migawkowe wykonywane podczas zapisu oraz asynchroniczna replikacja. Opcje te posiada obecnie każda macierz klasy Enterprise.

Jeff Bonwick, jeden z twórców systemu plików ZFS, wyjaśnia: „Dziś przetransferowanie 10^16 bitów stało się możliwe w dość krótkim czasie. W dużej, szybkiej i silnie obciążonej bazie danych Greenplum, wykorzystywanej przy wielkoskalowych obliczeniach klasy Big Data, można zaobserwować korekcję uszkodzonych bitów co ok. 15 minut”.

Obecnie problem dotyczy nawet niektórych stacji roboczych – silne stacje robocze wyposażone w kilka dysków o pojemności kilka terabajtów każdy doświadczają błędów co pewien czas. Tych błędów nie potrafi wykryć ani oprogramowanie samego napędu, ani system plików NTFS (Windows), ani Ext4 (Linux). Systemy poprzedniej generacji nie były projektowane pod kątem wykrywania i naprawy pojedynczych uszkodzonych bitów, a zatem błędy te docierają aż do poziomu aplikacji, skutkując uszkodzeniem przechowywanych plików. Można zatem założyć, że opcje wykrywania i naprawy uszkodzonych bitów musi mieć każdy system plików stosowany przy długoterminowym składowaniu dużej ilości danych, szczególnie w macierzach dyskowych.


TOP 200