RAID низи на NVMe

RAID низи на NVMe
Во оваа статија ќе зборуваме за различни начини за организирање на RAID низи, а исто така ќе покажеме еден од првите хардверски RAID контролери со поддршка за NVMe.

Сите разновидни апликации на RAID технологијата се наоѓаат во сегментот на серверот. Во клиентскиот сегмент најчесто се користи софтверот RAID0 или RAID1 на два диска.

Оваа статија ќе обезбеди краток преглед на RAID технологијата, краток туторијал за тоа како да креирате RAID низи користејќи три различни алатки и споредба на перформансите на виртуелниот диск со секој метод.

Што е RAID?

Википедија дава сеопфатна дефиниција за RAID технологијата:

RAID (Македонски Редундантна низа независни дискови - редундантна низа на независни (независни) дискови) - технологија за виртуелизација на податоци за комбинирање на неколку физички уреди со диск во логички модул за да се зголеми толеранцијата и перформансите на дефекти.

Конфигурацијата на низите на дискот и користените технологии зависат од избраното Ниво на RAID. Нивоата на RAID се стандардизирани во спецификацијата Обичен формат на податоци на диск RAID. Опишува многу нивоа на RAID, но најчести се RAID0, RAID1, RAID5 и RAID6.

RAID0Или Ленти, е ниво на RAID што комбинира два или повеќе физички дискови во еден логички диск. Волуменот на логичкиот диск е еднаков на збирот на волумените на физичките дискови вклучени во низата. Нема вишок на ова ниво на RAID, а неуспехот на еден диск може да резултира со губење на сите податоци на виртуелниот диск.

Ниво RAID1Или огледало, создава идентични копии на податоци на два или повеќе дискови. Големината на виртуелниот диск не ја надминува минималната големина на физичките дискови. Податоците на виртуелниот диск RAID1 ќе бидат достапни се додека е оперативен барем еден физички диск од низата. Користењето RAID1 додава вишок, но е прилично скапо решение, бидејќи во низи од два или повеќе дискови, капацитетот на само еден е достапен.

Ниво RAID5 го решава проблемот со високата цена. За да креирате низа со ниво RAID5, потребни ви се најмалку 3 дискови, а низата е отпорна на дефект на еден диск. Податоците во RAID5 се складираат во блокови со контролни суми. Не постои строга поделба помеѓу дисковите со податоци и дисковите за проверка. Проверките во RAID5 се резултат на операцијата XOR применета на N-1 блокови, секој земен од различен диск.

Иако RAID низите го зголемуваат вишокот и обезбедуваат вишок, тие не се погодни за складирање резервни копии.

По кратка екскурзија во типовите на RAID низи, можете да преминете на уреди и програми кои ви дозволуваат да собирате и користите низи на дискови.

Видови на RAID контролери

Постојат два начини за креирање и користење на RAID низи: хардвер и софтвер. Ќе ги разгледаме следните решенија:

  • Linux софтвер RAID.
  • Intel® Virtual RAID на процесорот.
  • LSI MegaRAID 9460-8i.

Имајте предвид дека Intel® решението работи на чипсет, што го наметнува прашањето дали е хардверско или софтверско решение. На пример, хипервизорот VMWare ESXi го разгледува софтверот VROC и официјално не го поддржува.

Linux софтвер RAID

Софтверските RAID низи во семејството на Linux OS се прилично вообичаено решение и во сегментот на клиентот и во серверот. Сè што ви треба за да креирате низа е алатката mdadm и неколку блок уреди. Единствениот услов Linux Software RAID што го поставува на дисковите што ги користи е да биде блок уред достапен за системот.

Отсуството на трошоци за опрема и софтвер е очигледна предност на овој метод. Linux Software RAID организира низи на дискови по цена на времето на процесорот. Списокот на поддржани нивоа на RAID и статусот на тековните низи на дискови може да се видат во датотеката mdstat, која се наоѓа во коренот procfs:

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

Поддршката за нивоата на RAID се додава со поврзување на соодветниот модул на јадрото, на пример:

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

Сите операции со низи на дискови се изведуваат преку алатката за командна линија mdadm. Низата на дискот е составена во една команда:

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

По извршувањето на оваа команда, блок уредот /dev/md0 ќе се појави во системот, кој ве претставува како виртуелен диск.

Intel® Virtual RAID на процесорот

RAID низи на NVMeСтандарден хардверски клуч Intel® VROC
Intel® Virtual RAID On CPU (VROC) е хардверска и софтверска технологија за создавање RAID низи базирани на Intel® чипсети. Оваа технологија е достапна првенствено за матични плочи кои поддржуваат Intel® Xeon® Scalable процесори. Стандардно, VROC не е достапен. За да го активирате, мора да инсталирате лиценца за хардверски клуч VROC.

Стандардната лиценца VROC ви овозможува да креирате низи на дискови со 0, 1 и 10 нивоа RAID. Премиум верзијата ја проширува оваа листа со поддршка за RAID5.

Технологијата Intel® VROC на модерните матични плочи работи заедно со Intel® Уредот за управување со јачина на звук (VMD), кој обезбедува можност за жешка замена за NVMe-дискови.

