Macierze RAID na NVMe

Macierze RAID na NVMe
W tym artykule omówimy różne sposoby organizacji macierzy RAID, a także pokażemy jeden z pierwszych sprzętowych kontrolerów RAID z obsługą NVMe.

Całą różnorodność zastosowań technologii RAID można znaleźć w segmencie serwerów. W segmencie klienckim najczęściej wykorzystuje się wyłącznie oprogramowanie RAID0 lub RAID1 na dwóch dyskach.

W tym artykule znajdziesz krótki przegląd technologii RAID, krótki samouczek na temat tworzenia macierzy RAID przy użyciu trzech różnych narzędzi oraz porównanie wydajności dysku wirtualnego przy użyciu każdej metody.

Co to jest RAID?

Wikipedia podaje kompleksową definicję technologii RAID:

RAID (English Nadmiarowa Macierz Niezależnych Dysków - nadmiarowa macierz niezależnych (niezależnych) dysków) - technologia wirtualizacji danych polegająca na łączeniu kilku fizycznych urządzeń dyskowych w moduł logiczny w celu zwiększenia odporności na awarie i wydajności.

Konfiguracja macierzy dyskowych i zastosowane technologie zależą od wybranych Poziom RAID. Poziomy RAID są ustandaryzowane w specyfikacji Wspólny format danych dysku RAID. Opisuje wiele poziomów RAID, ale najczęstsze to RAID0, RAID1, RAID5 i RAID6.

RAID0Lub Paski, to poziom RAID, który łączy dwa lub więcej dysków fizycznych w jeden dysk logiczny. Objętość dysku logicznego jest równa sumie woluminów dysków fizycznych wchodzących w skład macierzy. Na tym poziomie RAID nie ma nadmiarowości, a awaria jednego dysku może skutkować utratą wszystkich danych na dysku wirtualnym.

Poziom RAID1Lub Lustro, tworzy identyczne kopie danych na dwóch lub większej liczbie dysków. Rozmiar dysku wirtualnego nie przekracza minimalnego rozmiaru dysków fizycznych. Dane na dysku wirtualnym RAID1 będą dostępne tak długo, jak będzie działał co najmniej jeden dysk fizyczny z macierzy. Korzystanie z RAID1 zwiększa redundancję, ale jest dość kosztownym rozwiązaniem, ponieważ w macierzach składających się z dwóch lub więcej dysków dostępna jest pojemność tylko jednego.

Poziom RAID5 rozwiązuje problem wysokich kosztów. Do stworzenia macierzy o poziomie RAID5 potrzebne są co najmniej 3 dyski, a macierz jest odporna na awarię jednego dysku. Dane w RAID5 przechowywane są w blokach z sumami kontrolnymi. Nie ma ścisłego podziału na dyski z danymi i dyski z sumami kontrolnymi. Sumy kontrolne w RAID5 są wynikiem operacji XOR zastosowanej do N-1 bloków, każdy pobrany z innego dysku.

Chociaż macierze RAID zwiększają redundancję i zapewniają redundancję, nie nadają się do przechowywania kopii zapasowych.

Po krótkiej wycieczce po typach macierzy RAID można przejść do urządzeń i programów, które umożliwiają składanie i używanie macierzy dyskowych.

Rodzaje kontrolerów RAID

Istnieją dwa sposoby tworzenia i używania macierzy RAID: sprzętowy i programowy. Rozważymy następujące rozwiązania:

  • Linux RAID programowy.
  • Intel® Virtual RAID na procesorze.
  • LSI MegaRAID 9460-8i.

Należy pamiętać, że rozwiązanie Intel® działa na chipsecie, co rodzi pytanie, czy jest to rozwiązanie sprzętowe, czy programowe. Na przykład hiperwizor VMWare ESXi uwzględnia oprogramowanie VROC i oficjalnie go nie obsługuje.

Linux Oprogramowanie RAID

Macierze RAID programowe w rodzinie systemów operacyjnych Linux — dość powszechne rozwiązanie zarówno w segmencie klienta, jak i serwera. Do utworzenia tablicy potrzebne jest tylko narzędzie mdadm i kilka urządzeń blokowych. Jedynym wymaganiem jest Linux RAID programowy do dysków używanych - jest urządzeniem blokowym dostępnym dla systemu.

