Jaka jest zalecana konfiguracja RAID dla bazy danych Oracle?


16

RAID (redundantne macierze niedrogich dysków) ma różne konfiguracje (RAID-0, RAID-1 ...). Jaka jest zalecana konfiguracja RAID, którą powinienem skonfigurować i używać podczas instalowania bazy danych Oracle. Baza danych będzie wykorzystywana głównie jako hurtownia danych.


RAID0 i RAID1 to zupełnie inne rzeczy. Używasz RAID0 tylko do wydajności, a RAID1 tylko do odporności na uszkodzenia w przypadku awarii dysku.
Jonas

4
RAID0 nigdy nie powinien być nigdy używany na serwerze bazy danych. Chyba że lubisz przywracać z taśmy.
mrdenny,

Odpowiedzi:


13

To zależy. Patrząc na hurtownię danych, jeśli nie masz na myśli konkretnego projektu, automatyczne zarządzanie pamięcią masową może być doskonałą drogą.

Rozważmy dyskusję na AskTom , OTN Forum , OTN Forum 2 i OTN Forum 3 .

Nie ma jednego właściwego sposobu radzenia sobie z rzeczami, a odpowiedzi zmieniają się w zależności od wielu czynników sprzętowych i sieciowych. Aby samemu się przekonać, załaduj wstępnie przykładową hurtownię danych (tylko gigabajt lub dwa, wystarczające do zabawy) na maszynie opartej na ASM, na SAN z Raidem wirtualizowanym przez Linux i na sprzętowej maszynie RAID.

Mierząc czas zapytań we wszystkich trzech środowiskach, będziesz w stanie odkryć, która metodologia jest najlepsza dla Ciebie pod względem wydajności. Wdrożyłem bazy danych przy użyciu ASN i wirtualnych nalotów opartych na systemie Linux, a wirtualny nalot zachowywał się nieco lepiej (kilka lat temu). Podejrzewam jednak, że częściowo było to spowodowane konfiguracją napędów.

Nie ma jednej właściwej odpowiedzi. Jeśli możesz podać nam więcej szczegółów na temat wymagań dotyczących rozmiaru i wydajności, możliwe będzie zbadanie różnych przypadków testowych.

--Edytować--

Każda „ grupa dysków ” może składać się z jednego lub więcej dysków, katalogów lub plików w odpowiednim podsystemie. Oracle zaleca „Aby uzyskać najlepszą wydajność i niezawodność, wybierz urządzenie RAID lub wolumin logiczny na więcej niż jednym urządzeniu fizycznym i zaimplementuj metodologię strip-and-mirror-everything (SAME)”. podczas umieszczania plików w systemie plików. Brzmi to tak, jakby wyrocznia zaleca RAID 1 + 0.

Jednak grupy dysków zarządzanych przez ASM „Normalna grupa dysków nadmiarowych wymaga co najmniej dwóch grup awarii (lub dwóch urządzeń dyskowych), jeśli używasz dublowania dwukierunkowego. Efektywne miejsce na dysku w normalnej grupie dysków nadmiarowych stanowi połowę sumy przestrzeń dyskowa na wszystkich urządzeniach „najwyraźniej automatycznie zapewnia kopię lustrzaną.

Te same urządzenia mogą składać się z urządzeń RAID i tak dalej. W praktycznych testach, kiedy tworzyłem hurtownie danych RAIDed, prosta wirtualna RAID 5 w systemie plików zapewniała akceptowalną wydajność, a dodatkowy ASM nie zwiększał wydajności. W tego rodzaju zadaniu optymalizacji najpierw zidentyfikuj swoje zasoby, a następnie przetestuj każdą możliwą konfigurację, ponieważ czasami wyniki mogą być wyjątkowo sprzeczne z intuicją.


1
Wirtualny nalot brzmi dość zabawnie: /
jcolebrand

10

Jeśli masz dwa dyski fizyczne:

RAID0: Szybka, ale bez redundancji. Każdy błąd napędu zabije całą tablicę. Niektórzy ludzie umieszczają tymczasowe miejsce na RAID0 (tj. Tempdb pod MSSQL), ale nadal uważam to za niebezpieczne, ponieważ nie stracisz żadnych znaczących danych, jeśli tablica się przewróci, będziesz mieć awarię serwera, dopóki sytuacja nie zostanie naprawiona.

