Do czego służy BBU (kontroler RAID)?

13

Zastanawiam się, jaki jest cel BBU. Najpierw zrozumiałem, że umożliwia to zapisywanie danych w pamięci podręcznej podczas awarii zasilania. Ale niektóre specyfikacje mówią, że BBU może przechowywać swoje dane do 72 godzin. Spodziewałbym się, że dane zostaną zapisane na dysku w ciągu milisekund (biorąc pod uwagę, że dysk również ma moc).

Więc czy BBU powinno nie tylko chronić pamięć podręczną, ale cały dysk także przez kilka sekund? Czy nie byłoby to jeszcze bardziej bezpieczne, ponieważ dane z pamięci podręcznej są zapisywane na dysku zamiast znajdować się w pamięci podręcznej i ponownie czekać na zasilanie? Po około minucie dysk może zostać wyłączony.

tanascius
źródło
Chociaż akumulatory RAID nie zasilają rzeczywistych napędów, w naszym świecie istnieje coś, co pierwotnie sobie wyobrażałeś: niektóre dyski SSD klasy serwerowej mają „superkondensatory”, które zapewniają zasilanie zapasowe do wykonywania zapisów w pamięci podręcznej w ciągu milisekund po awarii zasilania.
Skyhawk

Odpowiedzi:

17

Nie zasila dysków, po prostu przechowuje dane w pamięci podręcznej (w tym przypadku) do 72 godzin, dopóki nie przywrócisz komputera do pracy. Po ponownym włączeniu komputera zapisze zawartość pamięci podręcznej z powrotem na dyskach.

Wszystko, co robi, to ochrona przed awarią zasilania. Jeśli (z jakiegoś powodu) urządzenie straci moc bez czystego wypłukania danych na dysk, bateria utrzymuje zawartość pamięci podręcznej przy życiu do momentu ponownego uruchomienia urządzenia.

Nie jest to UPS dla dysków, ponieważ dyski mogą znajdować się w zewnętrznej macierzy dyskowej lub nawet w innym obwodzie zasilania. Nawet UPS może zawieść.

ConcernedOfTunbridgeWells
źródło
1
Różnica między zasilaczem UPS a dyskami polega na tym, że jest on przeznaczony do scenariusza, w którym dyski nie są w tym samym obwodzie zasilania? Czy we wszystkich innych przypadkach (sterownik i dyski w jednym obwodzie) UPS byłby lepszy? Nadal wolałbym, aby ostatnie polecenia były zapisywane na dysku zamiast czekać w pamięci podręcznej podczas awarii zasilania.
tanascius
Kup więc UPS dla swojego serwera! BBU nie ma wystarczającej mocy, aby uruchomić szereg napędów. Daje ci wystarczająco duże okno, abyś mógł odzyskać energię i zapisać zmiany. Większość awarii jest bardzo krótka i większość ludzi nie potrzebuje dodatkowych kosztów UPS na maszyny nieistotne.
JamesRyan
1
Wszystko, co BBU robi, to przechowywać dane w pamięci podręcznej do momentu ponownego uruchomienia komputera. Kontroler wie, co zostało wypłukane na dysk (dysk sygnalizuje, że operacja została zakończona). Wszystko, co nie zostanie wypłukane na dysk, zostanie zachowane do momentu ponownego uruchomienia komputera.
ConcernedOfTunbridgeWells
13

Działa to tak:

Większość systemów operacyjnych ma wywołanie systemowe, które umożliwia tak zwany „zapis synchroniczny”. Oznacza to, że podczas operacji zapisu, jeśli zapis został zakończony, jest zagwarantowane, że został on zapisany na dysku.

Zapis synchroniczny nie jest zatem buforowany. Blokuje aplikację do momentu jej zakończenia. Ten rodzaj operacji jest oczywiście wolniejszy niż zapis w pamięci podręcznej, który przechowuje dane w pamięci systemu operacyjnego, dopóki dysk nie będzie wystarczająco bezczynny, a następnie zapisuje dane.