Brak kosztów sprzętu i oprogramowania jest oczywistą zaletą tej metody. Linux RAID programowy organizuje macierze dyskowe kosztem czasu procesora. Listę obsługiwanych poziomów RAID i aktualny stan macierzy dyskowych można wyświetlić w pliku mdstat, który znajduje się w katalogu głównym procfs:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] 
unused devices: <none>

Obsługa poziomów RAID dodawana jest poprzez podłączenie odpowiedniego modułu jądra, na przykład:

root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
unused devices: <none>

Wszystkie operacje na macierzach dyskowych są wykonywane za pomocą narzędzia wiersza poleceń mdadm. Macierz dyskową składa się za pomocą jednego polecenia:

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1

Po wykonaniu tego polecenia w systemie pojawi się urządzenie blokowe /dev/md0, które reprezentuje Cię jako dysk wirtualny.

Intel® Virtual RAID na procesorze

Macierze RAID na NVMeStandardowy klucz sprzętowy Intel® VROC
Intel® Virtual RAID On CPU (VROC) to technologia sprzętowa i programowa do tworzenia macierzy RAID opartych na chipsetach Intel®. Technologia ta jest dostępna przede wszystkim dla płyt głównych obsługujących procesory Intel® Xeon® Scalable. Domyślnie funkcja VROC nie jest dostępna. Aby go aktywować, musisz zainstalować sprzętowy klucz licencyjny VROC.

Standardowa licencja VROC umożliwia tworzenie macierzy dyskowych o poziomach RAID 0, 1 i 10. Wersja premium poszerza tę listę o obsługę RAID5.

Technologia Intel® VROC na nowoczesnych płytach głównych współpracuje z urządzeniem Intel® Volume Management Device (VMD), które zapewnia możliwość wymiany dysków NVMe podczas pracy.

Macierze RAID na NVMeLicencja standardowa Intel® VROC Tablice są konfigurowane za pomocą narzędzia Setup Utility podczas uruchamiania serwera. Na karcie Zaawansowany Pojawi się element Intel® Virtual RAID on CPU, w którym możesz skonfigurować macierze dyskowe.

Macierze RAID na NVMeTworzenie macierzy RAID1 na dwóch dyskach
Technologia Intel® VROC ma swoje asy w rękawie. Macierze dyskowe zmontowane z wykorzystaniem VROC są kompatybilne z Linux RAID programowy. Oznacza to, że stan macierzy można monitorować w pliku /proc/mdstat i zarządzać nim za pomocą mdadm. Ta funkcja jest oficjalnie obsługiwana przez firmę Intel. Po utworzeniu RAID1, w narzędziu Setup Utility można zobaczyć zsynchronizowane dyski w systemie operacyjnym:

root@grindelwald:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md126 : active raid1 nvme2n1[1] nvme1n1[0]
      1855832064 blocks super external:/md127/0 [2/2] [UU]
      [>....................]  resync =  1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
      
md127 : inactive nvme1n1[1](S) nvme2n1[0](S)
      10402 blocks super external:imsm
       
unused devices: <none>

Należy pamiętać, że nie można składać tablic na VROC za pomocą mdadm (złożone tablice będą Linux SW RAID), ale można w nich wymieniać dyski i rozmontowywać macierze.

LSI MegaRAID 9460-8i

Macierze RAID na NVMeWygląd kontrolera LSI MegaRAID 9460-8i
Kontroler RAID jest samodzielnym rozwiązaniem sprzętowym. Kontroler współpracuje wyłącznie z dyskami podłączonymi bezpośrednio do niego. Ten kontroler RAID obsługuje do 24 dysków NVMe. To obsługa NVMe wyróżnia ten kontroler spośród wielu innych.

Macierze RAID na NVMeMenu główne sterownika sprzętowego
Podczas korzystania z trybu UEFI ustawienia kontrolera są zintegrowane z narzędziem Setup Utility. W porównaniu do VROC menu kontrolera sprzętowego wygląda znacznie bardziej skomplikowanie.

Macierze RAID na NVMeTworzenie RAID1 na dwóch dyskach
Wyjaśnienie sposobu konfiguracji macierzy dyskowych na kontrolerze sprzętowym jest dość delikatnym tematem i mogłoby być powodem do napisania pełnoprawnego artykułu. Tutaj ograniczymy się po prostu do tworzenia RAID0 i RAID1 z ustawieniami domyślnymi.

