Oprogramowanie a sprzętowa wydajność RAID i użycie pamięci podręcznej

73

Dużo czytałem o kontrolerach / konfiguracjach RAID, a jedną rzeczą, która często się pojawia, jest to, jak kontrolery sprzętowe bez pamięci podręcznej oferują taką samą wydajność jak programowa macierz RAID. Czy tak jest naprawdę?

Zawsze myślałem, że sprzętowe karty RAID oferują lepszą wydajność nawet bez pamięci podręcznej. Mam na myśli, że masz dedykowany sprzęt do wykonywania zadań. Jeśli tak jest, jaka jest korzyść z posiadania karty RAID bez pamięci podręcznej, coś w stylu LSI 9341-4i, który nie jest do końca tani.

Również jeśli wzrost wydajności jest możliwy tylko z pamięcią podręczną, czy istnieje konfiguracja pamięci podręcznej, która od razu zapisuje na dysk, ale przechowuje dane w pamięci podręcznej do operacji odczytu, co sprawia, że ​​BBU nie jest priorytetem?

To tylko ja
źródło
Coś, co zauważyłem, sprzyja raidowi HW: Z mojego doświadczenia wynika, że ​​jeśli korzystasz z raidu SW, a system robi coś innego niż czyste zamknięcie, zrzucisz tablicę i będziesz musiał ją odbudować. Raid HW nie ma winy, jeśli nie pisał, gdy system się zawalił.
Loren Pechtel,

Odpowiedzi:

146

W skrócie: jeśli używasz niskiej klasy karty RAID (bez pamięci podręcznej), zrób sobie przysługę i przełącz się na oprogramowanie RAID. Jeśli używasz karty klasy średniej lub wyższej (z BBU lub NVRAM), sprzęt jest często (ale nie zawsze! Patrz poniżej) dobrym wyborem.

Długa odpowiedź: gdy moc obliczeniowa była ograniczona, sprzętowe karty RAID miały znaczącą przewagę w obliczaniu parzystości / obliczania syndromu dla schematów RAID z nimi związanych (RAID 3/4/5, RAID6, ecc).

Jednak wraz ze stale rosnącą wydajnością procesora ta korzyść zasadniczo zniknęła: nawet starożytny procesor mojego laptopa (Core i5 M 520, generacja Westmere) ma wydajność XOR ponad 4 GB / si wydajność zespołu RAID-6 ponad 3 GB / s w ciągu pojedynczy rdzeń wykonawczy .

Zaletą, jaką utrzymuje dziś sprzętowa macierz RAID, jest obecność pamięci podręcznej DRAM chronionej przed utratą zasilania, w postaci BBU lub NVRAM. Ta chroniona pamięć podręczna zapewnia bardzo małe opóźnienie w dostępie do zapisu losowego (i odczytuje trafiony) i zasadniczo przekształca zapisy losowe w zapisy sekwencyjne. Kontroler RAID bez takiej pamięci podręcznej jest prawie bezużyteczny . Co więcej, niektóre tańsze kontrolery RAID nie tylko są dostarczane bez pamięci podręcznej, ale wymuszają wyłączenie prywatnej pamięci podręcznej DRAM dysku, co prowadzi do niższej wydajności niż bez karty RAID. Przykładem są karty PERC H200 i H300 firmy DELL: jeśli nowsze oprogramowanie sprzętowe tego nie zmieniło, całkowicie wyłączają prywatną pamięć podręczną dysku (i nie można jej ponownie włączyć, gdy dyski są podłączone do kontrolera RAID). Zrób sobie przysługę i zrób tonigdy, nigdy, nigdy nie kupuj takich kontrolerów. Chociaż nawet wyższej klasy kontroler często wyłącza prywatną pamięć podręczną dysku, to przynajmniej ma swoją własną chronioną pamięć podręczną - co powoduje, że prywatna pamięć podręczna HDD (ale nie SSD!) Jest nieco zbędna.