RAID1: Wybierz tę opcję, jeśli masz dwa dyski. Nie ma korzyści w zakresie wydajności zapisu, chociaż można zauważyć wzrost wydajności odczytu przy dobrym kontrolerze. Kluczową cechą RAID1 jest przetrwanie jednego z umierających dysków.

Jeśli masz trzy dyski fizyczne:

Dostępne opcje to RAID5, niestandardowy RAID10 z 3 dyskami (lub RAID1E, jak to określają kontrolery IBM), jeśli jest obsługiwany. Możesz oczywiście użyć RAID1 i zachować dodatkowy dysk jako zapasowy na wypadek awarii jednego z pozostałych, ale i tak powinieneś zachować części zamienne w środowisku o krytycznym znaczeniu, więc jest to oczywiste.

RAID5 oferuje więcej miejsca niż RAID10 (dwa dyski warte zamiast półtora), ale ma potencjalny problem z wydajnością zapisu, ponieważ dla każdego zapisanego bloku kontroler musi odczytać blok parzystości, zaktualizować go i zapisać ponownie. Ten problem z wydajnością zapisu można podwoić w przypadku zapisu w bazie danych, ponieważ dla każdej aktualizacji istnieją co najmniej dwa zapisy: jeden do dziennika transakcji i jeden do rzeczywistych obszarów danych. Ponieważ w dzisiejszych czasach miejsce jest tanie, poleciłbym RAID10 z 3 dyskami, jeśli jest obsługiwany dla lepszej wydajności zapisu. Oprogramowanie Linuksa RAID to oferuje, podobnie jak wiele kontrolerów IBM (nazywają to RAID1E). Możesz go znaleźć również pod innymi nazwami, ponieważ nie jest uważany za standardowy układ, więc nie ma standardowej nazwy.

Zarówno R5, jak i R10 powyżej trzech zapewniają tę samą redundancję (jeden dysk może ulec awarii na raz, a macierz przetrwa) i podobne wskaźniki wydajności odczytu (podobne do macierzy RAID0 z dwoma dyskami).

Jeśli masz cztery dyski fizyczne:

Jeśli tworzysz tylko jedną tablicę, istnieją dwie opcje (ignorowanie odmian „z hot spare”): RAID6 i „tradycyjny” RAID10 (RAID0 z RAID1).

