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:

  • Oprogramowanie RAID dla systemu Linux.
  • 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.

Oprogramowanie RAID dla systemu Linux

Programowe macierze RAID z rodziny Linux OS są dość powszechnym rozwiązaniem zarówno w segmencie klientów, jak i serwerów. Do utworzenia tablicy wystarczy narzędzie mdadm i kilka urządzeń blokowych. Jedynym wymaganiem, jakie Linux Software RAID nakłada na używane dyski, jest to, aby były one urządzeniami blokowymi dostępnymi dla systemu.

Brak kosztów sprzętu i oprogramowania jest oczywistą zaletą tej metody. Linux Software RAID organizuje macierze dyskowe kosztem czasu procesora. Listę obsługiwanych poziomów RAID oraz stan bieżących macierzy dyskowych można przeglądać 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 Zaawansowane 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 zbudowane przy użyciu VROC są kompatybilne z oprogramowaniem Linux RAID. Oznacza to, że stan tablic można monitorować w /proc/mdstat i zarządzać nim poprzez mdadm. Ta „funkcja” jest oficjalnie obsługiwana przez firmę Intel. Po złożeniu RAID1 w narzędziu Setup Utility możesz obserwować synchronizację dysków 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>

Pamiętaj, że nie możesz składać tablic na VROC za pomocą mdadm (złożone tablice będą Linux SW RAID), ale możesz zmieniać w nich dyski i dezasemblować 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.

Jednostkami testowymi są P4510, których połowa jest podłączona do płyty głównej, a druga połowa do kontrolera RAID. Na M.2 działa 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 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ń 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 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 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

Dodaj komentarz