To jednak nie koniec. Nawet zdolne kontrolery (ten z pamięcią podręczną BBU lub NVRAM) mogą dawać niespójne wyniki, gdy są używane z dyskiem SSD, po prostu dlatego, że dyski SSD naprawdę potrzebują szybkiej prywatnej pamięci podręcznej do wydajnego programowania / usuwania stron FLASH. I chociaż niektóre (większość?) Kontrolerów pozwalają ponownie włączyć prywatną pamięć podręczną dysku (np .: PERC H700 / 710 / 710P pozwól, aby użytkownik ją ponownie włączył), jeśli ta prywatna pamięć podręczna nie jest chroniona przed zapisem, ryzykujesz utratę danych w przypadku utraty mocy. Dokładne zachowanie naprawdę jest sterownik i firmware zależne (np: na DELL S6 / I z 256 MB pamięci podręcznej i WB cache włączona dysku to miałem żadnych strat podczas wielokrotnych, planowane badania strat mocy), co daje dużo niepewności i obawy.

Z drugiej strony oprogramowanie RAID typu open source jest znacznie bardziej kontrolowanym zwierzęciem - ich oprogramowanie nie jest zamknięte w zastrzeżonym oprogramowaniu i ma dobrze zdefiniowane wzorce i zachowania metadanych. Programowa macierz RAID przyjmuje (właściwe) założenie, że prywatna pamięć podręczna DRAM dysku nie jest chroniona, ale jednocześnie ma krytyczne znaczenie dla akceptowalnej wydajności - więc zazwyczaj nie wyłączają jej, a raczej używają poleceń ATA FLUSH / FUA, aby mieć pewność, że jest to krytyczne dane lądują na stabilnym miejscu do przechowywania. Ponieważ często działają z portów SATA podłączonych do chipsetu SB, ich przepustowość jest bardzo dobra, a obsługa sterowników jest doskonała.

Jednak w przypadku użycia z mechanicznymi dyskami twardymi, zsynchronizowany losowy wzorzec dostępu do zapisu (np .: bazy danych, maszyny wirtualne) znacznie ucierpi w porównaniu ze sprzętowym kontrolerem RAID z pamięcią podręczną WB. Z drugiej strony, w przypadku użycia z dyskami SSD dla przedsiębiorstw (tj. Z pamięcią podręczną zapisu chronioną przed utratą zasilania), programowa macierz RAID często przoduje i daje wyniki nawet wyższe niż w przypadku sprzętowych kart RAID. To powiedziawszy, musisz pamiętać, że dyski SSD dla konsumentów (odczyt: z niechronioną pamięcią podręczną zapisu zwrotnego), chociaż bardzo dobre w czytaniu i zapisywaniu asynchronicznym, zapewniają bardzo niskie IOPS w obciążeniach zsynchronizowanego zapisu.

Należy również wziąć pod uwagę, że programowe macierze RAID nie są równe. Oprogramowanie systemu Windows RAID ma złą reputację, pod względem wydajności, a nawet przestrzeń dyskowa nie wydaje się zbyt inna. Linux MD Raid jest wyjątkowo szybki i wszechstronny, ale stos we / wy systemu Linux składa się z wielu niezależnych elementów, które należy dokładnie zrozumieć, aby uzyskać maksymalną wydajność. RAID parzystości ZFS (ZRAID) jest bardzo zaawansowany, ale jeśli nie jest poprawnie skonfigurowany, może dawać bardzo słabe IOP; natomiast mirroring + striping działa całkiem dobrze. W każdym razie potrzebuje szybkiego urządzenia SLOG do obsługi zapisu synchronicznego (ZIL).