Dyski podłączone do kontrolera sprzętowego nie są widoczne dla systemu operacyjnego. Zamiast tego kontroler „maskuje” wszystkie macierze RAID jako dyski SAS. Napędy podłączone do kontrolera, ale niebędące częścią 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] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Vendor:               AVAGO
Product:              MR9460-8i
Revision:             5.14
Compliance:           SPC-3
User Capacity:        1,999,844,147,200 bytes [1.99 TB]
Logical block size:   512 bytes
Rotation Rate:        Solid State Device
Logical Unit id:      0x000000000000000000000000000000
Serial number:        00000000000000000000000000000000
Device type:          disk
Local Time is:        Sun Oct 11 16:27:59 2020 MSK
SMART support is:     Unavailable - device lacks SMART capability.

Pomimo tego, że są zamaskowane jako dyski SAS, macierze NVMe będą działać z szybkościami PCIe. Jednak ta funkcja umożliwia rozruch z NVMe w wersji Legacy.

Stanowisko badawcze

Każda metoda organizacji macierzy dyskowych ma swoje fizyczne zalety i wady. Ale czy istnieje różnica w wydajności podczas pracy z macierzami dyskowymi?

Aby osiągnąć maksymalną uczciwość, wszystkie testy zostaną przeprowadzone na tym samym serwerze. Jego konfiguracja:

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 16 GB;
  • LSI MegaRAID 9460-8i;
  • Standardowy klucz sprzętowy Intel® VROC;
  • 4x Intel® SSD DC P4510 U.2 2 TB;
  • 1x Samsung 970 EVO Plus M.2 500 GB.

Jednostki testowe to P4510, z jedną połówką podłączoną do płyty głównej, a drugą do kontrolera RAID. System operacyjny jest zainstalowany na dysku M.2. Ubuntu 20.04, a testy zostaną przeprowadzone przy użyciu wersji fio 3.16.

Testowanie

Przede wszystkim sprawdźmy opóźnienia podczas pracy z dyskiem. Test wykonywany jest w jednym wątku, wielkość bloku wynosi 4 KB. Każdy test trwa 5 minut. Przed rozpoczęciem odpowiednie urządzenie blokowe jest ustawione na brak jako harmonogram we/wy. Polecenie fio wygląda następująco:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --iodepth=1 --loops=1000 --runtime=300  --rw=<mode> --filename=<blkdev>

Z wyników fio bierzemy 99.00%. Wyniki przedstawiono w poniższej tabeli.

Losowy odczyt, μs
Losowe nagranie, μs

dysk
112
78

Linux RAID programowy, RAID0
113
45

VROC, RAID0
112
46

LSI, RAID0
122
63

Linux RAID programowy, RAID1
113
48

VROC, RAID1
113
45

LSI, RAID1
128
89

Oprócz opóźnień w dostępie do danych chciałbym zobaczyć wydajność dysków wirtualnych i porównać je z wydajnością dysku fizycznego. Polecenie uruchomienia fio:

fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio  --loops=1000 --runtime=300  --iodepth=<threads> --rw=<mode> --filename=<blkdev>

Wydajność mierzy się w kategoriach operacji we/wy. Wyniki przedstawiono w poniższej tabeli.

Losowy odczyt 1 wątku, IOPS
Losowy zapis 1 wątku, IOPS
Losowy odczyt 128 wątków, IOPS
Losowy zapis 128 wątków, IOPS

dysk
11300
40700
453000
105000

Linux RAID programowy, RAID0
11200
52000
429000
232000

VROC, RAID0
11200
52300
441000
162000

LSI, RAID0
10900
44200
311000
160000

Linux RAID programowy, 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 powoduje zwiększone opóźnienia i spadek wydajności w porównaniu z rozwiązaniami programowymi.

wniosek

Używanie rozwiązań sprzętowych do tworzenia macierzy dyskowych z dwóch dysków wygląda irracjonalnie. Są jednak zadania, w których zastosowanie kontrolerów RAID jest uzasadnione. Wraz z pojawieniem się kontrolerów obsługujących interfejs NVMe, użytkownicy mają możliwość wykorzystania w swoich projektach szybszych dysków SSD.

Macierze RAID na NVMe

W ankiecie mogą brać udział tylko zarejestrowani użytkownicy. Zaloguj się, Proszę.

Czy korzystasz z rozwiązań RAID?

  • 29,6%Tak, rozwiązania sprzętowe32

  • 50,0%Tak, rozwiązania programowe54

  • 16,7%Nie18

  • 3,7%Nie jest wymagana żadna macierz RAID4

Głosowało 108 użytkowników. 14 użytkowników wstrzymało się od głosu.

Źródło: www.habr.com

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster