BBWC: teoretycznie dobry pomysł, ale czy kiedykolwiek zapisałeś twoje dane?

26

Wiem, do czego służy BBWC (pamięć podręczna zapisu z podtrzymaniem bateryjnym) - i wcześniej używałem ich na moich serwerach, nawet z dobrym zasilaczem UPS. Są oczywiste awarie, których nie zapewnia ochrony. Jestem ciekawy, czy rzeczywiście oferuje to jakąkolwiek rzeczywistą korzyść w praktyce.

(Uwaga: szczególnie szukam odpowiedzi od osób, które mają BBWC i miały awarie / awarie i czy BBWC pomogło odzyskać, czy nie)

Aktualizacja

Po otrzymaniu opinii jestem coraz bardziej sceptyczny, czy BBWC wnosi jakąkolwiek wartość.

Aby mieć pewność co do integralności danych, system plików MUSI wiedzieć, kiedy dane zostały przydzielone do nieulotnej pamięci masowej (niekoniecznie na dysk - kwestia, do której wrócę). Warto zauważyć, że wiele dysków kłamie na temat tego, kiedy dane zostały zapisane na dysku ( http://brad.livejournal.com/2116715.html ). Chociaż rozsądne wydaje się założenie, że wyłączenie bufora podręcznego na dysku może uczynić dyski bardziej uczciwymi, nadal nie ma gwarancji, że tak się stanie.

Ze względu na typowo duże bufory w BBWC, bariera może wymagać znacznie większej ilości danych na dysku, co powoduje opóźnienia w zapisie: ogólna rada to wyłączanie barier podczas korzystania z nieulotnej pamięci podręcznej zapisu (i wyłączanie włączenia buforowanie dysku). Wydaje się jednak, że podważa to integralność operacji zapisu - tylko dlatego, że więcej danych jest przechowywanych w pamięci trwałej, nie oznacza, że ​​będzie bardziej spójna. Rzeczywiście, prawdopodobnie bez rozgraniczenia transakcji logicznych wydaje się, że istnieje mniej możliwości zapewnienia spójności niż w innych przypadkach.

Gdyby BBWC uznało bariery w momencie, gdy dane wchodzą do ich nieulotnej pamięci masowej (zamiast zostać przydzielone na dysk), wydaje się, że spełnia wymóg integralności danych bez ograniczenia wydajności - co oznacza, że ​​bariery powinny być nadal włączone. Ponieważ jednak urządzenia te na ogół zachowują się spójnie z opróżnianiem danych do urządzenia fizycznego (znacznie wolniej z barierami) i rozpowszechnioną wskazówką dotyczącą wyłączania barier, nie mogą zatem zachowywać się w ten sposób. DLACZEGO NIE?

Jeśli we / wy w systemie operacyjnym jest modelowane jako seria strumieni, istnieje pewien zakres, aby zminimalizować efekt blokujący bariery zapisu, gdy buforowanie zapisu jest zarządzane przez system operacyjny - ponieważ na tym poziomie tylko transakcja logiczna (pojedynczy strumień ) musi zostać popełnione. Z drugiej strony BBWC, nie wiedząc, które bity danych składają się na transakcję, musiałby przekazać całą pamięć podręczną na dysk. To, czy jądro / systemy plików faktycznie to zaimplementują, wymagałoby o wiele więcej wysiłku, niż zamierzam zainwestować w tej chwili.

Kombinacja dysków informujących fibs o tym, co zostało popełnione, i nagła utrata mocy niewątpliwie prowadzi do uszkodzenia - oraz z systemem plików o strukturze Journalling lub logu, który nie robi pełnego fsck po awarii, jest mało prawdopodobne, że uszkodzenie zostanie wykryte, nie mówiąc już o tym próba naprawy.

Jeśli chodzi o tryby awarii, z mojego doświadczenia wynika, że ​​najbardziej nagłe przerwy w dostawie prądu występują z powodu utraty zasilania sieciowego (łatwo złagodzone za pomocą UPS i zarządzanego wyłączenia). Ludzie wyciągający niewłaściwy kabel ze stelaża sugerują słabą higienę centrów danych (etykietowanie i zarządzanie kablami). Istnieją pewne rodzaje nagłych awarii zasilania, których nie zapobiega UPS - awaria zasilacza lub VRM lub BBWC z barierami zapewniłaby integralność danych w przypadku awarii, jednak jak często zdarzają się takie zdarzenia? Bardzo rzadko, sądząc po braku odpowiedzi tutaj.

Z pewnością zwiększenie odporności na awarie na stosie jest znacznie droższe niż BBWC - jednak implementacja serwera jako klastra ma wiele innych korzyści pod względem wydajności i dostępności.

Alternatywnym sposobem na złagodzenie skutków nagłej utraty mocy byłoby wdrożenie SAN - AoE sprawia, że ​​jest to praktyczna propozycja (tak naprawdę nie widzę sensu w iSCSI), ale znowu jest to wyższy koszt.

symcbean
źródło
3
Serwery plików NetApp od wielu lat mają pamięci podręczne zapisu NVRAM, a ja miałem sporo z nich, które tracą moc i nie niszczą swoich systemów plików. Trudno udowodnić, że coś uratowało, ponieważ skoro ktoś został uratowany, katastrofa się nie wydarzyła; jakiego dowodu byś szukał?
MadHatter obsługuje Monikę
Prawdopodobnie powinieneś również pomyśleć o trybach awarii pamięci podręcznej zapisu z podtrzymaniem bateryjnym i pamięci podręcznej zapisu bez akumulatora.
Stefan Lasiewski
1
Nie jest to sondaż - spędziłem dużo czasu na badaniu tego - i mogę znaleźć wiele informacji na temat tego, co powinna zrobić BBWC - ale bardzo niewiele informacji na temat tego, jakie korzyści zostały osiągnięte w praktyce. Zauważ, że jedyną odpowiedzią, jaką miałem poniżej, gdy ktoś powiedział, że BBWC zapisał swoje dane, jest to, że nie było zarządzanego wyłączenia w przypadku awarii zasilania. Jak dotąd nic nie obaliło mojego podejrzenia, że: chociaż BBWC może w niektórych okolicznościach zapisać Twoje dane, okoliczności tych można uniknąć za pomocą innych środków.
symcbean
1
Nie, to dowód, że brak BBWC może spowodować utratę danych . Udowodnienie, że - i podejrzewam, że większość administratorów długodystansowych w tym systemie mają historie, w których dane lotne zostało utracone w dostawie energii; Z pewnością tak - nie udowodniłbym, że posiadanie BBWC może zapisać twoje dane , o co poprosił PO.
MadHatter obsługuje Monikę
1
Niektóre dalsze analizy i modelowanie sugerują, że BBWC + żadne bariery nie mogą prowadzić do niewykrycia korupcji w dowolnym harmonogramie IO innym niż NOOP (mogłem się mylić, ale bardzo starałem się znaleźć dowody sugerujące inaczej). Zobacz także symcbean.blogspot.co.uk/2014/03/…
symcbean

Odpowiedzi:

34

Pewnie. Miałem pamięć podręczną z podtrzymaniem bateryjnym (BBWC), a później pamięć podręczną z pamięcią flash (FBWC) chronią dane w locie po awarii i nagłej utracie zasilania.

Na serwerach HP ProLiant typowy komunikat to:

POST Error: 1792-Drive Array Reports Valid Data Found in Array Accelerator

Co oznacza: Hej, w pamięci podręcznej zapisu są dane, które przetrwały restart / utratę zasilania! Teraz zamierzam zapisać to z powrotem na dysk !!

Ciekawym przypadkiem był mój post-mortem systemu, który stracił moc podczas tornada , sekwencja tablic:

POST Error: 1793-Drive Array - Array Accelerator Battery Depleted - Data Loss
POST Error: 1779-Drive Array Controller Detects Replacement Drives
POST Error: 1792-Drive Array Reports Valid Data Found in Array Accelerator

Błąd testu POST 1793 jest unikalny. - Gdy system był używany, zasilanie zostało przerwane, gdy dane znajdowały się w pamięci Array Accelerator. Jednak ze względu na to, że było to tornado, zasilanie nie zostało przywrócone w ciągu czterech dni, więc baterie matrycy zostały wyczerpane, a dane w nich utracone. Serwer miał dwa kontrolery RAID. Drugi kontroler miał jednostkę FBWC, która trwa znacznie dłużej niż bateria. Ten dysk został poprawnie odzyskany. Niektóre uszkodzenia danych spowodowały, że tablica jest wspierana przez pustą baterię.


Pomimo dużej ilości czasu pracy baterii w obiekcie, cztery dni bez zasilania i niebezpiecznych warunków uniemożliwiły każdemu bezpieczne wyłączenie serwerów. wprowadź opis zdjęcia tutaj

ewwhite
źródło
5
Bardzo pouczająca, dobra robota w utrzymywaniu tych wyników przez jak długi czas.
deed02392
Ciekawy! Zastanawiam się, czy HP planuje uwzględnić w kontrolerach Smart Arrays tę samą bezobsługową pamięć podręczną, którą umieściły w P2000
Gabriel Talavera
4
@GabrielTalavera Tak, HP używa pamięci podręcznej z pamięcią flash (kondensatory) od około 2010 roku. Nigdy więcej baterii.
ewwhite
To samo tutaj przy użyciu Adaptec;) Nigdy więcej zmartwień i regularnych wymian.
TomTom
Dzięki ewwhite - dokładnie tego, czego szukam. Jedno pytanie: co się stało z zasilaniem UPS? Czy Twój UPS nie wyłącza systemu, gdy jest niski?
symcbean
10

Tak, miałem tę sprawę.

Serwer „bez UPS” w centrum danych (z centrum danych posiadającym UPS). Awaria PDU - system mocno się zawiesił. Bez utraty danych.

I w zasadzie to jest to. Zaletą BBWC jest to, że jest w maszynie. Miej UPS - uwierz mi, czasami ktoś robi coś głupiego (jak ciągnięcie niewłaściwego kabla). UPS jest zewnętrzny. Och, TEN kabel;)

TomTom
źródło
Dzięki TomTom. Pozwala to więc przenieść dane do następnej bariery zamiast przywracać ją do poprzedniej (chyba że nie korzystasz z dzienników ani nie logujesz strukturalnych systemów plików). To jeden z kluczowych punktów, które próbuję tutaj ocenić. Wydaje się, że zapewnia marginalnie lepsze przechowywanie roli serwera plików, ale nie pomaga w integralności systemu plików ani integralności bazy danych OLTP.
symcbean
Dokładnie tak - OLTP jest tak skonstruowany, aby z wdziękiem radził sobie z awariami zasilania serwera, o ile zapisy dziennika są zapisywane ostro;) A ponieważ prędkość logów we / wy jest ograniczona, „fałszywe zapisy” (zgłaszane przez kontrolera RAID) dają szybkość - ale na ryzyko utraty danych, chyba że masz nieulotną pamięć podręczną.
TomTom
Zauważam, że RedHat uważa, że ​​powinieneś wyłączyć bariery z BBWC - chociaż poprawi to wydajność, nie zapewnia żadnej ochrony w przypadku nagłego wyłączenia, takiego jak utrata zasilania - erk! access.redhat.com/site/documentation/en-US/…
symcbean
@symcbean Nie powinieneś mieć nagłej utraty zasilania w swoim otoczeniu. To jedna z najłatwiejszych sytuacji, której można uniknąć. Po co sprawić, by Twój serwer działał jak cholera przez 100% czasu w przypadku stosunkowo rzadkich zdarzeń?
ewwhite
1
Właściwie jedynym powodem istnienia BBWC jest łagodzenie problemu nagłej utraty zasilania. Dlatego dobrze jest nie mieć barier.
TomTom
4