Oba dają to samo miejsce (dwa dyski z waszych czterech). RAID6 zapewnia lepszą redundancję, ponieważ dowolne dwa dyski mogą ulec awarii w momencie, gdy RAID10 może przetrwać tylko cztery z sześciu możliwych sytuacji braku dwóch dysków. Oba zapewniają podobną wydajność odczytu, ale RAID6 ma problem z wydajnością zapisu podobny do RAID5 (to samo na dobrym kontrolerze, chociaż może być wolniejszy niż RAID5 na złym kontrolerze lub z programowym RAID w zależności od możliwości systemu operacyjnego we / wy. RAID10 to zwykle preferowane dla baz danych ze względu na wydajność - jeśli potrzebujesz dodatkowej nadmiarowości, możesz użyć sześciu dysków i mieć RAID0 lub 2 3-dyskowe RAID1.

Gdy masz już cztery dyski lub więcej, sprawy stają się bardziej interesujące, ponieważ możesz mieć oddzielną parę macierzy RAID1. Może to przynieść znaczące korzyści w zakresie wydajności przy obracających się dyskach, utrzymując magazyny danych w jednej macierzy, a dzienniki transakcji w innej - może to w niektórych przypadkach znacznie ograniczyć ruchy głowy i czas wyszukiwania z powodu „losowego” dostępu jest prawdziwym zabójcą wydajności. W przypadku hurtowni danych, zakładając, że oznacza to, że relatywnie mało będzie zapisów, dzielenie dzienników transakcji z plików danych może być bardziej ograniczone, ale nadal możesz rozważyć wiele tablic i zamiast tego podzielić dane na partycje, aby potencjalnie poprawić wydajność odczytu .

Jeśli masz więcej niż cztery dyski:

Tutaj opcje są szeroko otwarte, a to naprawdę zależy od tego, jakie są twoje dane i jakie są oczekiwane obciążenia / wzorce aktualizacji / odczytu. Na przykład, gdy jedna z naszych usług działa na dyskach 12 ~ 70 Gb:

  • 4x jako RAID10 dla obszarów systemowych (OS, SQL Server (w naszym przypadku MSSQL), swap, tempdb).
  • 4x jako RAID10 dla plików danych
  • 4x jako RAID10 dla dzienników transakcji

Tempdb jest przechowywany w tablicy systemowej. Możemy przenieść go do pozostałych dwóch tablic i po prostu uruchomić tablicę systemową jako 2 dyski w RAID1, ponieważ dodatkowa prędkość nie jest zbyt potrzebna dla części systemu (ponieważ jest to naprawdę znaczące podczas rozruchu lub wymiany i zapewniamy, że jest wystarczającej ilości pamięci RAM, aby nigdy nie musiała się zamieniać), ale sposób, w jaki płacimy dostawcy hostingu za ten zestaw maszyn, nie kosztuje nas mniej. Kopie zapasowe są również przenoszone do tablicy systemowej, zanim zostaną skopiowane do lokalizacji kopii zapasowych poza serwerem, poza witryną i offline.

Oczywiście jest to poważna przesada w przypadku niektórych baz danych (nie ma sensu uruchamiać w ten sposób małego serwera blogów!), Ale nasza główna aplikacja działa bardzo dobrze w tym układzie.

Jeśli masz sześć dysków, możesz rozważyć trzy macierze RAID1 lub dwie macierze RAID10 z trzema dyskami.

Ogólnie

Niestety nie istnieje żadna prawdziwa prosta „najlepsza praktyka”, ponieważ zależy ona w dużej mierze od wielkości systemu i wzorców użytkowania. Jedynymi ogólnymi zasadami, które mogę wymyślić lub są:

  • unikaj RAID5 i 6, chyba że wiesz, że problem z wydajnością zapisu nie będzie miał na ciebie znaczącego wpływu
  • z czterema lub więcej napędami opartymi na wirującym dysku rozważ podzielenie rzeczy na wiele macierzy, aby zmniejszyć ruchy głowy (pełna korzyść z wielu macierzy nie będzie mieć zastosowania do dobrych dysków SSD, ponieważ nie ma fizycznych ruchów głowy do rozważenia, chociaż możesz zauważyć pewną różnicę w zależności od kontroler SSD zapisujący strategię łączenia zapisu itd.)
  • przetestuj, przetestuj i przetestuj ponownie: zawsze dobrze jest znaleźć czas na sprawdzenie, czy wybrane ustawienie jest rzeczywiście optymalne

Sprzętowy lub programowy RAID?

Kiedyś wydajność programowego RAID była niższa niż sprzętowego RAID dla RAID 5 ze względu na obliczenia parzystości i wszystkie ustalenia z powodu powolnych interfejsów między dyskami a procesorem. W nowoczesnych procesorach problem z obliczaniem parzystości nie jest tak naprawdę problemem, ale jeśli masz bardzo szybkie dyski, sprzętowa macierz RAID może nadal wygrywać, jeśli całkowita prędkość dysków może przyjść gdziekolwiekw pobliżu (w granicach rzędu wielkości, przypuszczalnie) szybkości, z jaką maszyna może rozmawiać z kontrolerem dysku. Jeśli masz macierz RAID1 z czterema dyskami (tj. Cztery kopie tych samych danych dla dużej ilości redundancji) z programową macierzą RAID, każda operacja zapisu spowoduje, że system operacyjny wyśle ​​cztery partie danych do kontrolera we / wy, prawdopodobnie sekwencyjnie - ze sprzętem kontroler system operacyjny wysyła tylko jedno żądanie zapisu, a kontroler wysyła je do czterech dysków, prawdopodobnie równolegle.

Dobry sprzętowy RAID może również oferować inne korzyści: niektóre wysokowydajne kontrolery mają pamięć podręczną zapisu z podtrzymaniem bateryjnym, dzięki czemu oczekujące zapisy nie zostaną utracone w wyniku awarii zasilania, nawet jeśli na przykład wystąpi awaria zasilacza UPS.

Oprogramowanie RAID jest oczywiście tańsze i bardziej przenośne, więc nie jesteś przywiązany do konkretnego kontrolera, jeśli musisz przenieść tablice z powodu awarii kontrolera / maszyny.

Tani sprzętowy RAID zwykle łączy w sobie negatywne cechy RAID programowego i sprzętowego z kilkoma (lub żadnymi) zaletami jednego z nich, więc najlepiej unikać.

Zwykle używam programowego RAID na naszych serwerach deweloperskich, testowych i UAT oraz dobrego sprzętowego RAID dla serwerów obsługujących bieżące usługi dla klientów / publiczności.


5

Podręcznik dostrajania wydajności bazy danych Oracle ” zawiera rozdział poświęcony konfiguracji we / wy . W skrócie:

  • Użyj stripingu (sprzętowy RAID, programowy RAID, ASM)
  • Nie używaj RAID5 do archiwizacji i ponawiania dzienników
  • Wyrównaj rozmiar bloku systemu plików i rozmiar bloku DB

4

W niektórych przypadkach JBOD jest poprawną odpowiedzią (tj. Nie RAID).

Problem polega na tym, że jeśli masz zbyt duże grupy macierzy RAID, nie możesz elastycznie określać sposobu przechowywania fizycznej pamięci masowej w bazie danych, na przykład upewniać się, że indeksy i rekordy tabeli są przechowywane w osobnych wrzecionach, i upewniając się, że balansujesz zapisy na wszystkich dyskach.

Możesz użyć stripingu (RAID0), aby zrównoważyć zapisy, ale jeśli jest to jedna duża grupa, nie możesz oddzielić indeksów od rekordów.

Mirroring (RAID1) jest odporny na awarie i jest szybszy dla odczytów (jak można czytać z dowolnego wrzeciona, które nie jest zajęte), ale może być wolniejszy dla zapisów, ponieważ trzeba czekać na zapisanie obu kopii.

Nigdy nie wybrałbym RAID5 lub RAID6 w bazie danych. Jeśli dane są ważne, kup więcej dysków i skorzystaj z RAID1; RAID5 / 6 działa powoli (szczególnie w oprogramowaniu), a przy dzisiejszych rozmiarach dysków twardych odbudowa może zająć kilka dni po wymianie uszkodzonych dysków dla dużej grupy dysków ... nie wspominając już o tym, że większość systemów RAID5 / 6 radzi sobie z błędami parzystości aby ponownie przeliczyć parzystość ... ale są szanse, że błąd jest w danych, a nie parzystość, ale nie masz pojęcia, gdzie była usterka. (niestety nie sądzę, że istnieje coś takiego jak LOCKSS dla baz danych)

...

Najciekawszy układ, jaki widziałem w bazie danych, polegał na posiadaniu dwóch partycji na wrzeciono - najbardziej wewnętrzna część dysku została wykorzystana do produkcyjnej bazy danych, a nadmierne części dysku zostały wykorzystane do tworzenia kopii zapasowych. (i upewnili się, że nie utworzono kopii zapasowej partycji na tym samym wrzecionie; myślę, że istniało wiele baz danych, więc każda z nich utworzyła kopię zapasową na dyskach z innej). Dało to im przewagę polegającą na rozrzucaniu przedmiotów na więcej wrzecion w ciągu dnia pracy, a następnie w nocy tworzyły kopie zapasowe.

Domyślam się, że odzyskanie danych przebiegałoby wolniej, gdyby coś poszło nie tak i trzeba było przywrócić dane, ponieważ podczas odczytu baz danych trwałyby odczyty z dysku zewnętrznego, ale wszystko jest kompromisowe.

...

Tak czy inaczej, punkt, który próbuję zrobić - nie ma jednej odpowiedzi, która pasowałaby do każdej sytuacji. Gdyby tak było, DBA przestałyby działać, a firmy kupowałyby gotowe urządzenia baz danych.

Bazy danych, z którymi mam do czynienia, nazywane są przez mojego szefa „ZUŻYTYMI”: Napisz raz, nigdy nie czytaj; żartuje, ale „hurtownia danych” może oznaczać dowolny poziom aktywności ... Widziałem niektóre, które były ładowane z taśmy co noc / co tydzień (i były tylko kopiami instancji OLTP i pomogły nam zweryfikować, czy taśmy były dobre) i przeprowadzono na nich ogromne zadania analityczne, a także inne, w których istnieje stały strumień danych wejściowych i okazjonalnych odczytów, ale nie ma prawdziwej konkurencji o zasoby.


1
Grr za brak opinii. Wrócę do tego dziś wieczorem, bo bardzo lubię niektóre z twoich punktów. Jestem też wielkim fanem JBOD, a najlepiej wielu par RAID1.
jcolebrand

@jcolebrand: właściwie, po tym, jak to opublikowałem, przeczytałem o „ASM”, o którym wspomniał Brian Ballsun-Stanton, i wygląda na to, że to Oracle obsługuje dublowanie + stripowanie, a nie na poziomie OS / FS / hardware, więc zrobiliśmy podobne punkty, ale dał lepsze rozwiązanie dla ostatnich instalacji Oracle.
Joe

Co wymaga JBOD, tak jak zaleciłeś, tak?
jcolebrand

@jcolebrand: właściwie. (byłoby wskazane, ale nie uważam tego za konieczne )
Joe

3

Moja rekomendacja dla serwerów to zawsze RAID 5 . Czas i wysiłek poświęcony na odzyskanie pierwszego uszkodzonego dysku twardego zawsze będzie niezapomniany. Jeśli konfigurujesz macierze RAID, zdecydowanie zalecamy standaryzację na jednym dysku i przechowywanie 2 zapasowych dysków twardych w serwerowni. Jeden dysk się psuje? Umieść jedną z zamienników w (i pozwól tablicy przebudować). Widziałem, że macierze RAID spadają mocno, ponieważ drugi dysk zepsuł się, gdy czekali na pierwszy (dostawa następnego dnia wciąż była za późna).


Ale wymiana dysków twardych nie jest domeną DBA, prawda? Monitorowanie dysków pod kątem ich żywotności i awaryjności dotyczy automatycznych narzędzi tłumu SF. Nie powielajmy pracy i nie niszczmy powodów specjalizacji. W końcu jesteśmy dba;)
jcolebrand

