RAID զանգվածներ NVMe-ում

RAID զանգվածներ NVMe-ում
Այս հոդվածում մենք կխոսենք RAID զանգվածներ կազմակերպելու տարբեր եղանակների մասին, ինչպես նաև ցույց կտանք առաջին ապարատային RAID կարգավորիչներից մեկը NVMe աջակցությամբ:

RAID տեխնոլոգիայի կիրառությունների ողջ բազմազանությունը գտնվում է սերվերի հատվածում: Հաճախորդների հատվածում առավել հաճախ օգտագործվում է միայն RAID0 կամ RAID1 ծրագրակազմը երկու սկավառակի վրա:

Այս հոդվածը կտրամադրի RAID տեխնոլոգիայի համառոտ ակնարկ, կարճ ուսուցում, թե ինչպես ստեղծել RAID զանգվածներ՝ օգտագործելով երեք տարբեր գործիքներ, և յուրաքանչյուր մեթոդի օգտագործմամբ վիրտուալ սկավառակի կատարողականի համեմատություն:

Ի՞նչ է RAID-ը:

Wikipedia տալիս է RAID տեխնոլոգիայի համապարփակ սահմանումը.

Արշավել (English Անկախ սկավառակների ավելորդ զանգված - անկախ (անկախ) սկավառակների ավելորդ զանգված) - տվյալների վիրտուալացման տեխնոլոգիա մի քանի ֆիզիկական սկավառակի սարքեր տրամաբանական մոդուլի մեջ միավորելու համար՝ սխալների հանդուրժողականությունը և կատարողականությունը բարձրացնելու համար:

Սկավառակի զանգվածների կազմաձևումը և օգտագործվող տեխնոլոգիաները կախված են ընտրվածից RAID մակարդակ. RAID մակարդակները ստանդարտացված են բնութագրում Ընդհանուր RAID սկավառակի տվյալների ձևաչափ. Այն նկարագրում է բազմաթիվ RAID մակարդակներ, սակայն ամենատարածվածներն են RAID0, RAID1, RAID5 և RAID6:

RAID0Կամ շերտեր, RAID մակարդակ է, որը միավորում է երկու կամ ավելի ֆիզիկական կրիչներ մեկ տրամաբանական սկավառակի մեջ: Տրամաբանական սկավառակի ծավալը հավասար է զանգվածում ներառված ֆիզիկական սկավառակների ծավալների գումարին։ Այս RAID մակարդակում ավելորդություն չկա, և մեկ սկավառակի ձախողումը կարող է հանգեցնել վիրտուալ սկավառակի բոլոր տվյալների կորստի:

Մակարդակ RAID1Կամ հայելի, ստեղծում է տվյալների նույնական պատճեններ երկու կամ ավելի սկավառակների վրա: Վիրտուալ սկավառակի չափը չի գերազանցում ֆիզիկական սկավառակների նվազագույն չափը: RAID1 վիրտուալ սկավառակի տվյալները հասանելի կլինեն այնքան ժամանակ, քանի դեռ զանգվածից առնվազն մեկ ֆիզիկական սկավառակ գործում է: RAID1-ի օգտագործումը ավելացնում է ավելորդություն, բայց բավականին թանկ լուծում է, քանի որ երկու կամ ավելի սկավառակների զանգվածներում առկա է միայն մեկի հզորությունը:

Մակարդակ RAID5 լուծում է թանկարժեքության խնդիրը. RAID5 մակարդակով զանգված ստեղծելու համար ձեզ հարկավոր է առնվազն 3 սկավառակ, և զանգվածը դիմացկուն է մեկ սկավառակի ձախողման: RAID5-ում տվյալները պահվում են ստուգաչափերով բլոկներում: Չկա խիստ բաժանում տվյալների սկավառակների և ստուգիչ գումարային սկավառակների միջև: RAID5-ում ստուգիչ գումարները N-1 բլոկների վրա կիրառված XOR գործողության արդյունք են, որոնցից յուրաքանչյուրը վերցված է տարբեր սկավառակից:

Չնայած RAID զանգվածները մեծացնում են ավելորդությունը և ապահովում ավելորդություն, դրանք հարմար չեն կրկնօրինակներ պահելու համար:

RAID զանգվածների տեսակների մեջ կարճ էքսկուրսիայից հետո կարող եք անցնել սարքերի և ծրագրերի, որոնք թույլ են տալիս հավաքել և օգտագործել սկավառակի զանգվածներ:

RAID կարգավորիչների տեսակները

RAID զանգվածներ ստեղծելու և օգտագործելու երկու եղանակ կա՝ ապարատային և ծրագրային ապահովում: Մենք կքննարկենք հետևյալ լուծումները.

  • Linux Software RAID.
  • Intel® վիրտուալ RAID պրոցեսորի վրա:
  • LSI MegaRAID 9460-8i.

Նկատի ունեցեք, որ Intel® լուծումն աշխատում է չիպսեթի վրա, ինչը հարց է առաջացնում՝ արդյոք դա ապարատային կամ ծրագրային լուծում է: Օրինակ, VMWare ESXi հիպերվիզորը դիտարկում է VROC ծրագրակազմը և պաշտոնապես չի աջակցում այն:

Linux Software RAID

Software 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® վիրտուալ RAID պրոցեսորի վրա

RAID զանգվածներ NVMe-ումIntel® VROC ստանդարտ ապարատային բանալի
Intel® Virtual RAID On CPU (VROC) ապարատային և ծրագրային տեխնոլոգիա է Intel® չիպսեթների վրա հիմնված RAID զանգվածներ ստեղծելու համար: Այս տեխնոլոգիան հիմնականում հասանելի է մայր տախտակների համար, որոնք աջակցում են Intel® Xeon® Scalable պրոցեսորներին: Լռելյայնորեն, VROC-ը հասանելի չէ: Այն ակտիվացնելու համար դուք պետք է տեղադրեք VROC ապարատային լիցենզիայի բանալի:

Ստանդարտ VROC լիցենզիան թույլ է տալիս ստեղծել սկավառակների զանգվածներ 0, 1 և 10 RAID մակարդակներով: Պրեմիում տարբերակը ընդլայնում է այս ցանկը RAID5 աջակցությամբ:

Ժամանակակից մայր տախտակների վրա Intel® VROC տեխնոլոգիան աշխատում է Intel® Volume Management Device (VMD) հետ համատեղ, որն ապահովում է NVMe կրիչների տաք փոխանակման հնարավորություն:

RAID զանգվածներ NVMe-ումIntel® VROC ստանդարտ լիցենզիա Զանգվածները կազմաձևվում են Setup Utility-ի միջոցով, երբ սերվերը բեռնվում է: Ներդիրի վրա Առաջադեմ Հայտնվում է Intel® Virtual RAID-ը CPU-ի վրա, որտեղ կարող եք կարգավորել սկավառակի զանգվածները:

RAID զանգվածներ NVMe-ումԵրկու կրիչների վրա RAID1 զանգվածի ստեղծում
Intel® VROC տեխնոլոգիան ունի իր ուրվագիծը: VROC-ի միջոցով կառուցված սկավառակի զանգվածները համատեղելի են Linux Software RAID-ի հետ: Սա նշանակում է, որ զանգվածների վիճակը կարելի է վերահսկել /proc/mdstat-ում և կառավարել mdadm-ի միջոցով: Այս «հատկանիշը» պաշտոնապես աջակցվում է Intel-ի կողմից։ RAID1-ը Setup Utility-ում հավաքելուց հետո կարող եք դիտարկել OS-ում կրիչների համաժամացումը.

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

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 ԳԲ;
  • 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 ԿԲ է։ Յուրաքանչյուր թեստը տևում է 5 րոպե։ Նախքան սկսելը, համապատասխան բլոկային սարքը որպես I/O ժամանակացույցի դրված է ոչ մեկը: Fio հրամանն ունի հետևյալ տեսքը.

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

Fio արդյունքներից մենք վերցնում ենք 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 --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%No18

  • 3,7%RAID-ի կարիք չկա 4

Քվեարկել է 108 օգտատեր։ 14 օգտատեր ձեռնպահ է մնացել։

Source: www.habr.com

Добавить комментарий