Miałem 2 przypadki, w których pamięć podręczna podtrzymywana bateryjnie w kontrolerach HW RAID całkowicie zawiodła (w 2 oddzielnych firmach).

BBC opiera się na zaskakującym pomyśle, że bateria działa. Chodzi o to, że w pewnym momencie bateria w kontrolerze ulega awarii, a druzgocące jest to, że w wielu kontrolerach rajdowych HW zawiesza się cicho . Myśleliśmy, że mamy pamięć podręczną chronioną przed utratą zasilania, ale nie mieliśmy.

W przypadku utraty zasilania utrata danych z macierzy RAID była tak duża, że ​​cała zawartość dysku stała się niemożliwa do odzyskania. Wszystko zginęło. Jeden z przypadków dotyczył maszyny przeznaczonej wyłącznie do testowania, ale nadal.

Potem powiedziałem „nigdy więcej”, przestawiłem się na programowe tworzenie kopii lustrzanych dysków (mdadm) w systemie Linux + oparty na dzienniku fs, który ma przyzwoitą odporność na utratę zasilania (ext4) i nigdy nie oglądał się za siebie. To prawda, że ​​użyłem go na serwerach, które nie miały ekstremalnie wysokiego wykorzystania IO.

LetMeSOThat4U
źródło
Dzięki JD: chociaż nie dokładnie o co pytałem, widzę, że ma to duży związek z założeniami, które ludzie poczynają na temat BBWC. Rezonuje z dużą ilością dyskusji na temat sprzętowego vs programowego RAID, myślę, że powinienem postarać się powiedzieć potomnym, że programowe RAID nie wyklucza użycia kontrolera buforowania (lotnego lub innego).
symcbean
Karty rajdowe IME, Dell i HP będą narzekać (zakładając, że masz odpowiedni system monitorowania) na awarie baterii w BBWC.
mfinni
Prawidłowe procedury dla BBWC muszą obejmować testowanie baterii - na przykład kontrolery 3ware ostrzegają, jeśli bateria nie była testowana przez pewien czas, i łatwo jest sprawdzić, czy bateria jest nadal zdrowa (jedyną wadą jest to, że pamięć podręczna zapisu jest wyłączony podczas testu).
iustin
4