Dolna linia:

  1. jeśli twoje obciążenia nie są zsynchronizowane na losowe zapisywanie, nie potrzebujesz karty RAID
  2. jeśli potrzebujesz karty RAID, nie kupuj kontrolera RAID bez pamięci podręcznej WB
  3. jeśli planujesz korzystać z oprogramowania SSD, preferowana jest macierz RAID, ale pamiętaj, że w przypadku zsynchronizowanych losowych zapisów potrzebujesz dysku SSD chronionego przed utratą zasilania (np .: Intel S4600, Samsung PM / SM863 itp.). Dla czystej wydajności najlepszym wyborem jest prawdopodobnie Linux MD Raid, ale obecnie zwykle używam rozłożonych lusterek ZFS. Jeśli nie możesz sobie pozwolić na utratę połowy miejsca z powodu kopii lustrzanych i potrzebujesz zaawansowanych funkcji ZFS, skorzystaj z ZRAID, ale dokładnie przemyśl konfigurację VDEV.
  4. nawet jeśli używasz SSD, naprawdę potrzebujesz sprzętowej karty RAID, użyj dysków SSD z pamięcią podręczną chronioną przed zapisem (Micron M500 / 550/600 ma częściową ochronę - naprawdę niewystarczającą, ale lepszą niż nic - podczas gdy Intel DC i S mają pełną utratę mocy ochrona, to samo można powiedzieć o korporacyjnych dyskach SSD Samsung)
  5. jeśli potrzebujesz RAID6 i będziesz korzystać z normalnych, mechanicznych dysków twardych, rozważ zakup szybkiej karty RAID z 512 MB (lub więcej) pamięci podręcznej WB. RAID6 ma wysoką wydajność zapisu, a odpowiednio dobrana pamięć podręczna WB może przynajmniej zapewnić szybką pamięć pośrednią dla małych zapisów synchronicznych (np. Dziennik systemu plików).
  6. jeśli potrzebujesz RAID6 z dyskami twardymi, ale nie możesz / nie chcesz kupować sprzętowej karty RAID, zastanów się dobrze nad konfiguracją oprogramowania RAID. Na przykład, możliwym rozwiązaniem z Linux MD Raid jest użycie dwóch tablic: małej macierzy RAID10 do zapisu dziennika / dzienników DB oraz macierzy RAID6 do przechowywania surowego (jako serwer plików). Z drugiej strony oprogramowanie RAID5 / 6 z dyskami SSD jest bardzo szybkie, więc prawdopodobnie nie potrzebujesz karty RAID do instalacji wszystkich dysków SSD.
Shodanshok
źródło
Wielkie dzięki za wspaniałe wyjaśnienia, nie miałem pojęcia, że ​​karty RAID wyłączają pamięć podręczną na dyskach twardych. Nie jest to typ serwera, który gwarantuje inwestycję o wartości prawie 800 USD +, więc będę czytać o ustawieniach Software RAID nieco więcej i prawdopodobnie pójdę z tym.
ItsJustMe
2
OP mówi o hiperwizorze. RAID5 powinno być wykluczone, a pamięć podręczna zapisu będzie koniecznością.
ewwhite
1
W rzeczywistości nawet w 2016 r. 6-dyskowe oprogramowanie RAID 5/6 zapisuje z prędkością <25 MB / s, a odpowiednia sprzętowa karta RAID z 2010 r. Zapisuje z prędkością> 500 MB / s. Dotyczy to zarówno Intel RSTe, jak i Windows Storage Spaces. Po prostu nie rozumiem, co stanowi wąskie gardło w nowoczesnym procesorze.
Monstieur
1
Problem z oprogramowaniem RAID 5/6 polega na tym, że zapisy często wyzwalają odczyt-modyfikację-zapis, co z kolei znacznie spowalnia dyski. Sprzętowy kontroler RAID z obsługą BBU może łączyć wiele zapisów w jednym dostępie / transakcji na jednym dysku, co znacznie poprawia wydajność.
shodanshok
1
„[losowe odczyty], gdy są używane z dyskami SSD, często przodują” - Jeśli dysk SSD nie jest dyskiem SSD dla przedsiębiorstw (zwykle oznacza to, że nie ma kondensatora do ochrony przed utratą zasilania) i nie kłamie, to nawet dyski SSD mogą mają wyjątkowo niskie IOPS dla operacji takich jak sekwencyjne fsync(). Zobacz ten artykuł , który pokazuje, że dysk SSD Samsung NVMe bez kondensatora wykonuje tylko ~ 250 fsyncs na sekundę (ja też to zmierzyłem). Dyski SSD z kondensatorem dają ~ 30x więcej fsyncs / s, sprzętowy kontroler RAID z baterią 100x więcej.
nh2
7

Będziesz potrzebował rozwiązania w postaci pamięci podręcznej baterii lub pamięci flash dla dowolnego zakupionego kontrolera sprzętowego. Większość żałuje, że tego nie robi .

