RAID arrays sa NVMe

RAID arrays sa NVMe
Sa artikulong ito ay pag-uusapan natin ang tungkol sa iba't ibang paraan upang ayusin ang mga array ng RAID, at ipakita din ang isa sa mga unang controller ng RAID ng hardware na may suporta sa NVMe.

Ang lahat ng iba't ibang mga aplikasyon ng teknolohiya ng RAID ay matatagpuan sa segment ng server. Sa segment ng kliyente, tanging ang software na RAID0 o RAID1 sa dalawang disk ang kadalasang ginagamit.

Ang artikulong ito ay magbibigay ng maikling pangkalahatang-ideya ng teknolohiya ng RAID, isang maikling tutorial sa kung paano lumikha ng mga array ng RAID gamit ang tatlong magkakaibang tool, at isang paghahambing ng pagganap ng virtual disk gamit ang bawat pamamaraan.

Ano ang RAID?

Wikipedia nagbibigay ng komprehensibong kahulugan ng teknolohiya ng RAID:

Pagsalakay (Ingles Kalabisan na Array ng Mga Independent na Disk - redundant array ng independent (independent) disks) - data virtualization technology para sa pagsasama-sama ng ilang pisikal na disk device sa isang lohikal na module upang mapataas ang fault tolerance at performance.

Ang pagsasaayos ng mga disk array at ang mga teknolohiyang ginamit ay nakadepende sa napili antas ng RAID. Ang mga antas ng RAID ay na-standardize sa detalye Karaniwang Format ng Data ng RAID Disk. Inilalarawan nito ang maraming antas ng RAID, ngunit ang pinakakaraniwan ay RAID0, RAID1, RAID5 at RAID6.

RAID0O Guhitan, ay isang antas ng RAID na pinagsasama ang dalawa o higit pang mga pisikal na drive sa isang lohikal na drive. Ang dami ng lohikal na disk ay katumbas ng kabuuan ng mga volume ng mga pisikal na disk na kasama sa array. Walang redundancy sa antas ng RAID na ito, at ang pagkabigo ng isang drive ay maaaring magresulta sa pagkawala ng lahat ng data sa virtual disk.

Уровень RAID1O salamin, lumilikha ng magkatulad na mga kopya ng data sa dalawa o higit pang mga disk. Ang laki ng virtual disk ay hindi lalampas sa minimum na laki ng mga pisikal na disk. Magiging available ang data sa RAID1 virtual disk hangga't gumagana ang kahit isang pisikal na disk mula sa array. Ang paggamit ng RAID1 ay nagdaragdag ng kalabisan, ngunit ito ay isang medyo mahal na solusyon, dahil sa mga array ng dalawa o higit pang mga disk ang kapasidad ng isa lamang ay magagamit.

Уровень RAID5 nalulutas ang problema ng mataas na gastos. Upang lumikha ng array na may RAID5 level, kailangan mo ng hindi bababa sa 3 disk, at ang array ay lumalaban sa pagkabigo ng isang disk. Ang data sa RAID5 ay nakaimbak sa mga bloke na may mga checksum. Walang mahigpit na dibisyon sa pagitan ng mga data disk at checksum disk. Ang mga checksum sa RAID5 ay resulta ng isang XOR operation na inilapat sa N-1 blocks, bawat isa ay kinuha mula sa ibang disk.

Bagama't pinapataas ng mga array ng RAID ang redundancy at nagbibigay ng redundancy, hindi angkop ang mga ito para sa pag-iimbak ng mga backup.

Pagkatapos ng maikling iskursiyon sa mga uri ng RAID array, maaari kang magpatuloy sa mga device at program na nagbibigay-daan sa iyong mag-assemble at gumamit ng mga disk array.

Mga uri ng RAID controllers

Mayroong dalawang paraan para gumawa at gumamit ng mga RAID array: hardware at software. Isasaalang-alang namin ang mga sumusunod na solusyon:

  • Linux Software RAID.
  • Intel® Virtual RAID Sa CPU.
  • LSI MegaRAID 9460-8i.

Tandaan na ang Intel® solution ay tumatakbo sa isang chipset, na nagpapataas ng tanong kung ito ay isang hardware o software na solusyon. Halimbawa, isinasaalang-alang ng VMWare ESXi hypervisor ang VROC software at hindi ito opisyal na sinusuportahan.

