Dlaczego RAID 0 nie może wykorzystać całego miejsca na dyskach o dwóch różnych rozmiarach?

10

Cytując artykuł w Wikipedii na temat RAID :

RAID 0 można utworzyć z dyskami o różnych rozmiarach, ale przestrzeń dyskowa dodana do tablicy przez każdy dysk jest ograniczona do rozmiaru najmniejszego dysku. Na przykład, jeśli dysk 100 GB jest rozłożony razem z dyskiem 350 GB, rozmiar tablicy wyniesie 200 GB (100 GB × 2).

W artykule nie podano jednak, dlaczego nie można ich razem z RAID-em i zużyć całego miejsca na dysku. Rozumiem, że paski zapisują między nimi, ale z pewnością nie powinno to uniemożliwiać zapisywania do późniejszych sektorów drugiego dysku, działając z obniżoną wydajnością? Czy istnieje alternatywny system RAID (np. Programowy RAID), który oferuje taką funkcję?

Wielomian
źródło
Nie jestem pewien, czy zadziałałoby to z niektórymi raidami sprzętowymi, ale z raidami programowymi. Aby skorzystać z niektórych aspektów raidu 0, wykorzystując więcej dostępnego miejsca na dwóch dyskach o różnych rozmiarach, takich jak jeden 100 GB i jeden 350 GB, możesz spróbować utworzyć 3 Partycje 100 GB na większym dysku i rozłóż partycję 100 KB na pierwszej i 3 partycje 100 GB na drugim dysku. Poziom RAID 0 da ci 400 koncertów przy jednoczesnym zapewnieniu pewnego wzrostu wydajności odczytu / zapisu, ale prawdopodobnie byłby mniejszy niż gdybyś rozłożył dwa dyski 200GB.
Keith Reynolds,
Zwykle nie chcesz tego robić. W celach demonstracyjnych skonfigurowałem RAID0 za pomocą jednego dysku flash 1G i 16G. Zrobiłem rozszerzone partycje wypełniające każdy dysk. Następnie utworzyłem 981 MB partycji na każdym dysku, dopóki nie były pełne. Potem zrobiłem nalot, używając 16 partycji z poleceniem na Linuksie mdadm --create --verbose /dev/md0 --chunk=512 -l0 -n16 /dev/sdd5 /dev/sde5 /dev/sde6 /dev/sde7 /dev/sde8 /dev/sde9 /dev/sde10 /dev/sde11 /dev/sde12 /dev/sde13 /dev/sde14 /dev/sde15 /dev/sde16 /dev/sde17 /dev/sde18 /dev/sde19. Skończyło się na tym, że mam mniej miejsca niż właśnie użyłem napędu 16 GB
Keith Reynolds,

Odpowiedzi:

11

Przyczyną ograniczenia rozmiaru do rozmiaru najmniejszego dysku jest fakt, że paski są zapisywane „na przemian” i muszą mieć ten sam rozmiar.

W systemie z dwoma dyskami wszystkie nieparzyste paski znajdują się na jednym dysku, a parzyste na drugim. Zapisuje na przemian dyski, nieparzyste / parzyste / nieparzyste / parzyste / ...

Ponieważ paski muszą mieć ten sam rozmiar i są sparowane (dla dwóch dysków), ograniczona jest maksymalna przestrzeń do wykorzystania 2 * (rozmiar najmniejszego dysku).

Kok
źródło
2

Państwo może wykorzystać pozostałą przestrzeń. Możesz utworzyć wolumin, korzystając z pozostałej przestrzeni, a nawet użyć go jako części innej macierzy RAID. Jednak użycie tej dodatkowej przestrzeni obniży wydajność macierzy RAID 0, ponieważ dwa różne procesy mogą próbować uzyskać dostęp do tego samego kontrolera fizycznego i dysku.

Dlaczego nie możesz dodać tej dodatkowej przestrzeni do oryginalnej macierzy RAID? Cóż, bez wchodzenia w szczegóły, wynika to z algorytmów używanych w macierzach RAID. RAID 0 zapisuje na pierwszym dysku w macierzy RAID, a następnie na następnym. Zwiększa to wydajność, ponieważ nie musi czekać, aż poprzedni dysk zakończy odczyt lub zapis. Gdyby użyto 250 GB postu, większość zapisu byłaby zapisana na pierwszym dysku, co praktycznie eliminowałoby wzrost wydajności.

RAID może nie być rozwiązaniem, którego szukasz, jeśli chcesz wykorzystać całe miejsce na dyskach, powinieneś rozpinać woluminy. Łączenie pozwala pobrać wiele tomów i połączyć je razem w jeden duży tom. Łączenie nie oferuje zwiększenia wydajności ani redundancji.

Keltari
źródło
To nie wyjaśnia, dlaczego nie można użyć wszystkich dwóch dysków w jednym woluminie. Ponadto oddzielna część woluminów w ogóle nie spowoduje problemów z wydajnością - kontrola We / Wy dysku na niskim poziomie jest obsługiwana przez przerwania za pośrednictwem disk.sys, więc żądania odczytu / zapisu są przetwarzane potokowo, a system Windows obsługuje również nakładające się We / Wy.
Wielomian
Ok, aktualizacja wciąż tego nie wyjaśniła. Znam sposób działania stripingu, ale to nie wyjaśnia, dlaczego nie może po prostu przejść do trybu pojedynczego dysku (ze standardową wydajnością pojedynczego dysku), gdy mniejszy dysk jest pełny. Dziękujemy za wzmiankę o zwiększaniu głośności - to wygląda na przydatne.
Wielomian
1
Ponieważ tak działa RAID. Jeśli naprawdę tego chcesz, możesz RAID 0, co możesz, a następnie utworzyć wolumin z wolną przestrzenią, a następnie rozszerzyć RAID i dodatkowy wolumin. Ale nie sądzę, że jakikolwiek kontroler RAID pozwoli ci to zrobić. Możesz to zrobić za pomocą kombinacji sprzętowej i programowej macierzy RAID.
Keltari
1
-1 „To zwiększa wydajność, jak to robi trzeba czekać na poprzednim dysku, aby zakończyć czytanie lub pisanie” to samo można powiedzieć o dwóch dysków twardych o różnych rozmiarach w RAID 0
celeritas
2
@Polynomial To nie byłby RAID 0. Zapytałeś, dlaczego RAID 0 nie może wykorzystać całego miejsca na dysku, a następnie odpowiadasz „dlaczego nie może po prostu ...”. Nie może, ponieważ jest to RAID 0. Gdyby zrobił coś innego, byłoby to czymś innym.
David Schwartz
0

RAID to pseudo standard opisujący sposób przechowywania danych na macierzy dysków. Standard opisuje cztery różne sposoby przechowywania danych (technicznie więcej, ale przeważnie nikt nie dba o inne):

Raid-0: Striping. Każdy blok danych jest podzielony na każdy element urządzenia RAID. Brak nadmiarowości, więc jest to po prostu tablica niedrogich dysków, a nie nadmiarowa tablica niedrogich dysków.

Raid-1: Mirroring. Każdy blok danych jest przechowywany na każdym dysku w tablicy. To naprawdę sprawia, że ​​tylko z dwoma dyskami. RAID 1/0 lub po prostu RAID 10 to połączenie kopii lustrzanych i pasków i może być użyte do wykorzystania więcej niż dwóch dysków.

Raid-5: Parzystość. Każdy blok danych jest podzielony na każdy element urządzenia RAID + jeden dysk jest przeznaczony na parzystość.

Raid-6: Double Parity: Taki sam jak Raid-5, ale z dwoma dyskami parzystości.

to jest to! Raid nie opisuje, co zrobić z błędnym dopasowaniem rozmiaru lub czymkolwiek innym, ale striping naprawdę działa tylko z dyskami o równej wielkości. Zazwyczaj sposobem na obejście tego jest wykorzystanie pozostałej przestrzeni jako osobnego napędu dyskowego.

Odchodząc od RAID jako sposobu tworzenia dużej macierzy dyskowej, możesz używać takich rzeczy jak ZFS i po prostu dodawać dyski do puli pamięci. ZFS zawsze starałby się używać obu dysków tak skutecznie, jak to możliwe, i można było powiedzieć ZFS, z jakiego poziomu redundancji jesteś zadowolony.

Wcześniejsze technologie to takie jak mapowanie woluminów (tj. LVM lub jego odpowiednik w systemie Windows), które wyodrębniają pomysł mapowania bloków na dysk na wyższy poziom. Dzięki LVM możesz rozciągać się między dyskami, rozszerzać partycje, mieć niesąsiadujące partycje i tak dalej. Mapowanie woluminów nie jest RAID, a zamiast zwiększania wydajności w miarę zwiększania dysków, po prostu losowo wybiera zapis na jednym lub drugim dysku, w zależności od tego, gdzie jesteś w systemie plików. Jest to określane jako łączenie i zwykle jest lepsze niż RAID, jeśli wybierasz IOPS zamiast surowej wydajności.

Claris
źródło
0
A RAID 0 can be created with disks of differing sizes, but the storage
space added to the array by each disk is limited to the size of the
smallest disk.

Może to być prawda i będzie prawdą w przypadku większości implementacji RAID0. Jednak nie dla wszystkich.

Istnieją dwa powody korzystania z RAID 0:

  1. Połącz wiele dysków w jeden duży wolumin.
  2. Występ.

Opcja 2 jest najbardziej popularna i myślę, że jest używana w prawie wszystkich obecnych implementacjach RAID 0. Technicznym wyjaśnieniem jest to, że informacje są zapisywane na przemian między dyskami.

W nietechniczny sposób: pomyśl o dyskach jak o dwóch książkach. Te książki mają ograniczony dostęp (odczyt / zapis). Dlatego zamiast dwóch 100-stronicowych książek przekształcamy je w dwie książki, ale przenumerujemy strony tak, aby wszystkie liczby parzyste były zapisane w jednej książce, a wszystkie liczby nieparzyste w drugiej.

Teraz nasza nowa „książka R0” zachowuje się tak, jakby była to pojedyncza książka z dwukrotnie większą liczbą stron i dwukrotnie większą prędkością.


Opcja 1 może być tak prosta, jak „przyklejanie książek do książek tyłem do siebie”. W takim przypadku nie zyskujesz prędkości, ale możesz przyklejać książki o różnej liczbie stron. Wydaje mi się, że przypominam sobie niektóre implementacje „RAID0” około 1990 roku. Jednak nie jest to, co większość ludzi uważa za „właściwą RAID 0”.

Hennes
źródło