Raid 5 zaimplementowany gdzie? Sprzęt komputerowy? Oprogramowanie? Wyrocznia? Na ilu dyskach? Co z zalecaną macierzą dysków Oracle? Czy nie do tego służą ponowne dzienniki archiwów?
Brian Ballsun-Stanton

2
RAID5 może mieć poważne problemy z wydajnością zapisu. RAID10 jest bardziej powszechny w przypadku serwerów DB.
David Spillett,

@jcolebrand, Wiele firm, dla których pracowałem, traktuje administratorów sieci == administratorów serwerów == administratorów baz danych. W niektórych jest tylko kilka osób z dostępem do centrum danych produkcyjnych, więc osoby te muszą nosić 2 czapki na raz. W wielu, dla których pracowałem, administratorzy serwerów nie wiedzą, co się dzieje, dlatego angażuję się, więc muszę też znać ich pracę.
Tangurena

Cóż, to fajne, a jednocześnie do bani. Cieszę się, że mam głos doświadczenia;) [PS: moja była +1]
jcolebrand

2

Ile danych zamierzasz używać i jak często zamierzasz czytać a pisać z systemu? W grę wchodzi wiele planów, na tyle, że niektórzy poświęcają temu tematowi całą karierę naukową.

Zwykle powiem wam, abyście przejrzeli do Wikipedii i przeczytali artykuł przed kontynuowaniem, ponieważ istnieje kilka rodzajów macierzy RAID i najlepiej jest używać ich w innym miejscu.