Ale odpowiedzi na swoje pytanie, większość kontrolerów mają konfigurowalne wskaźniki cache ... więc 100% odczytu pamięci podręcznej i 0% write cache neguje potrzebę ochrony BBU. Twoje wyniki pisania będą po prostu do bani.

Nie mogę odpowiedzieć na pytanie dotyczące oprogramowania RAID, ponieważ to zależy. Linux MD RAID różni się od Windows Software RAID, który jest inny niż ZFS . Rozwiązania takie jak ZFS mogą działać lepiej niż sprzęt, ponieważ wykorzystują zasoby pamięci RAM i procesora serwera.

ewwhite
źródło
Przez „wydajność zapisu po prostu będzie do bani” masz na myśli, że będzie to mniej więcej tyle samo, co Software RAID lub RAID sprzętowy bez pamięci podręcznej? Czy może istnieje kara za pisanie poza tym, jeśli karta poświęca pamięć podręczną na czytanie?
ItsJustMe
To zależy od tego, co robisz. Jeśli nie masz aplikacji intensywnie zapisującej, to obniżenie wydajności może nie stanowić problemu.
ewwhite
Jest to host Proxmox z maszynami wirtualnymi z systemem Windows używanymi do obsługi poczty i hostingu. Korzystanie z bazy danych jest niewielkie, ale usługa poczty e-mail prawdopodobnie ma dużo aktywności zapisu. Obecnie zastanawiam się, czy posiadanie karty pamięci podręcznej tylko do odczytu jest tego warte w porównaniu z programową macierzą RAID.
ItsJustMe
Do wirtualizacji użyj kontrolera RAID z pamięcią flash.
ewwhite
1
Uruchomiliśmy serwer poczty cyrus z około 4000 kont na nim, korzystając z oprogramowania RAID. Aktywne konta trafiające go każdego dnia były bardziej od 300 do 600. Wydajność była zauważalnie gorsza niż nasz główny serwer poczty cyrus ze sprzętowym RAID i BBU. Pamięć podręczna kontrolera BBU i RAID zapewnia bezpieczeństwo danych, ale także wydajność. Dzieje się tak, ponieważ gdy dane dotrą do kontrolera, mogą powiedzieć systemowi operacyjnemu, że zapis został zakończony. W przeciwnym razie musiałby poczekać, aż dysk twardy zasygnalizuje zakończenie zapisu. Oszczędza to znaczące cykle zegara. Przeniesiono do sprzętowej macierzy RAID i rozwiązano.
labradort
7

Kontroler RAID, który masz w oku, jest tani i jest w zasadzie fakeraid. Zapewnienie niektórych funkcji, takich jak pamięć, zależy nawet od płyty głównej. Niewiele płyt głównych obsługuje tę funkcję, co powoduje, że nie można załadować sterownika.

O HW vs samej SW-RAID. Nie używam już HW-RAID, chyba że jest to na przykład pudełko z logo EMC. Mimo wszystko po prostu ponownie wróciłem do SW-RAID wiele księżyców z kilku bardzo prostych powodów.

  1. Potrzebujesz dodatkowego sprzętu i musisz je dopasować. Musisz także dopasować oprogramowanie wewnętrzne i zachować synchronizację. Wiele dysków nie będzie działać poprawnie i bez wyraźnego powodu zwiększysz opóźnienie we / wy.

  2. Dodatkowy sprzęt jest drogi, więc możesz lepiej wykorzystać dodatkowe 1000 USD (przyzwoity kontroler z dwoma / trzema dyskami). Zainwestuj w więcej dysków i standardowych kontrolerów, pamięć ECC, szybszy procesor. A zapasowy dysk na miejscu może być, jeśli planujesz go uruchomić dłużej niż okres gwarancji lub nie chcesz płacić opłat ekspresowych za przesyłkę z dnia na dzień.

  3. Aktualizacja jest trudna, ponieważ musisz śledzić łatki systemu operacyjnego i oprogramowania układowego zarówno dysku, jak i kontrolera. Może to spowodować sytuację, w której aktualizacja / aktualizacja nie będzie już możliwa.

  4. W formatach dyskowych. Wystarczająca liczba dostawców korzysta z własnego wewnętrznego układu do przechowywania danych związanych z poprawką kombinacji sprzętu i oprogramowania układowego. Może to spowodować sytuację, w której część zamienna uniemożliwi dostęp do danych.

  5. Jest to SPOF i wąskie gardło. Posiadanie tylko jednego kontrolera za jednym mostkiem PCI nie zapewnia wydajności i nadmiarowości, których naprawdę potrzebujesz. Dzięki temu nie ma również ścieżki migracji do migracji danych na inny zestaw dysków poza zasięgiem kontrolerów.

