Czy dodanie stosów dysków do RAID 0 zwiększa wydajność?

10

Czy dodanie stosów dysków do RAID 0 zwiększa wydajność? wiem, że dwa dyski w pasiastym rajdzie będą zwykle szybsze niż pojedynczy dysk, ale czy zauważę różnicę w wydajności między, powiedzmy, 2 dyskami w pasiastym rajdzie i 8? czy istnieje ogólny limit liczby dysków w rajdzie, zanim naprawdę nie dostaniesz więcej korzyści?

podobne pytanie zostało zadane tutaj

Czy dodanie większej liczby dysków do macierzy RAID 10 zwiększa wydajność?

ale naprawdę pytam, czy dodanie wielu dysków do RAID 0 ma ulepszenia w porównaniu z dodaniem powiedzmy 2 lub 4. czy wydajność ciągle rośnie?

Peter Cullen
źródło

Odpowiedzi:

11

Teoretycznie tak, więcej dysków w RAID0 prowadziłoby do wyższej wydajności, ponieważ obciążenie jest dzielone na więcej dysków. Jednak w praktyce byłbyś ograniczony przepustowością kontrolera RAID, wydajnością procesora i pamięci i tym podobnymi. Wzrost wydajności nie byłby liniowy, to znaczy 4 dyski nie są dokładnie dwa razy szybsze niż 2 dyski.

W każdym dość nowoczesnym systemie z kontrolerem RAID, a nawet korzystającym z oprogramowania RAID z Linuksem, użycie 8 dysków będzie szybsze niż użycie 2 i nie powinieneś być powstrzymywany przez resztę wydajności systemu. Procesor, kontroler RAID i / lub dysk, pamięć, wszystko powinno być w stanie sobie z tym poradzić. Im więcej dysków zostanie dodanych, tym większe zużycie zasobów systemowych. Zwłaszcza jeśli korzystasz z wbudowanego kontrolera SATA w kombinacji softraid. Ale nic, co tak naprawdę nie utrudniłoby ogólnej użyteczności. Jeśli używasz Linuksa, możesz chcieć użyć jądra, które zostało skonfigurowane bez „zapobiegania”, aby zadania zorientowane na serwer miały pierwszeństwo przed reakcją użytkownika.

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

Oczywiście im więcej dysków dodasz, tym większa szansa na awarię jednego z nich i zniszczenie całego nalotu. Spodziewałbym się, że rajd 0 8 dysków nie potrwa dłużej niż rok lub dwa, jeśli będziesz miał szczęście. Raid0 z 16 napędów poprosiłby o kłopoty, a następnie rozważyłbym raid10, wciąż byłby wystarczająco szybki i nie musisz się o to martwić.

Jeśli chodzi o liczbę dysków, które zmaksymalizowałyby zasoby systemu, nie wiedziałbym, gdyby nie posiadałem szczegółowych specyfikacji systemu. Myślę, że byłbyś bardziej ograniczony współczynnikiem awaryjności, jeśli przejdziesz przez około 16 dysków (raczej nie lubię o tym myśleć).

Oczywiście używałbyś raid0 tylko do danych, które można utracić w dowolnym momencie bez problemów. Sprawdziłby się doskonale w przypadku takich rzeczy, jak serwer kompilacji lub miejsce na duże obliczenia naukowe. W rzeczywistości do tych scenariuszy często używałem raid0 i jest to świetny sposób na wyciśnięcie nieco więcej życia z grupy starszych, mniejszych pojemności i niedrogich dysków, które inaczej gromadziłyby kurz. Możesz nawet mieszać rozmiary, przynajmniej z mdadm.

Jeśli używasz mdadm, warto rozważyć użycie raid10, ponieważ w niektórych konfiguracjach może on zbliżyć się do wydajności raid0, czyli wydajności odczytu raid0 i już poprawionej wydajności zapisu w porównaniu z innymi poziomami raidu (z wyjątkiem raid0). Zyskałbyś lepszą redundancję niż inne poziomy rajdu, z niewielką karą prędkości w porównaniu do raidu0. To byłoby najlepsze z obu światów, nie zdarza się tak często.

https://en.wikipedia.org/wiki/RAID#Non-standard_levels