RAID низи на NVMeСтандардна лиценца Intel® VROC Низите се конфигурираат преку Setup Utility кога серверот се подига. На јазичето Напредно Се појавува ставката Intel® Virtual RAID на процесорот, каде што можете да конфигурирате низи на дискови.

RAID низи на NVMeКреирање на RAID1 низа на два дискови
Технологијата Intel® VROC има свои асови во ракавот. Низите на дискови изградени со помош на VROC се компатибилни со Linux Software RAID. Ова значи дека состојбата на низите може да се следи во /proc/mdstat и да се администрира преку mdadm. Оваа „функција“ е официјално поддржана од Интел. Откако ќе го составите RAID1 во Setup Utility, можете да ја набљудувате синхронизацијата на дисковите во оперативниот систем:

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>

Забележете дека не можете да собирате низи на VROC користејќи mdadm (собраните низи ќе бидат Linux SW RAID), но можете да менувате дискови во нив и да ги расклопите низите.

LSI MegaRAID 9460-8i

RAID низи на NVMeИзглед на контролерот LSI MegaRAID 9460-8i
Контролерот RAID е самостојно хардверско решение. Контролорот работи само со дискови поврзани директно со него. Овој RAID контролер поддржува до 24 NVMe дискови. Поддршката NVMe го издвојува овој контролер од многу други.

RAID низи на NVMeГлавно мени на хардверскиот контролер
Кога користите UEFI режим, поставките на контролорот се интегрирани во Setup Utility. Во споредба со VROC, менито на хардверскиот контролер изгледа многу покомплексно.

RAID низи на NVMeКреирање RAID1 на два диска
Објаснувањето како да се конфигурираат низи на дискови на хардверски контролер е прилично деликатна тема и може да биде причина за полноправна статија. Овде едноставно ќе се ограничиме на создавање RAID0 и RAID1 со стандардни поставки.

Дисковите поврзани со хардверскиот контролер не се видливи за оперативниот систем. Наместо тоа, контролорот ги „маскира“ сите RAID низи како SAS дискови. ОС нема да има пристап до дисковите поврзани со контролорот, но не и дел од низата на дискот.

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.

И покрај тоа што се маскирани како SAS-дискови, низите NVMe ќе работат со PCIe брзини. Сепак, оваа функција ви овозможува да се подигнете од NVMe во Legacy.

Тест штанд

Секој метод за организирање низи на дискови има свои физички добрите и лошите страни. Но, дали има разлика во перформансите кога работите со низи на дискови?

За да се постигне максимална правичност, сите тестови ќе бидат спроведени на истиот сервер. Неговата конфигурација:

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 16 GB;
  • LSI MegaRAID 9460-8i;
  • Стандарден хардверски клуч Intel® VROC;
  • 4x Intel® SSD DC P4510 U.2 2TB;
  • 1x Samsung 970 EVO Plus M.2 500GB.

Тест единиците се P4510, од ​​кои едната половина е поврзана со матичната плоча, а другата половина со контролерот RAID. M.2 работи со Ubuntu 20.04 и тестовите ќе се извршуваат со користење на fio верзија 3.16.

Тестирање

Пред сè, да ги провериме доцнењата при работа со дискот. Тестот се извршува во една нишка, големината на блокот е 4 KB. Секој тест трае 5 минути. Пред да започнете, соодветниот блок уред е поставен на Ниту како распоредувач на В/И. Командата fio изгледа вака:

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

Од фио резултати земаме клат 99.00%. Резултатите се прикажани во табелата подолу.

Случајно читање, μs
Случајно снимање, μs

диск
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

Покрај одложувањата при пристап до податоци, би сакал да ги видам перформансите на виртуелните дискови и да ги споредам со перформансите на физичкиот диск. Команда за извршување на fio:

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

Перформансите се мерат во однос на I/O операции. Резултатите се претставени во табелата подолу.

Случајно читање 1 нишка, IOPS
Случајно пишување 1 нишка, IOPS
Случајно читање 128 нишки, IOPS
Случајно пишување 128 нишки, IOPS

диск
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

Лесно е да се види дека користењето хардверски контролер резултира со зголемена латентност и хит на перформансите во споредба со софтверските решенија.

Заклучок

Користењето хардверски решенија за создавање низи на дискови од два диска изгледа ирационално. Сепак, постојат задачи каде што употребата на RAID контролери е оправдана. Со доаѓањето на контролери кои го поддржуваат интерфејсот NVMe, корисниците имаат можност да користат побрзи SSD-дискови во своите проекти.

RAID низи на NVMe

Само регистрирани корисници можат да учествуваат во анкетата. Најави се, вие сте добредојдени.

Дали користите RAID решенија?

  • 29,6%Да, хардверски решенија32

  • 50,0%Да, софтверски решенија54

  • 16,7%Бр 18 г

  • 3,7%Не е потребен RAID4

Гласаа 108 корисници. 14 корисници беа воздржани.

Извор: www.habr.com

Додадете коментар