Większość z tych kwestii została załatwiona dzięki nowszej generacji oprogramowaniu SW-RAID lub rozwiązaniom takim jak ZFS i BtrFS. Pamiętaj, że ostatecznie chcesz chronić swoje dane i nie są one szybko dostępne, ale są zbędne.

hspaans
źródło
3
Nie zgadzam się. Wiele osób jest zadowolonych z kontrolerów RAID Dell, HP, IBM i wyższej klasy. Ale szczerze mówiąc, większość współczesnych serwerów jakości ma już wbudowane rozwiązania RAID, więc pomysł zakupu pojedynczego kontrolera jest trochę przestarzały. Oprogramowanie RAID musi również uwzględniać obciążenia zapisu o niskim opóźnieniu. ZFS ma ZIL, ale na tym froncie brakuje wielu innych implementacji oprogramowania RAID.
ewwhite
2
Różniłbym się również od twojego ostatniego akapitu, RAID to dostępność, a nie ochrona. Ochrona wymaga tworzenia kopii zapasowych, a nie RAID.
Rowan Hawkins
4

Spędziłem ostatni rok (od i do 2014-2015) testując kilka równoległych konfiguracji CentOS 6.6 RAID 1 (dublowanych) przy użyciu 2 kontrolerów LBA 9300 HBA 2 kontrolerów RAID LSI 9361-8i z systemami zbudowanymi na: 2U Supermicro CSE- Obudowa 826BAC4-R920LPB, płyta główna ASUS Z9PE-D16, 2 procesory Intel Xeon E5-2687W v2 ośmiordzeniowy 3,4 GHz, dublowany Seagate ST6000NM0014 6 TB SAS 12 Gb, 512 GB RAM. Uwaga: jest to konfiguracja w pełni zgodna z SAS3 (12 Gb / s).

Przeszukałem artykuły napisane o oprogramowaniu tuningowym i korzystam z RAID oprogramowania Linux od ponad 10 lat. Podczas uruchamiania podstawowych testów we / wy (dd-oflag = bezpośrednie pliki od 5k do 100G, hdparam -t itp.), Programowa macierz RAID wydaje się układać korzystnie w stos do raidu sprzętowego. Oprogramowanie RAID dublowane przez oddzielne karty HBA. Poszedłem do testowania ze standardowymi konfiguracjami jądra CentOS 6, jądra-lt i jądra-ml. Próbowałem także różnych tuningów mdadm, systemu plików, podsystemu dyskowego i systemów operacyjnych sugerowanych w różnych artykułach online na temat RAID oprogramowania Linux. Pomimo dostrajania, testowania, dostrajania i testowania, kiedy działam w czytanym świecie, systemie przetwarzania transakcji (posiadającym bazę danych MySQL lub Oracle), zauważyłem, że uruchomienie sprzętowego kontrolera RAID powoduje 50-krotny wzrost wydajności.

Przez wiele, wielu miesięcy nie byłem przekonany, że sprzętowa macierz RAID mogłaby być o wiele lepsza, jednak po dogłębnych badaniach oprogramowania RAID w Linuksie, testowaniu i dostrajaniu, były to moje wyniki.

Brent
źródło
2

