Czy obliczanie IOPS dla ZFS RAIDZ jest inne niż obliczanie IOPS dla RAID5 i RAID6?

13

Podczas obliczania IOPS dla tradycyjnych macierzy RAID można zastosować następującą formułę (Zapożyczono z Getting The Hang Of IOPS v1.3 na Symantec Connect):

Ieffective = (n * Isingle) / (READ% + (F * WRITE%))

Gdzie:

  • Ieffective to efektywna liczba IOPS
  • Isingle to średni IOPS dla pojedynczego dysku .
  • n jest liczbą dysków w tablicy
  • READ% to część odczytów pobranych z profilowania dysku
  • WRITE% to część zapisów pobranych z profilowania dysku
  • F jest karą za zapis RAID :

    RAID Level      Write Penalty
    RAID-0          1
    RAID-1          2
    RAID-5          4
    RAID-6          6
    RAID-10         2
    RAID-DP         2
    

Formuła jest zasadniczo funkcją:

  • IOPS dla każdego dysku w macierzy
  • Liczba dysków. Więcej dysków oznacza więcej IOPS
  • Kara RAID za każdą operację zapisu.
    • RAID5 i RAID6 wymagają ponad 4 operacji na dysku dla każdego zapisu. Kontroler musi odczytać blok, a następnie odczytać dane parzystości (dwie operacje), obliczając nowe dane parzystości, a następnie zaktualizować blok parzystości i zaktualizować blok danych (Dwie kolejne operacje). RAID6 ma dwa bloki parzystości i dlatego wymaga trzech odczytów i trzech zapisów. Macierze RAID5 i RAID6 są zatem zdolne do mniejszej liczby operacji IOPS niż RAID1.
    • RAID1 i RAID10 wymagają tylko 2 zapisów, po jednym na każdy dysk w lustrze.

Dla jasności wszystko to zapewnia oszacowanie wydajności teoretycznej. Różne kontrolery i metody RAID mają na celu przyspieszenie niektórych z nich.

Odpowiednikiem RAID5 i RAID6 w ZFS jest RAIDZ i RAIDZ2. Podczas obliczania IOPS dla macierzy RAIDZ, czy mogę użyć tej samej formuły, której używam dla RAID5 i RAID6, czy też ZFS ma specjalne sztuczki w celu zmniejszenia liczby operacji wymaganych do operacji zapisu.

Czy istnieje inna formuła do obliczania IOPS dla macierzy RAIDZ?

Stefan Lasiewski
źródło
1
Świetne pytanie. Nie mogę się doczekać, aby przeczytać odpowiedzi ...
EEAA
1
Iops są mityczne, ale ten dokument może dostarczyć trochę wglądu. info.nexenta.com/rs/nexenta/images/…
Roth
IOPS może być teoretyczny, ale może wyjaśnić, dlaczego macierz RAID10 zwykle przewyższa macierz RAID5, biorąc pod uwagę te same dyski.
Stefan Lasiewski
Jeden znaczący cytat z dokumentu Nexenta: „W konfiguracji RAIDZ-2 pojedyncze IO wchodzące w VDEV musi zostać podzielone i zapisane na wszystkich dyskach danych. Następnie musi zostać obliczona i zapisana parzystość na dysku przed IO może zakończyć się. Jeśli wszystkie dyski mają takie samo opóźnienie, wszystkie operacje na dyskach zostaną zakończone w tym samym czasie, tym samym uzupełniając IO do VDEV z prędkością jednego dysku . Jeśli jest wolny dysk o dużym opóźnieniu w RAIDZ-2 VDEV, IO do VDEV nie kończy się, dopóki IO na najwolniejszym dysku się nie zakończy. "
Stefan Lasiewski,

Odpowiedzi:

13

Łatwiej jest odpowiedzieć ...

Wszystko jest tutaj destylowane: zalecenia ZFS RAID: przestrzeń, wydajność, MTTDL i Bliższe spojrzenie na ZFS, Vdevs i wydajność

  • RAIDZ z jednym dyskiem parzystości zapewni wydajność IOPS pojedynczego dysku, ale n-1 razy zagreguje przepustowość pojedynczego dysku.

Więc jeśli chcesz skalować, skalujesz z liczbą dysków RAIDZ vdevs ... Np. 16 dysków, 4 grupy 4-dyskowych RAIDZ miałyby większy potencjał IOPS niż 2 grupy 8-dyskowych RAIDZ.

Zaskakujące, prawda?

Zwykle korzystam z lustrzanych pasków (RAID 1 + 0) w moich instalacjach ZFS. Obowiązuje ta sama koncepcja. Więcej par lustrzanych == lepsza wydajność.

W ZFS możesz rozwijać tylko w jednostkach pełnego vdev. Zatem, podczas gdy rozszerzenie zestawu RAID 1 + 0 oznacza dodanie większej liczby par, to samo uczynienie dla zestawów RAIDZ oznacza dodanie większej liczby grup RAIDZ o jednakowym składzie.

ewwhite
źródło
Dobry artykuł, ale jest tak stary, że porównanie łączy ZFS RAID1 z RAID5 (brakuje „wyników modelu pojedynczej parzystości” i „wyników modelu podwójnej parzystości”). Szczury
Stefan Lasiewski
RAIDZ z jednym napędem parzystości zapewni wydajność IOPS pojedynczego dysku. To ciekawe, czy to stała wartość niezależnie od procentu odczytu i zapisu? Na przykład wydajność RAID5 różni się znacznie w zależności od odsetka zapisanych wierszy odczytu. Macierz 3-dyskowa 15K może różnić się między 130IOPS a 500IOPS w zależności od racji odczytu / zapisu. 50% odczytów i 50% zapisów spowoduje zwiększenie wydajności IOPS pojedynczego dysku. Użycie 3+ wrzecion poprawia wydajność w porównaniu z 1 wrzecionem, prawda?
Stefan Lasiewski
Myślę tylko o skalowaniu vdev i że wydajność zapisu jest równa 1 dyskowi, bez względu na skład tego vdev; mirror, RAIDZ, RAIDZ2 itp. Dyski wewnątrz vdevs służą do zwiększenia pojemności. Liczba vdevów jest wykorzystywana do budowania wydajności stripingu. Odczyty z vdevs będą skalowane wraz z liczbą dysków.
ewwhite
1
Mam duże doświadczenie w tym zakresie i mogę potwierdzić, że w większości sytuacji RAIDZ NIE osiągnie lepszej wydajności niż ta sama liczba dysków wrzuconych do tradycyjnej macierzy RAID5 / 6. Większość tradycyjnych macierzy RAID5 / 6 zyskuje wydajność IOPS (tę, na której prawie wszyscy się troszczą, nawet jeśli się im nie wydaje), gdy dodajesz wrzeciona do zestawu RAID, podczas gdy ZFS nie. W zamian ZFS nie utraci danych i nie będzie miał problemu z dziurą zapisu RAID. Do tego całe migawki, klony, kompresja i tak dalej. I ARC. I… masz pomysł.
Nex7
2
Chcę tylko wyrazić się jasno - ZFS z założenia nie wygra żadnych wojen wydajnościowych. Możesz znaleźć alternatywne systemy plików i menedżery woluminów (lub kombinacje), które mogą przewyższyć ZFS na tym samym sprzęcie (na przykład ext4 i karta RAID Adaptec). Jedyny wyjątek od tego, o czym wiem, pochodzi z odczytów, które można łatwo buforować, gdzie ARC często daje ZFS przewagę nad większością alternatyw. Ale jeśli chodzi o pisanie? Nie. Wysiłek, jaki ZFS poświęca na integralność danych i sposób, w jaki obsługuje zapisy, prawie nigdy nie wygra konkursów szybkości. Kompromisami są integralność i zestaw funkcji.
Nex7,