Wydaje się, że wymaga to drugiej odpowiedzi na pytanie ...

Właśnie miałem autonomicznego hosta VMware ESXi, który stracił dysk w macierzy RAID 5. Zdegradowana macierz wpłynęła na wydajność na poziomie maszyny wirtualnej i aplikacji.

Smart Array P410i in Slot 0 (Embedded)    (sn: 5001438011138950)

   array A (SAS, Unused Space: 0  MB)

      logicaldrive 1 (1.6 TB, RAID 5, Recovering, 42% complete)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, Rebuilding)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 300 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 300 GB, OK, spare)

Informatyk w tej firmie nie był świadomy awarii dysku i twardego resetu serwera ( aby wszystko było lepiej? ).

Interesujący efekt zrobienia tego w przypadku skompromitowanej tablicy z zajętymi maszynami wirtualnymi działającymi na szczycie był następujący:

Szczegóły stanu pamięci podręcznej: aktualny kontroler macierzy miał prawidłowe dane zapisane w pamięci podręcznej zapisu wspieranej przez baterię / kondensator podczas ostatniego resetu lub zasilania. Oznacza to, że system mógł nie zostać bezpiecznie zamknięty. Kontroler macierzy automatycznie zapisał lub próbował zapisać te dane na dyskach. Ten komunikat będzie wyświetlany do następnego resetu lub cyklu zasilania kontrolera macierzy.

Nawet jeśli system został nagle zatrzymany, dane w locie były chronione przez BBWC. Wszystkie maszyny wirtualne zostały poprawnie odzyskane, a system jest teraz w dobrej formie.

ewwhite
źródło
3

Oprócz „zapisywania danych” są one również przydatne do innych celów. Są również dobre w buforowaniu zapisów (w pamięci podręcznej), aby poprawić wydajność podsystemu IO, utrzymując niską kolejkę zapisu na dysku. Jest to szczególnie ważne w przypadku serwerów, na których wydajność interaktywna jest najważniejsza - na przykład Citrix XenApp lub Windows Terminal Services.

Jest to mniej ważne dla serwera WWW lub serwera plików. Możesz nie zauważyć, a nawet przyzwyczaić się do niewielkiego opóźnienia. Jednak po kliknięciu ikony w aplikacji pakietu Office oczekujesz czasu reakcji. Podobnie robi twój CEO.

mfinni
źródło
„Wiem, do czego służy BBWC (pamięć podręczna zapisu z podtrzymaniem bateryjnym)”
symcbean
2
Powiedziałeś także: „Jestem ciekawy, czy rzeczywiście oferuje to jakąkolwiek rzeczywistą korzyść w praktyce”. Dałem wam (i przyszłym czytelnikom) konkretny. Z twojego pytania wcale nie było jasne, że wiesz o tej korzyści. I moja odpowiedź nie jest zła.
mfinni
Czym różnią się twoje punkty od niestabilnej pamięci podręcznej zapisu?
symcbean
Oczywiście była to funkcja, o której wiedziałeś. Ale znowu nie wyjaśniłeś tego. @mfinni jest po prostu pomocny.
deed02392
Niektóre systemy nie pozwalają na włączenie ulotnej pamięci podręcznej zapisu, więc jest coś takiego. Ale nie, jeśli nie przejmujesz się danymi i możesz użyć ulotnej pamięci podręcznej zapisu, wybierz ją.
mfinni