Niektóre krytyczne oprogramowanie, takie jak oprogramowanie bazy danych, wykonuje synchroniczne zapisy dla krytycznych danych, ponieważ w połowie zapisana aktualizacja w przypadku utraty zasilania może mieć negatywny wpływ na integralność bazy danych.

Kontrolery RAID są notorycznie powolne w przypadku zapisu RAID-5, więc staje się to problemem, jeśli oprogramowanie aplikacji używa dużej liczby zapisów synchronicznych. Z tego powodu kontrolery RAID-5 są wyposażone we własne pamięci podręczne.

Kontroler RAID zamiast tego zapisuje dane w swojej pamięci podręcznej, a następnie LIES w systemie operacyjnym, mówiąc, że zapisał dane na dysku, podczas gdy dane nadal znajdują się w pamięci podręcznej RAID.

Ale co się stanie, jeśli nastąpi utrata zasilania, gdy dane nadal będą znajdować się w buforze kontrolera RAID? Na twoich dyskach miałbyś do połowy zapisane i prawdopodobnie niespójne dane.

Można powiedzieć, że to zachowanie nie pozwala na cel zapisu synchronicznego ... jeśli zapisywanie w pamięci podręcznej byłoby w porządku, to aplikacja nie poprosiłaby o zapis synchroniczny.

Kompromis jest następujący: kontroler RAID nadal polega na tym, że system operacyjny przesłał dane na dysk, ale aby chronić te krytyczne dane w przypadku awarii zasilania, kontroler RAID ma baterię, która utrzymuje pamięć podręczną przez pewien czas, dopóki nie będzie możliwe zasilanie przywrócone.

Więc po przywróceniu zasilania i uruchomieniu dysków oraz zainicjowaniu, kontroler nadal ma te dane w pamięci podręcznej dzięki baterii i może zakończyć zapisywanie transakcji na dysku.

Wszyscy są szczęśliwi.

Dlatego kontrolery RAID zwykle nie pozwalają włączyć pamięci podręcznej zapisu, chyba że masz funkcjonalną i naładowaną baterię.

Terlisimo
źródło
Zapytałbym o lokalizację kontrolera. Czy jest to część płyty głównej, czy wbudowane w dysk twardy?
Valentin Tihomirov
Chciałbym również wiedzieć, w jaki sposób system operacyjny może wysyłać proper shutdownżądania, jeśli RAID leży na nim po wydaniu koloru?
Valentin Tihomirov
@ValentinTihomirov Nie ma czegoś takiego jak properlub improperzamknięcie. System operacyjny emituje sygnał wyłączania, a zasilacz robi to po wyłączeniu zasilania. Gdy zasilanie jest wyłączone, pamięć ulotna i cała jej zawartość tracona!
PF4Public
4

Warto wspomnieć, że niektóre nowsze kontrolery dysków są teraz wyposażone w pamięć podręczną z szybką pamięcią flash, która przechowuje dane znacznie dłużej niż typowe 72 godziny, często jest też znacznie większa (~ 1 GB). Jeśli potrzebujesz szczegółów części, daj mi znać.

Siekacz 3
źródło
Dzięki za informację, ale nie jestem Sysadminem i prawdopodobnie nigdy nie zaprojektuję profesjonalnej macierzy RAID ... Jestem ciekawy BBU :)
tanascius
3

Pomyśl o tej pamięci podręcznej BBU jako o dodaniu podobnego poziomu ochrony, jaki zapewnia kronikowany system plików. Ma to na celu umożliwienie wykonania transakcji, w tym przypadku zwykłych zapisów, jeśli zostaną one przerwane przez awarię zasilania. Po zaniku zasilania kontroler nie może kontynuować zapisu, ponieważ spowodowałoby to całkowicie nieprzewidywalne wyniki. Zamiast tego przechowuje dane tak długo, jak to możliwe i zakończy zapisywanie, jeśli / kiedy zasilanie zostanie wznowione. Nie działa jednak jak zasilacz UPS dla napędów.