Większość pisarzy tutaj nie ma pojęcia o „ dziurce ”. Jest to podstawa, która pozwala wykrzyczeć bateryjne jednostki tworzenia kopii zapasowych sprzętowych macierzy RAID w porównaniu do ich braku w przypadku programowych macierzy RAID. Cóż, na przykład, implementacja oprogramowania RAID w systemie Linux albo obsługuje bitmapy operacji zapisu, albo wykonuje pełne ponowne obliczanie „parzystości” w przypadku nieoczyszczonego zamknięcia. ZFS zawsze dąży do zapisywania pełnych pasów, aby uniknąć tej niespójności lub odkładania ponownego sprawdzania. Podsumowując, obecnie wystarczająco inteligentne oprogramowanie RAID jest obecnie wystarczająco dobre, aby go używać zamiast „kto wie, co jest w środku”, tak zwanego „sprzętowego RAID”.

Jeśli chodzi o część pytania dotyczącą pamięci podręcznej, tak naprawdę nie ma to większego znaczenia, ponieważ sama pamięć podręczna zapisu systemu operacyjnego może być znacznie większa niż adapter „sprzętowy”.

poige
źródło
1
Jest to kolejny powód, dla którego należy unikać sprzętowych kart RAID bez odpowiedniej chronionej pamięci podręcznej WB. Uwaga na temat Linux MD Raid: nie jest całkowicie odporna na dziurę w zapisie. Ponieważ nie ma zabezpieczenia przed utratą zasilania, w przypadku nagłej utraty zasilania dane zostaną ostatecznie utracone (pomyśl o przesyłaniu danych i / lub zapisach częściowych). Pewnie tak się stanie nawet w scenariuszu z jednym dyskiem, ale natura parzystości lub RAID5 / 6 to wzmacniają. W najgorszym scenariuszu krytyczne metadane systemu plików mogą zostać uszkodzone, jednak nowoczesne systemy plików są wystarczająco odporne, aby można je było ładnie odzyskać. Jednak niektóre dane mogą zostać utracone.
shodanshok
@shodanshok, całkowicie się mylisz. Pomyśl
poige
1
Wiele akumulatorów, jeśli są utrzymywane w dobrym stanie, może zasilać pamięć podręczną WB na 24-96 godzin, co jest wystarczającą ilością czasu na przywrócenie zasilania, z wyjątkiem naprawdę ekstremalnych sytuacji. Co więcej, nowoczesny kontroler przełączył się na pamięć NVRAM (czytaj: flash) jako pamięć długoterminową, więc w przypadku awarii zasilania mała bateria / superkap opróżni zawartość pamięci podręcznej w pamięci NV, która może przechowywać dane przez miesiące lub lata W innych słowo, kontroler RAID BBU będzie zapobiegać RAID5 / 6 otworów w (prawie) wszystkich okolicznościach.
shodanshok
1
Powiedziałeś, że pisanie dziury jest odporne. Deweloperzy twierdzą, że tak nie jest , choć powiedzieli, że nie powinno to mieć większego znaczenia w rzeczywistym użyciu.
shodanshok
1
Niestety, ale pan napisał: „To jest podstawa, która pozwala na litość dla jednostek zapasowych battey nalotów sprzętowych vs. absense of a takie dla RAID oprogramowania” . To jest ŹLE . Właściwe sprzętowe karty RAID zapewniają dodatkową ochronę, a ja wielokrotnie mówiłem, że jest to opinia tych samych twórców LSR. Teraz zadaję ci pytanie: twoje stwierdzenie jest dobre czy złe? Ponieważ jest to źle, edytuj swoją odpowiedź, aby inny użytkownik nie dał się zwieść temu nonsensowi.
shodanshok
0

Cały czas to pracuję. Zależy to w dużej mierze od tego, co robisz i poziom nalotu, który wspierasz. Kontroler SW z systemem RAID 0 lub 1 dla systemu operacyjnego i nic specjalnego nie jest w porządku. Uruchomienie kontrolera SW z Raidem 5 w bazie danych wymaga problemów! NIEKTÓRE kontrolery sprzętowe dają lepszą wydajność, ale zależy to od tego, czy może buforować i mikroukład procesora karty rajdowej. Nie wszystkie kontrolery oprogramowania są obsługiwane przez wszystkie systemy operacyjne. Czasami więc może być konieczne zakupienie sprzętu, aby uruchomić ESXi ... Chyba że używasz połączeń sata.

Zwariowany facet III
źródło