safu za RAID kwenye NVMe

safu za RAID kwenye NVMe
Katika makala hii tutazungumzia kuhusu njia tofauti za kuandaa safu za RAID, na pia kuonyesha moja ya watawala wa kwanza wa vifaa vya RAID na usaidizi wa NVMe.

Aina zote za matumizi ya teknolojia ya RAID hupatikana katika sehemu ya seva. Katika sehemu ya mteja, programu tu RAID0 au RAID1 kwenye diski mbili hutumiwa mara nyingi.

Makala haya yatatoa muhtasari mfupi wa teknolojia ya RAID, mafunzo mafupi ya jinsi ya kuunda safu za RAID kwa kutumia zana tatu tofauti, na kulinganisha utendaji wa diski pepe kwa kutumia kila njia.

RAID ni nini?

Wikipedia inatoa ufafanuzi wa kina wa teknolojia ya RAID:

Uvamizi (Kiingereza Upangaji Mbaya wa Disks za Kujitegemea - safu isiyo ya kawaida ya diski za kujitegemea (huru) - teknolojia ya virtualization ya data kwa kuchanganya vifaa kadhaa vya disk kimwili katika moduli ya mantiki ili kuongeza uvumilivu wa makosa na utendaji.

Mpangilio wa safu za disk na teknolojia zinazotumiwa hutegemea kuchaguliwa Kiwango cha RAID. Viwango vya RAID vimesawazishwa katika vipimo Umbizo la kawaida la data ya RAID Disk. Inaelezea viwango vingi vya RAID, lakini vinavyojulikana zaidi ni RAID0, RAID1, RAID5 na RAID6.

RAID0Au Kupigwa, ni kiwango cha RAID ambacho huchanganya viendeshi viwili au zaidi vya kimwili kwenye kiendeshi kimoja cha kimantiki. Kiasi cha diski ya mantiki ni sawa na jumla ya kiasi cha disks za kimwili zilizojumuishwa kwenye safu. Hakuna upungufu katika kiwango hiki cha RAID, na kushindwa kwa gari moja kunaweza kusababisha kupoteza data zote kwenye diski ya kawaida.

Kiwango RAID1Au Mirror, huunda nakala zinazofanana za data kwenye diski mbili au zaidi. Ukubwa wa diski ya kawaida hauzidi ukubwa wa chini wa diski za kimwili. Data kwenye diski pepe ya RAID1 itapatikana mradi angalau diski moja halisi kutoka kwa safu inafanya kazi. Kutumia RAID1 kunaongeza upungufu, lakini ni suluhisho la gharama kubwa, kwani katika safu za diski mbili au zaidi uwezo wa moja tu unapatikana.

Kiwango RAID5 kutatua tatizo la gharama kubwa. Ili kuunda safu na kiwango cha RAID5, unahitaji angalau diski 3, na safu inakabiliwa na kushindwa kwa diski moja. Data katika RAID5 huhifadhiwa katika vizuizi vilivyo na hundi. Hakuna mgawanyiko mkali kati ya diski za data na diski za hundi. Cheki katika RAID5 ni matokeo ya operesheni ya XOR iliyotumika kwa vitalu vya N-1, kila moja ikichukuliwa kutoka kwa diski tofauti.

Ingawa safu za RAID huongeza upunguzaji wa matumizi na kutoa upungufu, hazifai kuhifadhi nakala.

Baada ya safari fupi katika aina za safu za RAID, unaweza kuendelea na vifaa na programu zinazokuwezesha kukusanyika na kutumia safu za disk.

Aina za vidhibiti vya RAID

Kuna njia mbili za kuunda na kutumia safu za RAID: maunzi na programu. Tutazingatia suluhisho zifuatazo:

  • Uvamizi wa Programu ya Linux.
  • Intel® Virtual RAID Kwenye CPU.
  • LSI MegaRAID 9460-8i.

Kumbuka kuwa suluhisho la Intel® linaendeshwa kwenye chipset, ambayo inazua swali la ikiwa ni suluhisho la maunzi au programu. Kwa mfano, hypervisor ya VMWare ESXi inazingatia programu ya VROC na haiungi mkono rasmi.

Uvamizi wa Programu ya Linux

Mkusanyiko wa programu za RAID katika familia ya Linux OS ni suluhisho la kawaida katika sehemu za mteja na seva. Unachohitaji kuunda safu ni matumizi ya mdadm na vifaa vichache vya kuzuia. Sharti pekee la Linux Software RAID inaweka kwenye viendeshi inazotumia ni kuwa kifaa cha kuzuia kinachoweza kufikiwa na mfumo.

Kutokuwepo kwa gharama za vifaa na programu ni faida dhahiri ya njia hii. Uvamizi wa Programu ya Linux hupanga safu za diski kwa gharama ya wakati wa CPU. Orodha ya viwango vya RAID vinavyotumika na hali ya safu za diski za sasa zinaweza kutazamwa katika faili ya mdstat, ambayo iko kwenye mzizi wa procfs:

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

Usaidizi wa viwango vya RAID huongezwa kwa kuunganisha moduli inayofaa ya kernel, kwa mfano:

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

Shughuli zote zilizo na safu za diski zinafanywa kupitia matumizi ya mstari wa amri ya mdadm. Safu ya diski imekusanywa kwa amri moja:

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

Baada ya kutekeleza amri hii, kifaa cha kuzuia /dev/md0 kitaonekana kwenye mfumo, ambacho kinakuwakilisha kama diski pepe.

Intel® Virtual RAID Kwenye CPU

safu za RAID kwenye NVMeUfunguo wa Maunzi wa Kawaida wa Intel® VROC
Intel® Virtual RAID On CPU (VROC) ni teknolojia ya maunzi na programu kwa ajili ya kuunda mkusanyiko wa RAID kulingana na chipsets za Intel®. Teknolojia hii inapatikana kwa ajili ya mbao mama zinazotumia vichakataji vya Intel® Xeon® Scalable. Kwa chaguo-msingi, VROC haipatikani. Ili kuiwasha, lazima usakinishe ufunguo wa leseni ya maunzi ya VROC.

Leseni ya kawaida ya VROC inakuwezesha kuunda safu za disk na viwango vya 0, 1 na 10 vya RAID. Toleo la malipo hupanua orodha hii kwa usaidizi wa RAID5.

Teknolojia ya Intel® VROC kwenye ubao-mama wa kisasa hufanya kazi kwa kushirikiana na Kifaa cha Kudhibiti Kiasi cha Intel® (VMD), ambacho hutoa uwezo wa kubadilishana kwa kasi kwa viendeshi vya NVMe.

safu za RAID kwenye NVMeLeseni ya Kawaida ya Intel® VROC Safu husanidiwa kupitia Huduma ya Usanidi wakati seva inapowasha. Kwenye kichupo Ya juu Intel® Virtual RAID kwenye kipengee cha CPU inaonekana, ambapo unaweza kusanidi safu za diski.

safu za RAID kwenye NVMeKuunda safu ya RAID1 kwenye viendeshi viwili
Teknolojia ya Intel® VROC ina aces yake juu ya mkono wake. Mikusanyiko ya diski iliyojengwa kwa kutumia VROC inaoana na Linux Software RAID. Hii inamaanisha kuwa hali ya safu inaweza kufuatiliwa katika /proc/mdstat na kusimamiwa kupitia mdadm. "Kipengele" hiki kinaungwa mkono rasmi na Intel. Baada ya kukusanyika RAID1 katika Utumiaji wa Usanidi, unaweza kuona maingiliano ya anatoa kwenye 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>

Kumbuka kwamba huwezi kukusanya safu kwenye VROC kwa kutumia mdadm (safu zilizokusanywa zitakuwa Linux SW RAID), lakini unaweza kubadilisha diski ndani yao na kutenganisha safu.

LSI MegaRAID 9460-8i

safu za RAID kwenye NVMeKuonekana kwa mtawala wa LSI MegaRAID 9460-8i
Mdhibiti wa RAID ni suluhisho la vifaa vya kusimama pekee. Mdhibiti hufanya kazi tu na anatoa zilizounganishwa moja kwa moja nayo. Kidhibiti hiki cha RAID kinaauni hadi viendeshi 24 vya NVMe. Ni usaidizi wa NVMe ambao huweka kidhibiti hiki kando na wengine wengi.

safu za RAID kwenye NVMeMenyu kuu ya kidhibiti cha vifaa
Unapotumia hali ya UEFI, mipangilio ya kidhibiti inaunganishwa kwenye Huduma ya Kuweka. Ikilinganishwa na VROC, menyu ya kidhibiti cha vifaa inaonekana ngumu zaidi.

safu za RAID kwenye NVMeKuunda RAID1 kwenye diski mbili
Kuelezea jinsi ya kusanidi safu za diski kwenye kidhibiti cha maunzi ni mada nyeti na inaweza kuwa sababu ya nakala kamili. Hapa tutajiwekea kikomo kwa kuunda RAID0 na RAID1 na mipangilio chaguo-msingi.

Disks zilizounganishwa na mtawala wa vifaa hazionekani kwa mfumo wa uendeshaji. Badala yake, kidhibiti "hufunika" safu zote za RAID kama SAS anatoa. Hifadhi zilizounganishwa na kidhibiti, lakini sio sehemu ya safu ya diski, hazitafikiwa na OS.

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.

Licha ya kufichwa kama viendeshi vya SAS, safu za NVMe zitafanya kazi kwa kasi ya PCIe. Walakini, huduma hii hukuruhusu kuanza kutoka NVMe katika Urithi.

benchi ya mtihani

Kila njia ya kuandaa safu za disk ina faida na hasara zake za kimwili. Lakini kuna tofauti ya utendaji wakati wa kufanya kazi na safu za diski?

Ili kufikia usawa wa juu, majaribio yote yatafanywa kwenye seva moja. Mpangilio wake:

  • 2x Intel® Xeon® 6240;
  • 12x DDR4-2666 GB 16;
  • LSI MegaRAID 9460-8i;
  • Ufunguo wa Vifaa vya Kawaida vya Intel® VROC;
  • 4x Intel® SSD DC P4510 U.2 2TB;
  • 1x Samsung 970 EVO Plus M.2 500GB.

Vitengo vya majaribio ni P4510, nusu ambayo imeunganishwa kwenye ubao wa mama, na nusu nyingine kwa mtawala wa RAID. M.2 inaendesha Ubuntu 20.04 na majaribio yataendeshwa kwa kutumia fio toleo la 3.16.

Upimaji

Kwanza kabisa, hebu tuangalie ucheleweshaji wakati wa kufanya kazi na diski. Jaribio linafanywa kwa thread moja, ukubwa wa kuzuia ni 4 KB. Kila mtihani huchukua dakika 5. Kabla ya kuanza, kifaa kinacholingana cha kuzuia hakijawekwa kama kipanga ratiba cha I/O. Amri ya fio inaonekana kama hii:

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

Kutoka kwa matokeo ya fio tunachukua clat 99.00%. Matokeo yanaonyeshwa kwenye jedwali hapa chini.

Kusoma bila mpangilio, μs
Kurekodi bila mpangilio, μs

disk
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

Mbali na ucheleweshaji wakati wa kupata data, ningependa kuona utendaji wa viendeshi vya kawaida na kulinganisha na utendaji wa diski halisi. Amri ya kukimbia fio:

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

Utendaji hupimwa kulingana na shughuli za I/O. Matokeo yanawasilishwa katika jedwali hapa chini.

Soma bila mpangilio mazungumzo 1, IOPS
Andika bila mpangilio thread 1, IOPS
Soma bila mpangilio nyuzi 128, IOPS
Andika bila mpangilio nyuzi 128, IOPS

disk
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

Ni rahisi kuona kwamba kutumia kidhibiti cha maunzi husababisha kuongezeka kwa latency na utendaji kazi ikilinganishwa na ufumbuzi wa programu.

Hitimisho

Kutumia suluhisho za vifaa kuunda safu za diski kutoka kwa diski mbili inaonekana kuwa isiyo na maana. Hata hivyo, kuna kazi ambapo matumizi ya vidhibiti vya RAID ni haki. Pamoja na ujio wa vidhibiti vinavyotumia kiolesura cha NVMe, watumiaji wana fursa ya kutumia SSD za haraka katika miradi yao.

safu za RAID kwenye NVMe

Watumiaji waliojiandikisha pekee ndio wanaweza kushiriki katika utafiti. Weka sahihitafadhali.

Je, unatumia suluhu za RAID?

  • 29,6%Ndio, suluhisho za vifaa32

  • 50,0%Ndio, suluhisho za programu54

  • 16,7%No18

  • 3,7%Hakuna RAID inahitajika4

Watumiaji 108 walipiga kura. Watumiaji 14 walijizuia.

Chanzo: mapenzi.com

Kuongeza maoni