Бұл мақалада біз RAID массивтерін ұйымдастырудың әртүрлі тәсілдері туралы сөйлесетін боламыз, сонымен қатар NVMe қолдауы бар алғашқы аппараттық RAID контроллерінің бірін көрсетеміз.
RAID технологиясының барлық түрлі қолданбалары сервер сегментінде кездеседі. Клиент сегментінде көбінесе екі дискідегі RAID0 немесе RAID1 бағдарламалық құралы ғана қолданылады.
Бұл мақалада RAID технологиясына қысқаша шолу, үш түрлі құралды пайдаланып RAID массивтерін жасау туралы қысқаша оқулық және әрбір әдісті пайдаланып виртуалды диск өнімділігін салыстыру қарастырылады.
RAID дегеніміз не?
RAID (Eng. Тәуелсіз дискілердің артық массиві - тәуелсіз (тәуелсіз) дискілердің артық массиві) - ақауларға төзімділік пен өнімділікті арттыру үшін бірнеше физикалық диск құрылғыларын логикалық модульге біріктіруге арналған деректерді виртуалдандыру технологиясы.
Диск массивтерінің конфигурациясы және қолданылатын технологиялар таңдалғанға байланысты RAID деңгейі. RAID деңгейлері спецификацияда стандартталған
RAID0, немесе Жолақтар, екі немесе одан да көп физикалық дискілерді бір логикалық дискіге біріктіретін RAID деңгейі. Логикалық дискінің көлемі массивке кіретін физикалық дискілердің көлемдерінің қосындысына тең. Бұл RAID деңгейінде артықшылық жоқ және бір дискінің істен шығуы виртуалды дискідегі барлық деректердің жоғалуына әкелуі мүмкін.
деңгей RAID1, немесе айна, екі немесе одан да көп дискілердегі деректердің бірдей көшірмелерін жасайды. Виртуалды дискінің өлшемі физикалық дискілердің минималды өлшемінен аспайды. RAID1 виртуалды дискідегі деректер массивтен кем дегенде бір физикалық диск жұмыс істеп тұрғанда қолжетімді болады. RAID1 пайдалану артықшылықты арттырады, бірақ бұл өте қымбат шешім, өйткені екі немесе одан да көп дискілердің массивтерінде тек біреуінің сыйымдылығы бар.
деңгей RAID5 жоғары шығын мәселесін шешеді. RAID5 деңгейі бар массив жасау үшін сізге кемінде 3 диск қажет және массив бір дискінің істен шығуына төзімді. RAID5 ішіндегі деректер бақылау сомасы бар блоктарда сақталады. Деректер дискілері мен бақылау сомасы дискілері арасында қатаң бөлу жоқ. RAID5 жүйесіндегі бақылау сомасы N-1 блоктарына қолданылатын XOR операциясының нәтижесі болып табылады, олардың әрқайсысы басқа дискіден алынған.
RAID массивтері артықшылықты арттырып, артықшылықты қамтамасыз еткенімен, олар сақтық көшірмелерді сақтауға жарамайды.
RAID массивтерінің түрлеріне қысқаша экскурсиядан кейін диск массивтерін жинауға және пайдалануға мүмкіндік беретін құрылғылар мен бағдарламаларға көшуге болады.
RAID контроллерлерінің түрлері
RAID массивтерін жасаудың және пайдаланудың екі жолы бар: аппараттық және бағдарламалық құрал. Біз келесі шешімдерді қарастырамыз:
- Linux бағдарламалық құралының RAID.
- Intel® виртуалды RAID процессорында.
- LSI MegaRAID 9460-8i.
Intel® шешімі чипсетте жұмыс істейтінін ескеріңіз, бұл аппараттық немесе бағдарламалық шешім болып табылады ма деген сұрақты тудырады. Мысалы, VMWare ESXi гипервизоры VROC бағдарламалық құралын қарастырады және оны ресми түрде қолдамайды.
Linux бағдарламалық құралының RAID
Linux ОЖ отбасындағы бағдарламалық қамтамасыз етудің RAID массивтері клиент пен сервер сегменттерінде өте кең таралған шешім болып табылады. Массив жасау үшін mdadm утилитасы және бірнеше блоктық құрылғылар қажет. Linux бағдарламалық құралының RAID пайдаланатын дискілерге қоятын жалғыз талабы жүйеге қолжетімді блок құрылғысы болуы.
Жабдық пен бағдарламалық қамтамасыз ету үшін шығындардың болмауы бұл әдістің айқын артықшылығы болып табылады. Linux бағдарламалық жасақтамасы RAID диск массивтерін CPU уақытының құны бойынша ұйымдастырады. Қолдау көрсетілетін RAID деңгейлерінің тізімін және ағымдағы диск массивтерінің күйін procfs түбірінде орналасқан mdstat файлында көруге болады:
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® виртуалды RAID процессорында
Intel® VROC стандартты аппараттық кілті
Intel® Virtual RAID On CPU (VROC) — Intel® чипсеттеріне негізделген RAID массивтерін жасауға арналған аппараттық және бағдарламалық құрал технологиясы. Бұл технология негізінен Intel® Xeon® Scalable процессорларына қолдау көрсететін аналық платалар үшін қол жетімді. Әдепкі бойынша VROC қолжетімді емес. Оны іске қосу үшін VROC аппараттық лицензия кілтін орнату керек.
Стандартты VROC лицензиясы 0, 1 және 10 RAID деңгейлері бар диск массивтерін жасауға мүмкіндік береді. Премиум нұсқасы бұл тізімді RAID5 қолдауымен кеңейтеді.
Заманауи аналық платалардағы Intel® VROC технологиясы NVMe дискілері үшін жылдам ауыстыру мүмкіндігін қамтамасыз ететін Intel® Volume Management Device (VMD) құрылғысымен бірге жұмыс істейді.
Intel® VROC стандартты лицензиясы Сервер жүктелген кезде массивтер Setup Utility арқылы конфигурацияланады. Қойындыда озат Intel® Virtual RAID on CPU элементі пайда болады, онда диск массивтерін конфигурациялауға болады.
Екі дискіде RAID1 массивін жасау
Intel® VROC технологиясының өзіндік мүмкіндіктері бар. VROC көмегімен құрастырылған диск массивтері Linux Software RAID бағдарламасымен үйлесімді. Бұл массивтердің күйін /proc/mdstat ішінде бақылауға және mdadm арқылы басқаруға болатынын білдіреді. Бұл «функцияға» ресми түрде Intel қолдау көрсетеді. Setup Utility бағдарламасында RAID1 құрастырғаннан кейін ОЖ-да дискілердің синхрондалуын байқауға болады:
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>
mdadm көмегімен VROC жүйесінде массивтерді жинай алмайтыныңызды ескеріңіз (жинақталған массивтер Linux SW RAID болады), бірақ олардағы дискілерді өзгертіп, массивтерді бөлшектеуге болады.
LSI MegaRAID 9460-8i
LSI MegaRAID 9460-8i контроллерінің сыртқы түрі
RAID контроллері дербес аппараттық шешім болып табылады. Контроллер тек оған тікелей қосылған дискілермен жұмыс істейді. Бұл RAID контроллері 24 NVMe дискісіне дейін қолдау көрсетеді. Бұл контроллерді көптеген басқалардан ерекшелендіретін NVMe қолдауы.
Аппараттық контроллердің негізгі мәзірі
UEFI режимін пайдаланған кезде контроллер параметрлері Setup Utility бағдарламасына біріктірілген. VROC-пен салыстырғанда аппараттық контроллер мәзірі әлдеқайда күрделі көрінеді.
Екі дискіде 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 жылдамдықтарында жұмыс істейді. Дегенмен, бұл мүмкіндік Legacy жүйесінде NVMe жүйесінен жүктеуге мүмкіндік береді.
сынақ стенді
Диск массивтерін ұйымдастырудың әрбір әдісінің өзінің физикалық артықшылықтары мен кемшіліктері бар. Бірақ диск массивтерімен жұмыс істегенде өнімділік айырмашылығы бар ма?
Максималды әділеттілікке жету үшін барлық сынақтар бір серверде жүргізіледі. Оның конфигурациясы:
- 2x Intel® Xeon® 6240;
- 12x DDR4-2666 16 ГБ;
- LSI MegaRAID 9460-8i;
- Intel® VROC стандартты аппараттық кілті;
- 4x Intel® SSD DC P4510 U.2 2TB;
- 1x Samsung 970 EVO Plus M.2 500 ГБ.
Сынақ блоктары P4510 болып табылады, оның жартысы аналық платаға, ал екінші жартысы RAID контроллеріне қосылған. M.2 Ubuntu 20.04 нұсқасымен жұмыс істейді және сынақтар fio 3.16 нұсқасы арқылы орындалады.
Тестілеу
Ең алдымен, дискімен жұмыс істеу кезіндегі кідірістерді тексерейік. Тест бір ағында орындалады, блок өлшемі 4 КБ. Әр сынақ 5 минутқа созылады. Бастамас бұрын сәйкес блок құрылғысы енгізу/шығару жоспарлаушысы ретінде ешбір күйге орнатылады. fio пәрмені келесідей көрінеді:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --iodepth=1 --loops=1000 --runtime=300 --rw=<mode> --filename=<blkdev>
Fio нәтижелерінен біз clat 99.00% аламыз. Нәтижелер төмендегі кестеде көрсетілген.
Кездейсоқ оқу, μ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>
Өнімділік енгізу/шығару операциялары бойынша өлшенеді. Нәтижелер төмендегі кестеде берілген.
Кездейсоқ оқу 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 шешімдерін пайдаланасыз ба?
-
29,6%Иә, аппараттық шешімдер32
-
50,0%Иә, бағдарламалық шешімдер54
-
16,7%№18
-
3,7%RAID қажет емес4
108 пайдаланушы дауыс берді. 14 пайдаланушы қалыс қалды.
Ақпарат көзі: www.habr.com