Linux MD RAID 10 zapewnia ogólny sterownik RAID, który w swoim „bliskim” układzie domyślnie ma standardowy RAID 1 z dwoma dyskami oraz standardowy RAID 1 + 0 z czterema dyskami; może jednak obejmować dowolną liczbę dysków, w tym liczby nieparzyste. Dzięki „dalekiemu” układowi MD RAID 10 może działać zarówno w paski, jak i dublowane, nawet z tylko dwoma dyskami w układzie f2; uruchamia to dublowanie z odczytami rozłożonymi, dając wydajność odczytu RAID 0. Zwykła RAID 1, dostarczana przez oprogramowanie RAID systemu Linux, nie rozbiera odczytów, ale może wykonywać odczyty równolegle.

Jak sugerowano w komentarzach, mieszanie rozmiarów z mdadm nie zwiększy prędkości, jeśli wykorzystasz całą przestrzeń dyskową, w przeciwieństwie do umożliwienia najmniejszemu dyskowi zdefiniowania rozmiaru tablicy.

Również czas szukania nie poprawi się podczas raidu0, a nawet może stać się nieco wolniejszy. W przypadku raidu opartego na SSD0 czas poszukiwania byłby tak krótki (od 0,08 do 0,16 ms https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#cite_note-HP_SSD-6 ) nie miałoby to większego znaczenia.

aseq
źródło
Jeśli chcesz mieszać rozmiary, nie możesz zastosować RAID0, przynajmniej w celu wykorzystania całej przestrzeni dyskowej. Musisz użyć JBOD, który nie zwiększa wydajności.
Tero Kilkanen
Możesz mieszać rozmiary za pomocą mdadm, jest bardzo elastyczny, mdadm pozwala nawet skonfigurować 3-dyskowy RAID10. Nie spodziewałbym się, że możesz mieszać rozmiary kontrolerów rajdowych, te są mniej elastyczne, ale szybsze.
aseq
1
Sprawdziłem to, a jeśli chcesz RAID0, to najmniejsze urządzenie z tablicy określa rozmiar całej tablicy. Oznacza to, że jeśli masz dyski 100 GB, 200 GB i 300 GB, otrzymasz macierz RAID0 300 GB oraz 100 GB i 200 GB wolnego miejsca do wykorzystania do innych celów. W trybie liniowym uzyskujesz pełną pojemność wszystkich urządzeń, ale nie wydajność równoległą.
Tero Kilkanen
1
To brzmi właściwie tak.
aseq
2
Czy w przypadku mediów rotacyjnych nie ma również problemu z czasem wyszukiwania a czasem transferu? Dodanie większej liczby dysków powoduje rozłożenie ilości odczytanych / zapisanych na większej liczbie talerzy (każdy musi wykonać mniej == szybciej), ale wszystkie one nadal muszą wykonać operację wyszukiwania (nie zmniejszoną przez dodanie większej liczby dysków). Tak więc, w zależności od rodzaju wykonywanych operacji (tj. Utrata małych odczytów w porównaniu z kilkoma dużymi odczytami), zwiększenie prędkości transferu (poprzez dodanie większej liczby dysków) może mieć małą lub dużą różnicę.
Molomby
1

Zależy to od obciążenia, ale IMHO tak dodanie 2 dodatkowych dysków do istniejącej tablicy 2 dysków powinno zapewnić lepszą ogólną wydajność.

Musisz zdać sobie sprawę, gdzie są wąskie gardła:

  • CPU - ile przepływu danych może obsłużyć procesor,
  • magistrala / kontroler - ile danych może przenosić,
  • SSD / HDD - ile danych może dać / wziąć.

Załóżmy, że istnieje RAID dla oprogramowania Linux, a następnie dodanie dwóch dodatkowych dysków MOŻE spowodować:

  • ~ dwa razy krótszy czas dostępu do wystarczająco dużego bloku danych, co skutkuje;
  • ~ podwójne IOPS,
  • ~ podwójna przepustowość, przy założeniu, że kontroler ma wystarczającą magistralę, a procesor może obsłużyć ruch.

* ~ nigdy nie jest to dwukrotny wzrost następujących czynników, zawsze mniej niż 10-20%. Wygląda mniej więcej liniowo. Proszę, nie traktuj tego jako wiarygodnej odpowiedzi, nie przeprowadziłem żadnych badań na ten temat.

Michał Sokołowski
źródło