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.