Słyszałem, że wydajność zapisu w RAID 5 może być czasami przerażająca. Chociaż chcę nadmiarowości, którą zapewnia, nie chcę poświęcać czasów wstawiania / aktualizacji bazy danych.
Czy powinienem się tym martwić, a jeśli tak, to jaka byłaby rekomendacja, aby uzyskać redundancję przy dobrej wydajności zapisu?
performance
raid
database
Scott Saad
źródło
źródło
Odpowiedzi:
RAID 10 jest zwykle zalecany, ponieważ operacje we / wy są tak losowe. Oto przykład. Obliczenia są nieco uproszczone, ale dość reprezentatywne.
Załóżmy, że masz macierz 6 dysków, a twoje dyski mogą wykonywać 100 operacji we / wy na sekundę (IOPS). Jeśli masz 100% odczytów, wszystkie sześć dysków będzie używanych, a będziesz mieć około 600 IOPS zarówno dla RAID 10, jak i RAID 5.
Najgorszym scenariuszem jest zapis w 100%. W tym scenariuszu wydajność RAID 10 zostanie zmniejszona o połowę (ponieważ każdy zapis trafia na dwa dyski), więc otrzyma 300 IOPS. RAID-5 przekształci każdy zapis na dwa odczyty, a następnie dwa zapisy, dzięki czemu uzyska 1/4 wydajności lub około 150 IOPS. To niezły hit.
Rzeczywisty wzorzec odczytu / zapisu znajdzie się gdzieś pomiędzy tymi dwoma skrajnościami, ale dlatego RAID 10 jest zwykle zalecany do baz danych.
Jeśli jednak nie masz zajętego serwera bazy danych, możesz nawet użyć RAID-6. Często to robię, jeśli wiem, że baza danych nie będzie wąskim gardłem, ponieważ zapewnia znacznie większe bezpieczeństwo niż RAID 10 lub RAID 5.
źródło
Transakcyjne bazy danych
RAID-5 zapisuje się stosunkowo wolno, ponieważ kontroler musi załadować wystarczającą ilość danych, aby ponownie obliczyć parzystość zapisu. Operacje zapisu pociągną za sobą co najmniej cztery operacje dyskowe:
Odczyt w bloku parzystości
Odczyt w starym bloku (zakładając, że nie jest on już w pamięci podręcznej) w celu XOR wartości z blokiem parzystości.
Zapis nowego bloku parzystości (stary blok parzystości XOR stary blok danych XOR nowy blok danych)
Zapis nowego bloku danych.
Jeśli system nie korzysta z buforowania z zapisem wstecznym, oznacza to, że wszystkie te operacje znajdują się na ścieżce krytycznej dla zakończenia operacji we / wy. Często dzieje się tak w przypadku zapisów do baz danych - w rzeczywistości Microsoft (na przykład) ma program certyfikacji urządzeń SAN do użytku z serwerem SQL, który wymaga od dostawców zagwarantowania takiego zachowania. Czasami starszy sprzęt RAID-5 nie korzystał z tej optymalizacji i musiał ponownie obliczyć parzystość z całego paska.
RAID-10 ma kopię lustrzaną dla każdego dysku i nie musi czytać dodatkowych danych, aby obliczyć parzystość. Oznacza to, że zapisy wymagają znacznie mniej fizycznych operacji we / wy.
RAID-50 znajduje się gdzieś pośrodku, z woluminem podzielonym na wiele woluminów RAID-5, które z kolei są rozłożone. Na macierzy RAID-50 wykonanej z grup rozłożonych w schemacie 3 + 1 zapis generuje co najwyżej trzy dodatkowe żądania We / Wy dysku. Jeśli czujesz się tak skłonny, możesz postrzegać RAID-5 i RAID-10 jako specjalne przypadki RAID-50. RAID-50 służy głównie do udostępniania dużych woluminów na wielu dyskach fizycznych
Istnieją również inne schematy parzystości, takie jak RAID-6 (schemat parzystości z dwoma redundantnymi dyskami na zestaw). Nowoczesne dyski są wystarczająco duże, aby ponowne zestawienie tablicy mogło zająć dość dużo czasu - wystarczająco długo, aby ryzyko awarii drugiego dysku podczas odbudowa jest dość znacząca. RAID-6 zmniejsza to ryzyko, mając drugi dysk parzystości, wymagający trzech awarii dysku, aby spowodować utratę danych. Podobną sztuczkę jak schematy RAID-50 można wykorzystać do tworzenia macierzy RAID-60.
Wreszcie, pojedyncza para kopii lustrzanych (znana jako RAID-1) może zapewnić nadmiarowość i wystarczająco dobrą wydajność do niektórych zadań. W szczególności prawdopodobnie przekonasz się, że RAID-1 zapewnia wystarczającą przepustowość na dość duży ruch w dzienniku bazy danych. Więcej na ten temat poniżej.
Jeśli masz duże obciążenie zapisu, prawdopodobnie uzyskasz wzrost wydajności z woluminu RAID-10. Może to być wygrana, ponieważ prawdopodobnie możesz uzyskać wymaganą przepustowość z mniejszej liczby dysków fizycznych, zakładając, że dyski mają wystarczającą ilość miejsca. Niektóre elementy, takie jak dzienniki lub obszary tymczasowe na serwerze bazy danych, powinny znajdować się na woluminach RAID-1 lub RAID-10, ponieważ powodują one duży ruch zapisu.
Kłody
Woluminy dziennika charakteryzują się głównie sekwencyjnym wzorcem dostępu do danych i są zasadniczo buforem pierścieniowym składającym się z poleceń w stylu „zapisz te dane do tego bloku”. Są one zapisywane jako producent przez podstawowy silnik DBMS i przetwarzane jako konumer przez funkcję czytnika dziennika. Pojedyncza para kopii lustrzanych będzie obsługiwać całkiem duży ruch w dzienniku.
Systemy i serwery plików wymagające dużej ilości odczytu
W systemie wymagającym intensywnego odczytu, takim jak hurtownia danych, możesz użyć jednego lub więcej woluminów RAID-5. Na serwerze plików dostęp do dysku będzie w dużej mierze wykonywany dla całego pliku, więc zapisy prawdopodobnie wypiszą większość bloków, które tworzą blok parzystości. W takim przypadku kara za wydajność dla RAID-5 będzie mniejsza.
W przeszłości oszczędności na dysku mogły być znaczące, ale teraz jest to mniej prawdopodobne.
Zapisywanie w pamięci podręcznej i RAID-5
Na SAN lub wewnętrznym kontrolerze RAID z pamięcią podręczną zasilaną bateryjnie możesz włączyć buforowanie „Write-back”. Ta pamięć podręczna zapisuje i zwraca kontrolę do aplikacji. We / wy jest zgłaszane przez sterownik jako zakończone. Jednak niekoniecznie natychmiast zapisuje dane na dysk. Ta funkcja pozwala znacznie zoptymalizować operacje odczytu / zapisu parzystości RAID-5 i może złagodzić spadek wydajności zapisu dla woluminów RAID-5x.
Nadal jednak wiąże się to z niewielkim ryzykiem problemów z integralnością danych. Systemowi hostowi powiedziano, że ten zapis został zakończony, gdy tak nie jest. Możliwe jest, że awaria sprzętu spowoduje powstanie niespójności danych między (powiedzmy) woluminami dziennika i danych na serwerze bazy danych. Z tego powodu buforowanie z zapisem zwrotnym nie jest zalecane w systemach transakcyjnych, chociaż może to być wzrost wydajności dla czegoś takiego jak proces ETL.
streszczenie
Dysk przestrzeń jest tak tania, że systemy transakcyjne powinny prawdopodobnie użyć RAID-1 lub RAID-10 tomów dzienników i RAID-10 dla ilości danych. Rozmiar fizycznego dysku prawdopodobnie będzie znacznie większy niż baza danych, a RAID-10 pozwoli na większą przepustowość zapisu dla tej samej liczby dysków, potencjalnie zmniejszając liczbę woluminów dyskowych potrzebnych do obsługi systemu.
Na czymś takim jak hurtownia danych nadal możesz przeżuwać przestrzeń za pomocą dużych, mocno indeksowanych tabel faktów, aby uzyskać niewielką wygraną cenową dzięki wolumenom danych RAID-5 lub RAID-50. Jednak dzienniki i tempdb powinny być nadal umieszczane na woluminie RAID-10, ponieważ prawdopodobnie zapewnią dużo pracy podczas przetwarzania ETL. Jednak oszczędność kosztów na dysku może być raczej niewielka.
źródło
Zależy to w dużej mierze od twojej tolerancji na błędy / ryzyko. RAID5 ma wiele problemów . Mój serwer DB ma obecnie dwa dublowane dyski, a jeśli miałbym to zwiększyć, wybrałbym coś o większej parzystości, prawdopodobnie RAID6 lub RAID10.
Ponadto, jeśli twoja aplikacja ma krytyczny czas działania, prawdopodobnie zaleciłbym zamiast tego dwa serwery bazy danych z replikacją, master-master lub hot spare lub cokolwiek innego. RAID pomaga tylko zapobiegać awariom dysków, ale na serwerze jest wiele innych rzeczy, które mogą pójść nie tak :)
źródło
Zależy od tego, ile piszesz.
Jeśli jest to dość lekka „aplikacja internetowa”, prawdopodobnie nie zauważysz spadku wydajności RAID5.
Jeśli budujesz hurtownię danych o pojemności wielu GB z dużymi ETL, wówczas bufor zapisu na RAID 5 szybko się przepełni i przejdziesz bezpośrednio do „niskiej wydajności zapisu” RAID 5.
Każdy zapis RAID5 spowoduje co najmniej 3 zapisy (plus obliczenie CRC). Po buforowaniu jest to w porządku i szybkie (małe krótkie impulsy aktywności - aktualizacja pojedynczych rekordów i wstawianie). Jeśli jest to trwały zapis (duża zbiorcza wstawka / aktualizacje), zostanie to zauważone.
To równowaga między wydajnością a przestrzenią. RAID 10 (lustro pasiastych dysków) zapewnia zarówno wydajność, jak i elastyczność, ale zmniejsza pojemność o 50%.
RAID5 zapewnia większą pojemność, dobrą wydajność odczytu, ale słabą (dużą) wydajność zapisu.
źródło
RAID 1, to moja ostatnia odpowiedź
Powody:
para lustrzana zapewnia odpowiednią redundancję dla uszkodzonych dysków, a RAID nadal działa na ostatnim dysku.
para lustrzana daje większą wydajność I / O dla odczytów, jeśli umieścisz swoje dane i indeksy ostrożnie ... [wskazówka: Użyj osobnych woluminów dla danych i ich indeksów]. Możesz uzyskać jeszcze większą wydajność, dupleksując kontrolery.
źródło
Dla kilku dobrych przewodników „dlaczego nie” to zawsze było bardzo popularne wśród Oracle DBA, z którymi współpracowałem ...
Bitwa przeciwko każdej Raid Five - http://www.miracleas.com/BAARF/
źródło
Krótka odpowiedź: nie.
Długa odpowiedź: chyba że masz bardzo małą bazę danych lub bardzo minimalne wymagania, nie. Pobieranie danych jest w dużej mierze zależne od operacji we / wy dysku na sekundę, a nakładanie pasków pochłonie dostęp do dysku w miarę upływu czasu, szczególnie w przypadku długich zapytań. Większość baz danych działa w konfiguracji RAID 10 lub z określonymi woluminami zawierającymi partycje danych. Tak, RAID 10 będzie Cię kosztować w zapisach, ale wydajność odczytu (przy odpowiedniej konfiguracji) pójdzie w górę .
źródło
Duża pamięć podręczna zapisu. Zwiększ pamięć RAM w sprzętowym kontrolerze RAID lub pamięć RAM dostępną w oprogramowaniu RAID (np. W systemie Linux MDADM zwiększ pamięć RAM systemu, balony MDADM, aby w przeciwnym razie użyć nieużywanej pamięci RAM jako pamięci podręcznej zapisu). Ta rada odnosi się do podanych wartości „dużego” - jeśli będziesz często (5% czasu?) Zapisywać dane z szybkością wystarczająco szybką, aby wypełnić pamięć podręczną zapisu, bez względu na to, jak duża jest, to nie będzie to miało większego znaczenia.
źródło
Naprawdę chodzi o oddzielenie plików danych, plików dziennika od pliku systemu operacyjnego. Dzienniki zapisują sekwencyjnie Dane powodują wiele losowych odczytów i niektórych losowych zapisów
Budując konfiguracje RAID obsługujące te cechy znacznie poprawiasz wydajność
Raid 1 - mirroring jest świetny dla plików logów Raid 10 jest dobry dla twoich plików danych. Warto również spojrzeć na oddzielenie TempbDB i kopii zapasowych na osobne dyski. Dodawanie aplikacjami jest innym sposobem na zwiększenie wydajności. Jeśli chodzi o sieci SAN, nie jest to takie jasne. Zależy to od tego, czy budujesz określone konfiguracje rajdowe dla każdej jednostki LUN, czy zależy od liczby wrzecion.
źródło
W duchu ostatniego artykułu na blogu StackOverflow mówiącego, że nie powinniśmy ponownie przedstawiać odpowiedzi już dostępnych w Internecie, wskazuję na to
RAID-5 nie jest wyjątkowy pod względem zapewnianej nadmiarowości, robi to, zużywając mniej dodatkowych dysków niż niektóre alternatywy. Możesz wybrać coś innego z równą lub lepszą redundancją i lepszą wydajnością zapisu
źródło
Uruchomienie bazy danych z RAID5 jest zwykle błędem. Widziałem to tylko w dwóch przypadkach - dobrze zaprojektowane bazy danych, które wymagały intensywnego odczytu z niewielką liczbą zapisów, oraz bazy danych, w których „marnowanie miejsca” z powodu RAID5 nie było politycznie wykonalne.
RAID5 zniszczy wydajność transakcyjną.
Ponadto, jeśli rozważasz RAID5, sprawdź, czy możesz uzyskać RAID6 do pracy. Niezawodność teoretyczna jest o wiele lepsza, chociaż niezawodność w świecie rzeczywistym jest często gorsza z powodu niedojrzałych implementacji.
źródło