Linux Software RAID

Ang mga array ng software RAID sa pamilya ng Linux OS ay medyo pangkaraniwang solusyon sa mga segment ng kliyente at server. Ang kailangan mo lang gumawa ng array ay ang mdadm utility at ilang block device. Ang tanging kinakailangan na inilalagay ng Linux Software RAID sa mga drive na ginagamit nito ay ang maging block device na naa-access ng system.

Ang kawalan ng mga gastos para sa kagamitan at software ay isang halatang bentahe ng pamamaraang ito. Ang Linux Software RAID ay nag-aayos ng mga disk array sa halaga ng oras ng CPU. Ang listahan ng mga sinusuportahang antas ng RAID at ang katayuan ng kasalukuyang mga array ng disk ay maaaring tingnan sa mdstat file, na matatagpuan sa procfs root:

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

Ang suporta para sa mga antas ng RAID ay idinagdag sa pamamagitan ng pagkonekta sa naaangkop na module ng kernel, halimbawa:

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

Ang lahat ng mga operasyon na may mga disk array ay ginagawa sa pamamagitan ng mdadm command line utility. Ang disk array ay binuo sa isang command:

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

Pagkatapos isagawa ang utos na ito, lalabas ang /dev/md0 block device sa system, na kumakatawan sa iyo bilang isang virtual disk.

Intel® Virtual RAID Sa CPU

RAID arrays sa NVMeIntel® VROC Standard Hardware Key
Ang Intel® Virtual RAID On CPU (VROC) ay isang hardware at software na teknolohiya para sa paglikha ng mga RAID array batay sa mga Intel® chipset. Ang teknolohiyang ito ay pangunahing magagamit para sa mga motherboard na sumusuporta sa Intel® Xeon® Scalable processors. Bilang default, hindi available ang VROC. Para i-activate ito, dapat kang mag-install ng VROC hardware license key.

Ang karaniwang lisensya ng VROC ay nagpapahintulot sa iyo na lumikha ng mga array ng disk na may 0, 1 at 10 na antas ng RAID. Pinapalawak ng premium na bersyon ang listahang ito sa suporta ng RAID5.

Ang teknolohiya ng Intel® VROC sa mga modernong motherboard ay gumagana kasabay ng Intel® Volume Management Device (VMD), na nagbibigay ng hot-swap na kakayahan para sa mga NVMe drive.

RAID arrays sa NVMeIntel® VROC Standard License Ang mga array ay na-configure sa pamamagitan ng Setup Utility kapag nag-boot ang server. Sa tab Advanced Ang Intel® Virtual RAID sa CPU ay lilitaw, kung saan maaari mong i-configure ang mga array ng disk.

RAID arrays sa NVMePaglikha ng RAID1 array sa dalawang drive
Ang teknolohiya ng Intel® VROC ay may sariling ace. Ang mga disk array na binuo gamit ang VROC ay tugma sa Linux Software RAID. Nangangahulugan ito na ang estado ng mga array ay maaaring masubaybayan sa /proc/mdstat at ibibigay sa pamamagitan ng mdadm. Ang "tampok" na ito ay opisyal na sinusuportahan ng Intel. Pagkatapos i-assemble ang RAID1 sa Setup Utility, maaari mong obserbahan ang pag-synchronize ng mga drive sa 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>

Tandaan na hindi ka makakapag-assemble ng mga array sa VROC gamit ang mdadm (ang mga naka-assemble na array ay Linux SW RAID), ngunit maaari mong baguhin ang mga disk sa mga ito at i-disassemble ang mga array.

LSI MegaRAID 9460-8i

RAID arrays sa NVMeHitsura ng LSI MegaRAID 9460-8i controller
Ang RAID controller ay isang stand-alone na solusyon sa hardware. Gumagana lamang ang controller sa mga drive na direktang konektado dito. Sinusuportahan ng RAID controller na ito ang hanggang 24 na NVMe drive. Ito ang suporta ng NVMe na nagtatakda ng controller na ito bukod sa marami pang iba.