John Gardeniers
źródło
Ale kiedy mam UPS dla napędów + kontrolera - do czego potrzebuję BBU? Tylko w przypadku scenariusza, w którym UPS również zawodzi?
tanascius
Dobre pytanie. Jeśli wiesz, że serwer ZAWSZE zostanie zamknięty z wdziękiem, to nie jestem przekonany o potrzebie posiadania BBU.
John Gardeniers,
2
BBU jest zwykle często używane w konfiguracjach z zapisem wstecznym. Niektóre kontrolery RAID nie umożliwią zapisu wstecznego bez obecności BBU. Myślę jednak, że prawdopodobnie złym pomysłem jest założenie, że Twój serwer zawsze zostanie poprawnie zamknięty.
ConcernedOfTunbridgeWells
2

Zdobycie tej baterii o wartości 100 USD jest koniecznością, szczególnie na serwerze DB, nawet jeśli awarie zasilania występują rzadko. Nawet jeśli masz włączone transakcje , a serwer traci moc, zanim zmiany te opuści pamięć podręczną i zostaną zapisane na dysku, pozostanie ci niepełne zapytanie lub uszkodzone dane.

Andy
źródło
1

Jeśli Twój serwer ulegnie awarii, zawiesi się lub ktoś wyciągnie kabel zasilający, BBU ochroni Cię przed uszkodzonymi lub utraconymi danymi, jeśli używasz pamięci podręcznej zapisu. Korzystanie z USV chroni tylko przed awarią zasilania.

Jeśli nie chcesz używać pamięci podręcznej zapisu, nie potrzebujesz BBU.

JPS
źródło
1

Karta RAID może mieć 1 GB pamięci podręcznej; nawet jeśli zwykle nie będzie to wszystko używane do pamięci podręcznej zapisu, można założyć, że będzie przechowywać dość długą kolejkę niepisanych danych.

Systemy plików i bazy danych zakładają, że ich synchroniczne zapisy nie są ponownie porządkowane, nawet w przypadku awarii zasilania. Zwykle zapis synchroniczny powróci dopiero wtedy, gdy dane znajdą się na dysku, ale jest to stosunkowo powolne. Karty RAID poprawiają wydajność, grupując mniejsze zapisy i zmieniając ich kolejność, aby były mniej losowe.

Gdyby nie było BBU, awaria zasilania pod obciążeniem miałaby katastrofalne skutki, z zapisem, że karta RAID obiecała, że ​​tam zginie (tak jak w przypadku systemu plików, możesz mieć odniesienia do nowego pliku lub katalogu, ale brak powiedział plik lub katalog, mimo że system plików specjalnie utworzył nowy plik przed wszelkimi odniesieniami do niego, aby tego uniknąć), wymagając przywrócenia z kopii zapasowych lub po prostu mając nadzieję, że twoje dane nie są zbyt źle pomieszane. Co gorsza, jeśli ktoś usunął tajny plik, a ktoś inny utworzył plik odczytywalny dla świata, może się zdarzyć, że część zawartości tajnego pliku znajdzie się w pliku odczytywalnym dla świata. Po złamaniu założeń, na których zbudowany jest system plików, wszystko jest możliwe.

Zakładanie, że UPS gwarantuje nieprzerwane zasilanie, jest naiwne; co się stanie, jeśli urządzenie ulegnie awarii i konieczne będzie pociągnięcie za przewód zasilający lub ktoś potknie się na nim?

Dyski konsumenckie SATA (i dyski SSD) czasami również buforują zapisy synchroniczne, ale ich pamięci podręczne są znacznie mniejsze, a korzystanie z nich przez konsumentów jest mniej wymagające, więc zwykle mogą sobie z tym poradzić.

Nowoczesne kontrolery RAID mają również pamięć flash, do której kopiują zawartość pamięci podręcznej zapisu w przypadku awarii zasilania, więc bateria nie musi trwać dłużej niż kilka sekund.

Jussi Peltola
źródło