Podstawy wyglądają następująco:

RAID0

Dobry dla graczy wideo. Złe dla prawie każdego innego. Nie byłoby źle używać tego do serwera buforującego, który nie musi przechowywać danych przez dłuższy czas. Gdy dysk ulegnie awarii, system nie działa. Koniec gry.

RAID1

Idealne dla niezawodności. Niewiele możliwości rozbudowy. Całkiem niezła prędkość.

RAID5

Preferowana mieszanka między RAID0 i RAID1 (tak jakby).

Teraz, po tym, naprawdę staje się prawie czymś, o co należy zapytać w ServerFault, ponieważ jest to bardziej konfiguracja serwera niż projekt bazy danych. Zawsze omawiaj wydajność serwera z administratorem serwera. Po to są. Gdyby nie była to prywatna wersja beta, zagłosowałbym za zamknięciem, aby Cię tam przenieść.


2
Chociaż ServerFault z pewnością nie byłby złym miejscem na to pytanie, tutaj prawdopodobnie jest to poprawne. Problemy z wydajnością we / wy są czymś, o czym DBA powinien zdawać sobie sprawę.
David Spillett,

@David Zdecydowanie się zgadzam, ale istnieje różnica w tym, że beig jest świadomy i sam spekuluje. Z mojego doświadczenia wynika, że ​​nigdy nie było to zadanie jednoosobowe, gdy strona miała być duża i zajęta. Dwie głowy są lepsze niż jedna i to wszystko
jcolebrand
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.