RAID arrays sa NVMePangunahing menu ng controller ng hardware
Kapag gumagamit ng UEFI mode, isinama ang mga setting ng controller sa Setup Utility. Kung ikukumpara sa VROC, mukhang mas kumplikado ang menu ng hardware controller.

RAID arrays sa NVMePaglikha ng RAID1 sa dalawang disk
Ang pagpapaliwanag kung paano i-configure ang mga disk array sa isang hardware controller ay medyo maselan na paksa at maaaring maging dahilan para sa isang ganap na artikulo. Dito ay lilimitahan lang namin ang aming sarili sa paglikha ng RAID0 at RAID1 na may mga default na setting.

Ang mga disk na konektado sa hardware controller ay hindi nakikita ng operating system. Sa halip, "tinatakpan" ng controller ang lahat ng mga array ng RAID bilang mga drive ng SAS. Ang mga drive na konektado sa controller, ngunit hindi bahagi ng disk array, ay hindi maa-access ng 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.

Sa kabila ng pagiging disguised bilang SAS drive, NVMe arrays ay gagana sa PCIe bilis. Gayunpaman, pinapayagan ka ng tampok na ito na mag-boot mula sa NVMe sa Legacy.

Test stand

Ang bawat paraan ng pag-aayos ng mga disk array ay may sariling pisikal na kalamangan at kahinaan. Ngunit mayroon bang pagkakaiba sa pagganap kapag nagtatrabaho sa mga array ng disk?

Upang makamit ang maximum na pagiging patas, ang lahat ng mga pagsubok ay isasagawa sa parehong server. Ang pagsasaayos nito:

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

Ang mga yunit ng pagsubok ay P4510, ang kalahati nito ay konektado sa motherboard, at ang kalahati sa RAID controller. Ang M.2 ay nagpapatakbo ng Ubuntu 20.04 at ang mga pagsubok ay tatakbo gamit ang fio na bersyon 3.16.

Pagsubok

Una sa lahat, suriin natin ang mga pagkaantala kapag nagtatrabaho sa disk. Ang pagsubok ay isinasagawa sa isang thread, ang laki ng block ay 4 KB. Ang bawat pagsubok ay tumatagal ng 5 minuto. Bago magsimula, ang kaukulang block device ay nakatakda sa wala bilang I/O scheduler. Ang fio command ay ganito ang hitsura:

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

Mula sa mga resulta ng fio kumuha kami ng clat 99.00%. Ang mga resulta ay ipinapakita sa talahanayan sa ibaba.

Random na pagbabasa, μs
Random na pag-record, μ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

Bilang karagdagan sa mga pagkaantala kapag nag-access ng data, nais kong makita ang pagganap ng mga virtual na drive at ihambing ang mga ito sa pagganap ng isang pisikal na disk. Utos na patakbuhin ang fio:

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

Ang pagganap ay sinusukat sa mga tuntunin ng I/O operations. Ang mga resulta ay ipinakita sa talahanayan sa ibaba.

Random na basahin ang 1 thread, IOPS
Random na sumulat ng 1 thread, IOPS
Random na basahin ang 128 na mga thread, IOPS
Random na sumulat ng 128 na mga thread, 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

Madaling makita na ang paggamit ng hardware controller ay nagreresulta sa tumaas na latency at isang hit sa performance kumpara sa mga solusyon sa software.

Konklusyon

Ang paggamit ng mga solusyon sa hardware upang lumikha ng mga array ng disk mula sa dalawang disk ay mukhang hindi makatwiran. Gayunpaman, may mga gawain kung saan ang paggamit ng RAID controllers ay makatwiran. Sa pagdating ng mga controllers na sumusuporta sa NVMe interface, ang mga user ay may pagkakataon na gumamit ng mas mabilis na SSD sa kanilang mga proyekto.

RAID arrays sa NVMe

Ang mga rehistradong user lamang ang maaaring lumahok sa survey. Mag-sign in, pakiusap

Gumagamit ka ba ng mga solusyon sa RAID?

  • 29,6%Oo, mga solusyon sa hardware32

  • 50,0%Oo, software solutions54

  • 16,7%No18

  • 3,7%Walang RAID na kailangan4

108 user ang bumoto. 14 na user ang umiwas.

Pinagmulan: www.habr.com

Magdagdag ng komento