
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?
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 . 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/nvme2n1Po wykonaniu tego polecenia w systemie pojawi się urządzenie blokowe /dev/md0, które reprezentuje Cię jako dysk wirtualny.
Intel® Virtual RAID na procesorze
Standardowy 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.
Licencja 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.
Tworzenie 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
Wyglą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.
Menu 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.
Tworzenie 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.
W ankiecie mogą brać udział tylko zarejestrowani użytkownicy. , 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
