
W tym artykule omówimy różne sposoby organizacji macierzy RAID oraz pokażemy jeden z pierwszych kontrolerów RAID z obsługą NVMe.
Całe bogactwo zastosowań technologii RAID występuje w segmencie serwerowym. W segmencie klienckim najczęściej stosowany jest wyłącznie programowy RAID0 lub RAID1 na dwóch dyskach.
W tym artykule znajdziesz krótki przegląd technologii RAID, niewielką instrukcję tworzenia macierzy RAID za pomocą trzech różnych narzędzi oraz porównanie wydajności wirtualnych dysków podczas korzystania z każdego z tych metod.
Czym jest RAID?
daje wyczerpującą definicję technologii RAID:
RAID (ang. Redundant Array of Independent Disks — nadmiarowa macierz niezależnych (samodzielnych) dysków — technologia wirtualizacji danych, która łączy kilka fizycznych urządzeń dyskowych w logiczny moduł, by poprawić niezawodność i wydajność.
Konfiguracja macierzy dyskowych i technologie stosowane w tym przypadku zależą od wybranego poziomu RAID (RAID level). Poziomy RAID są standaryzowane w specyfikacji . Opisuje ona wiele poziomów RAID, jednak najczęściej spotykanymi są RAID0, RAID1, RAID5 i RAID6.
RAID0, lub Stripes, to poziom RAID, który łączy dwa lub więcej fizycznych dysków w jeden logiczny. Objętość dysku logicznego wynosi przy tym sumę objętości fizycznych dysków wchodzących w skład macierzy. W tym poziomie RAID brak jest nadmiarowości, a awaria jednego dysku może prowadzić do utraty wszystkich danych na wirtualnym dysku.
Poziom RAID1, lub Mirror, tworzy identyczne kopie danych na dwóch lub więcej dyskach. Objętość wirtualnego dysku nie przekracza przy tym objętości najmniejszego z dysków fizycznych. Dane na wirtualnym dysku RAID1 będą dostępne, dopóki przynajmniej jeden fizyczny dysk z macierzy działa. Użycie RAID1 dodaje nadmiarowości, ale jest stosunkowo drogim rozwiązaniem, ponieważ w macierzach składających się z dwóch lub więcej dysków dostępna jest objętość tylko jednego.
Poziom RAID5 rozwiązuje problem kosztów. Aby utworzyć macierz z poziomem RAID5, potrzebne są co najmniej 3 dyski, przy czym macierz jest odporna na awarię jednego dysku. Dane w RAID5 są przechowywane w blokach z sumami kontrolnymi. Nie ma wyraźnego podziału na dyski z danymi i dyski z sumami kontrolnymi. Suma kontrolna w RAID5 to wynik operacji XOR stosowanej do N-1 bloków, z których każdy pochodzi z innego dysku.
Chociaż macierze RAID zwiększają redundancję i zapewniają zapas, nie nadają się do przechowywania kopii zapasowych.
Po krótkim wprowadzeniu do rodzajów macierzy RAID można przejść do urządzeń i programów, które umożliwiają tworzenie i korzystanie z macierzy dyskowych.
Rodzaje kontrolerów RAID
Istnieją dwa sposoby utworzenia i wykorzystania macierzy RAID: sprzętowy i programowy. Rozważymy następujące rozwiązania:
- Linux Software RAID.
- Intel® Virtual RAID On CPU.
- LSI MegaRAID 9460-8i.
Warto zauważyć, że rozwiązanie Intel® działa na chipsecie, co powoduje pytanie, czy jest to rozwiązanie sprzętowe, czy programowe. Na przykład hipernadzorca VMWare ESXi uznaje VROC za programowe i nie obsługuje go oficjalnie.
Linux Software RAID
Programowe macierze RAID w rodzinie systemów operacyjnych Linux są powszechnie stosowanym rozwiązaniem zarówno w segmencie klientów, jak i serwerów. Wszystko, co potrzebne do stworzenia macierzy, to narzędzie mdadm i kilka urządzeń blokowych. Jedyne wymogi, jakie Linux Software RAID stawia używanym nośnikom, to bycie urządzeniem blokowym dostępnym dla systemu.
Brak kosztów sprzętowych i programowych to wyraźna zaleta tego sposobu. Linux Software RAID organizuje macierze dyskowe kosztem czasu procesora. Listę obsługiwanych poziomów RAID i stan bieżących macierzy dyskowych można zobaczyć w pliku mdstat, który znajduje się w katalogu głównym procfs:
root@grindelwald:~# cat /proc/mdstat
Osobowości : [linear] [multipath] [raid0] [raid1] [raid10]
nieużywane urządzenia:
Wsparcie dla poziomów RAID dodawane jest przez podłączenie odpowiedniego modułu jądra, na przykład:
root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat
Osobowości : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
nieużywane urządzenia:Wszystkie operacje na macierzach dyskowych są wykonywane za pomocą narzędzia wiersza poleceń mdadm. Tworzenie macierzy dyskowej dokonywane jest w jednej komendzie:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1Po wykonaniu tej komendy w systemie pojawi się blokowe urządzenie /dev/md0, które stanowi wirtualny dysk.
Intel® Wirtualny RAID na CPU
Intel® VROC Standardowy klucz sprzętowy
Intel® Wirtualny RAID na CPU (VROC) to programowo-sprzętowa technologia do tworzenia macierzy RAID opartych na chipsecie Intel®. Technologia ta jest głównie dostępna dla płyt głównych wspierających procesory Intel® Xeon® Scalable. Domyślnie VROC nie jest dostępny. Aby go aktywować, należy zainstalować sprzętowy klucz licencyjny VROC.
Standardowa licencja VROC pozwala na tworzenie macierzy dyskowych z poziomami RAID 0, 1 i 10. Wersja premium rozszerza tę listę o wsparcie dla RAID5.
Technologia Intel® VROC w nowoczesnych płytach głównych współpracuje z urządzeniem zarządzania woluminami Intel® (VMD), co zapewnia możliwość gorącej wymiany dla dysków z interfejsem NVMe.
Intel® VROC ze standardową licencją Ustawienie macierzy odbywa się za pomocą Setup Utility podczas uruchamiania serwera. Na zakładce Advanced pojawi się punkt Intel® Wirtualny RAID na CPU, w którym można skonfigurować macierze dyskowe.
Tworzenie macierzy RAID1 na dwóch dyskach
Technologia Intel® VROC ma swoje „asso w rękawie”. Macierze dyskowe zbudowane za pomocą VROC są zgodne z Linux Software RAID. Oznacza to, że stan macierzy można monitorować w /proc/mdstat, a administracja odbywa się przez mdadm. Ta „cecha” jest oficjalnie wspierana przez Intel. Po zbudowaniu RAID1 w Setup Utility można obserwować synchronizację dysków w systemie operacyjnym:
root@grindelwald:~# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md126 : aktywna raid1 nvme2n1[1] nvme1n1[0]
1855832064 bloki super external:/md127/0 [2/2] [UU]
[>....................] resync = 1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
md127 : nieaktywna nvme1n1[1](S) nvme2n1[0](S)
10402 bloki super external:imsm
nieużywane urządzenia:Warto zauważyć, że za pomocą mdadm nie można tworzyć macierzy na VROC (stworzone macierze będą Linux SW RAID), ale można w nich zmieniać dyski i rozkładać macierze.
LSI MegaRAID 9460-8i
Wygląd kontrolera LSI MegaRAID 9460-8i
Kontroler RAID jest samodzielnym rozwiązaniem sprzętowym. Kontroler pracuje tylko z dyskami podłączonymi bezpośrednio do niego. Ten kontroler RAID obsługuje do 24 dysków z interfejsem NVMe. To wsparcie dla NVMe wyróżnia ten kontroler spośród wielu innych.
Główne menu kontrolera sprzętowego
W trybie UEFI ustawienia kontrolera są integrowane w Setup Utility. W porównaniu z VROC menu kontrolera sprzętowego wygląda znacznie bardziej skomplikowanie.
Tworzenie RAID1 na dwóch dyskach
Wyjaśnienie konfiguracji macierzy dyskowych w kontrolerze sprzętowym jest dość złożonym tematem i może stać się podstawą do pełnoprawnego artykułu. Tutaj ograniczymy się do stworzenia RAID0 i RAID1 z ustawieniami domyślnymi.
Dyski podłączone do kontrolera sprzętowego nie są widoczne dla systemu operacyjnego. Kontroler „maskuje” wszystkie macierze RAID jako nośniki SAS. Nośniki podłączone do kontrolera, ale nie należące do macierzy dyskowej, nie będą dostępne dla systemu operacyjnego.
root@grindelwald:~# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (lokalna kompilacja)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== ZACZNIJ SEKCJĘ INFORMACYJNĄ ===
Dostawca: AVAGO
Produkt: MR9460-8i
Wersja: 5.14
Zgodność: SPC-3
Pojemność Użytkownika: 1,999,844,147,200 bajtów [1.99 TB]
Rozmiar bloku logicznego: 512 bajtów
Prędkość obrotowa: Urządzenie typu Solid State
Identyfikator jednostki logicznej: 0x000000000000000000000000000000
Numer seryjny: 00000000000000000000000000000000
Typ urządzenia: dysk
Lokalny czas: Ndz Paź 11 16:27:59 2020 MSK
Wsparcie SMART: Niedostępne - urządzenie nie ma możliwości SMART.Mimo maskowania pod SAS-nośniki, macierze z NVMe będą działać z prędkością PCIe. Jednak taka cecha pozwala na uruchamianie z NVMe w trybie Legacy.
Stojak testowy
Każda z metod organizacji macierzy dyskowych ma swoje fizyczne plusy i minusy. Ale czy istnieje różnica w wydajności podczas pracy z macierzami dyskowymi?
Aby osiągnąć maksymalną sprawiedliwość, wszystkie testy zostaną przeprowadzone na tym samym serwerze. Jego konfiguracja:
- 2x Intel® Xeon® 6240;
- 12x DDR4-2666 16 GB;
- LSI MegaRAID 9460-8i;
- Intel® VROC Standard Hardware Key;
- 4x Intel® SSD DC P4510 U.2 2TB;
- 1x Samsung 970 EVO Plus M.2 500GB.
Testowanymi są P4510, z których jedna połowa jest podłączona do płyty głównej, a druga — do kontrolera RAID. Na M.2 zainstalowany jest system operacyjny Ubuntu 20.04, a testy będą wykonywane za pomocą fio wersji 3.16.
Testowanie
Najpierw sprawdzimy opóźnienia podczas pracy z dyskiem. Test jest wykonywany w jednym wątku, rozmiar bloku wynosi 4 KB. Każdy test trwa 5 minut. Przed rozpoczęciem dla odpowiedniego urządzenia blokowego ustawia się none jako harmonogram I/O. Komenda fio wygląda następująco:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --iodepth=1 --loops=1000 --runtime=300 --rw= --filename=Z wyników fio bierzemy clat 99,00%. Wyniki przedstawione są w tabeli poniżej.
Losowe odczyty, µs
Losowe zapisy, µs
Dysk
112
78
Linux SW RAID, RAID0
113
45
VROC, RAID0
112
46
LSI, RAID0
122
63
Linux SW RAID, RAID1
113
48
VROC, RAID1
113
45
LSI, RAID1
128
89
Oprócz opóźnień związanych z dostępem do danych, warto zobaczyć wydajność wirtualnych dysków i porównać ją z wydajnością fizycznego dysku. Komenda do uruchomienia fio:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --loops=1000 --runtime=300 --iodepth= --rw= --filename=Wydajność mierzona jest w liczbie operacji we/wy. Wyniki przedstawione są w tabeli poniżej.
Losowe odczyty 1 wątek, IOPS
Losowe zapisy 1 wątek, IOPS
Losowe odczyty 128 wątków, IOPS
Losowe zapisy 128 wątków, IOPS
Dysk
11300
40700
453000
105000
Linux SW RAID, RAID0
11200
52000
429000
232000
VROC, RAID0
11200
52300
441000
162000
LSI, RAID0
10900
44200
311000
160000
Linux SW RAID, RAID1
10000
48600
395000
147000
VROC, RAID1
10000
54400
378000
244000
LSI, RAID1
11000
34300
229000
248000
Łatwo zauważyć, że użycie kontrolera sprzętowego zwiększa opóźnienia i obniża wydajność w porównaniu do rozwiązań programowych.
Podsumowanie
Użycie rozwiązań sprzętowych do tworzenia macierzy dyskowych z dwóch dysków wydaje się nieefektywne. Niemniej jednak, istnieją zadania, w których stosowanie kontrolerów RAID jest uzasadnione. Wraz z pojawieniem się kontrolerów obsługujących interfejs NVMe użytkownicy mają możliwość użycia szybszych SSD w swoich projektach.
Tylko zarejestrowani użytkownicy mogą brać udział w ankiecie. , proszę.
Czy używasz rozwiązań RAID?
29,6%Tak, rozwiązania sprzętowe32
50,0%Tak, rozwiązania programowe54
16,7%Nie18
3,7%RAID nie jest potrzebny4
Zagłosowało 108 użytkowników. Wstrzymało się 14 użytkowników.
Źródło: habr.com
