it-swarm.dev

Jaka jest zalecana konfiguracja RAID dla bazy danych Oracle?

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.

16
Eddie Awad

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łą trasą.

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

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 koncert lub dwa, wystarczy do zabawy) na maszynie opartej na ASM, na SAN z Raidem wirtualizowanym przez Linux i na sprzętowej maszynie RAID.

Mierząc czas wyników zapytań we wszystkich trzech środowiskach, będziesz w stanie odkryć, która metodologia działa najlepiej 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 informacji na temat wymagań dotyczących rozmiaru i wydajności, możliwe będzie zbadanie różnych przypadków testowych.

--Edytować--

Każde „ grupa dysków ” może składać się z jednego lub więcej dysków, katalogów lub plików w odpowiednim podsystemie. Oracle poleca "Aby uzyskać najlepszą wydajność i niezawodność, wybierz urządzenie RAID lub wolumin logiczny na więcej niż jednym urządzeniu fizycznym i zaimplementuj metodologię stripe and-mirror-everything (SAME).” podczas umieszczania plików w systemie plików. Brzmi to tak, jakby Oracle 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ą.

13

Jeśli masz dwa dyski fizyczne:

RAID0: Szybka, ale bez redundancji. Każdy błąd napędu zabije całą tablicę. Niektórzy ludzie umieszczają tymczasową pamięć 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 krytycznym dla misji, 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ę (każdy dysk może ulec awarii na raz, a macierz przetrwa) i podobne wskaźniki wydajności odczytu (podobnie jak macierz 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 sterowania we/wy systemu operacyjnego. 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 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 zmniejszyć ruchy głowy i czas wyszukiwania z powodu „losowego” dostępu to prawdziwy zabójca wydajności. W przypadku hurtowni danych, zakładając, że oznacza to, że relatywnie mało będzie zapisów, rozdzielanie 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 porcji systemu (ponieważ jest to naprawdę znaczące podczas rozruchu lub wymiany i zapewniamy, że jest wystarczy RAM, aby nigdy nie trzeba było zamieniać), ale sposób, w jaki płacimy dostawcy hostingu za ten zestaw maszyn, nie kosztowałby nas mniej, gdyby upuścić dwa dyski. przejdź do tablicy systemowej, zanim zostanie skopiowany 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ść programowej macierzy RAID była niższa niż sprzętowej macierzy RAID dla macierzy RAID 5 z powodu obliczeń parzystości i wszystkich uzgodnień 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ść w dowolnym miejscu blisko (w granicach rzędu wielkości, przypuszczalnie) prędkoś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 oprogramowania i sprzętowego RAID 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.

10
David Spillett

Podręcznik dostrajania wydajności bazy danych Oracle ” zawiera rozdział poświęcony Konfiguracja 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
5
Benoit

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 może zająć dni po odbudowie po wymianie dysków uszkodzonych dla dużej grupy dysków. .. nie wspominając, że sposób, w jaki większość systemów RAID5/6 radzi sobie z błędami parzystości, polega na ponownym obliczeniu parzystości ... ale istnieje prawdopodobieństwo, że błąd dotyczy danych, a nie parzystości, 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 była używana do produkcyjnej bazy danych, a nadmierne sekcje dysku były wykorzystywane 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 byłyby pozbawione pracy, 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 pomógł nam zweryfikować, czy taśmy były dobre) i uruchomiono 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.

4
Joe

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 skonfigurujesz 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, jak macierze RAID spadają mocno , ponieważ drugi dysk zepsuł się, gdy czekali na pierwszy (przyjazd następnego dnia był za późno ).

3
Tangurena

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ę akademicką.

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 RAID0 i RAID1 (w pewnym sensie).

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
jcolebrand