RAID-ryhmät NVMe:ssä

RAID-ryhmät NVMe:ssä
Tässä artikkelissa puhumme eri tavoista järjestää RAID-taulukoita ja näytämme myös yhden ensimmäisistä laitteisto-RAID-ohjaimista, joissa on NVMe-tuki.

Palvelinsegmentistä löytyy kaikki RAID-teknologian monipuoliset sovellukset. Asiakassegmentissä käytetään useimmiten vain ohjelmistoa RAID0 tai RAID1 kahdella levyllä.

Tämä artikkeli tarjoaa lyhyen yleiskatsauksen RAID-tekniikasta, lyhyen opetusohjelman RAID-ryhmien luomisesta kolmella eri työkalulla sekä virtuaalilevyn suorituskyvyn vertailun kullakin menetelmällä.

Mikä on RAID?

Wikipedia antaa kattavan määritelmän RAID-tekniikasta:

RAID (Englanti Tarpeeton joukko riippumattomia levyjä - redundantti joukko itsenäisiä (riippumattomia) levyjä) - Datan virtualisointitekniikka useiden fyysisten levylaitteiden yhdistämiseen loogiseksi moduuliksi vikasietoisuuden ja suorituskyvyn lisäämiseksi.

Levyryhmien kokoonpano ja käytetyt tekniikat riippuvat valitusta RAID-taso. RAID-tasot on standardoitu spesifikaatioissa Yleinen RAID-levytietomuoto. Se kuvaa monia RAID-tasoja, mutta yleisimmät ovat RAID0, RAID1, RAID5 ja RAID6.

RAID0Tai Stripes, on RAID-taso, joka yhdistää kaksi tai useampia fyysistä asemaa yhdeksi loogiseks asemaksi. Loogisen levyn tilavuus on yhtä suuri kuin taulukkoon sisältyvien fyysisten levyjen volyymien summa. Tällä RAID-tasolla ei ole redundanssia, ja yhden aseman vika voi johtaa kaikkien virtuaalilevyn tietojen menetykseen.

Taso RAID1Tai Peili, luo identtiset kopiot tiedosta kahdelle tai useammalle levylle. Virtuaalilevyn koko ei ylitä fyysisten levyjen vähimmäiskokoa. RAID1-virtuaalilevyn tiedot ovat käytettävissä niin kauan kuin vähintään yksi fyysinen levy ryhmästä on toiminnassa. RAID1:n käyttö lisää redundanssia, mutta on melko kallis ratkaisu, koska kahden tai useamman levyn ryhmissä on käytettävissä vain yhden kapasiteetti.

Taso RAID5 ratkaisee korkeiden kustannusten ongelman. RAID5-tason taulukon luomiseen tarvitaan vähintään 3 levyä, ja ryhmä kestää yhden levyn vikoja. RAID5:n tiedot tallennetaan lohkoihin, joissa on tarkistussummat. Tietolevyjen ja tarkistussummalevyjen välillä ei ole tiukkaa jakoa. RAID5:n tarkistussummat ovat tulosta XOR-operaatiosta, jota sovelletaan N-1 lohkoon, joista jokainen on otettu eri levyltä.

Vaikka RAID-ryhmät lisäävät redundanssia ja tarjoavat redundanssia, ne eivät sovellu varmuuskopioiden tallentamiseen.

Lyhyen tutustumisen jälkeen RAID-taulukoiden tyyppeihin voit siirtyä laitteisiin ja ohjelmiin, joiden avulla voit koota ja käyttää levyryhmiä.

RAID-ohjaintyypit

On kaksi tapaa luoda ja käyttää RAID-ryhmiä: laitteisto ja ohjelmisto. Harkitsemme seuraavia ratkaisuja:

  • Linux-ohjelmiston RAID.
  • Intel® Virtual RAID -suorittimessa.
  • LSI MegaRAID 9460-8i.

Huomaa, että Intel®-ratkaisu toimii piirisarjalla, mikä herättää kysymyksen, onko kyseessä laitteisto- vai ohjelmistoratkaisu. Esimerkiksi VMWare ESXi -hypervisor ottaa huomioon VROC-ohjelmiston eikä tue sitä virallisesti.

Linux-ohjelmiston RAID

Linux-käyttöjärjestelmäperheen ohjelmisto-RAID-ryhmät ovat melko yleinen ratkaisu sekä asiakas- että palvelinsegmenteissä. Kaikki mitä tarvitset taulukon luomiseen on mdadm-apuohjelma ja muutama lohkolaite. Ainoa vaatimus, jonka Linux Software RAID asettaa käyttämilleen asemille, on olla järjestelmän käytettävissä oleva lohkolaite.

Laitteisto- ja ohjelmistokustannusten puuttuminen on tämän menetelmän ilmeinen etu. Linux Software RAID järjestää levyryhmät suorittimen ajan kustannuksella. Luettelo tuetuista RAID-tasoista ja nykyisten levyryhmien tila voidaan tarkastella mdstat-tiedostossa, joka sijaitsee procfs-juuressa:

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

RAID-tasojen tuki lisätään yhdistämällä sopiva ydinmoduuli, esimerkiksi:

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

Kaikki toiminnot levytaulukoiden kanssa suoritetaan mdadm-komentorivityökalun kautta. Levyryhmä kootaan yhdellä komennolla:

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

Tämän komennon suorittamisen jälkeen /dev/md0-lohkolaite ilmestyy järjestelmään, joka edustaa sinua virtuaalilevynä.

Intel® Virtual RAID -suorittimessa

RAID-ryhmät NVMe:ssäIntel® VROC -standardilaitteistoavain
Intel® Virtual RAID On CPU (VROC) on laitteisto- ja ohjelmistotekniikka Intel®-piirisarjoihin perustuvien RAID-ryhmien luomiseen. Tämä tekniikka on saatavilla ensisijaisesti emolevyille, jotka tukevat Intel® Xeon® Scalable -prosessoreita. Oletusarvoisesti VROC ei ole käytettävissä. Aktivoidaksesi sen, sinun on asennettava VROC-laitteistolisenssiavain.

VROC-lisenssin avulla voit luoda levyryhmiä 0, 1 ja 10 RAID-tasolla. Premium-versio laajentaa tätä luetteloa RAID5-tuella.

Intel® VROC -tekniikka nykyaikaisissa emolevyissä toimii yhdessä Intel® Volume Management Device (VMD) -laitteen kanssa, joka tarjoaa hot-swap-toiminnon NVMe-asemille.

RAID-ryhmät NVMe:ssäIntel® VROC -standardilisenssi Taulukot määritetään Setup Utility -apuohjelman kautta, kun palvelin käynnistyy. Välilehdellä Lisää Näkyviin tulee Intel® Virtual RAID on CPU -kohde, jossa voit määrittää levyryhmiä.

RAID-ryhmät NVMe:ssäRAID1-ryhmän luominen kahdelle asemalle
Intel® VROC -teknologialla on omat ässänsä hihassaan. VROC:lla rakennetut levyryhmät ovat yhteensopivia Linux Software RAIDin kanssa. Tämä tarkoittaa, että taulukoiden tilaa voidaan valvoa tiedostossa /proc/mdstat ja hallita mdadm:n kautta. Intel tukee tätä "ominaisuutta" virallisesti. Kun olet asentanut RAID1:n Setup Utility -apuohjelmassa, voit tarkkailla asemien synkronointia käyttöjärjestelmässä:

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>

Huomaa, että et voi koota taulukoita VROC:lla mdadm:n avulla (kootut taulukot ovat Linux SW RAID), mutta voit vaihtaa niissä olevia levyjä ja purkaa taulukoita.

LSI MegaRAID 9460-8i

RAID-ryhmät NVMe:ssäLSI MegaRAID 9460-8i -ohjaimen ulkonäkö
RAID-ohjain on erillinen laitteistoratkaisu. Ohjain toimii vain siihen suoraan kytkettyjen asemien kanssa. Tämä RAID-ohjain tukee jopa 24 NVMe-asemaa. NVMe-tuki erottaa tämän ohjaimen monista muista.

RAID-ryhmät NVMe:ssäLaitteiston ohjaimen päävalikko
Kun käytät UEFI-tilaa, ohjaimen asetukset on integroitu Setup Utility -apuohjelmaan. Verrattuna VROC:iin, laitteistoohjaimen valikko näyttää paljon monimutkaisemmalta.

RAID-ryhmät NVMe:ssäLuodaan RAID1 kahdelle levylle
Levytaulukoiden määrittämisen selittäminen laitteistoohjaimessa on melko arkaluonteinen aihe ja saattaa olla syy täysimittaiseen artikkeliin. Tässä rajoitamme vain RAID0:n ja RAID1:n luomiseen oletusasetuksilla.

Laitteiston ohjaimeen liitetyt levyt eivät näy käyttöjärjestelmälle. Sen sijaan ohjain "naamioi" kaikki RAID-ryhmät SAS-asemiksi. Käyttöjärjestelmä ei voi käyttää ohjaimeen kytkettyjä asemia, jotka eivät kuulu levyryhmään.

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.

Huolimatta siitä, että NVMe-ryhmät on naamioitu SAS-asemiksi, ne toimivat PCIe-nopeuksilla. Tämän ominaisuuden avulla voit kuitenkin käynnistää NVMe:stä Legacyssa.

Testiteline

Jokaisella levytaulukoiden järjestämismenetelmällä on omat fyysiset hyvät ja huonot puolensa. Mutta onko suorituskyvyssä eroa levyryhmien kanssa työskennellessä?

Maksimaalisen oikeudenmukaisuuden saavuttamiseksi kaikki testit suoritetaan samalla palvelimella. Sen kokoonpano:

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

Testiyksiköt ovat P4510, joista toinen puoli on kytketty emolevyyn ja toinen puoli RAID-ohjaimeen. M.2:ssa on käytössä Ubuntu 20.04 ja testit suoritetaan fio-versiolla 3.16.

Testaus

Ensinnäkin tarkistetaan viiveet levyn kanssa työskennellessä. Testi suoritetaan yhdessä säikeessä, lohkon koko on 4 KB. Jokainen testi kestää 5 minuuttia. Ennen aloittamista vastaava lohkolaite asetetaan I/O-skedoijaksi none-tilaan. fio-komento näyttää tältä:

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

Fio-tuloksista otamme clat 99.00%. Tulokset näkyvät alla olevassa taulukossa.

Satunnaisluku, μs
Satunnainen tallennus, μ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

Tietojen käsittelyssä esiintyvien viiveiden lisäksi haluaisin nähdä virtuaaliasemien suorituskyvyn ja verrata niitä fyysisen levyn suorituskykyyn. Komento suorittaa fio:

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

Suorituskykyä mitataan I/O-toiminnoilla. Tulokset on esitetty alla olevassa taulukossa.

Satunnaisluettu 1 säie, IOPS
Satunnainen kirjoitus 1 säie, IOPS
Satunnaisluku 128 säiettä, IOPS
Satunnainen kirjoitus 128 säiettä, 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

On helppo nähdä, että laitteistoohjaimen käyttö lisää viivettä ja parantaa suorituskykyä ohjelmistoratkaisuihin verrattuna.

Johtopäätös

Laitteistoratkaisujen käyttäminen levyryhmien luomiseen kahdesta levystä näyttää järjettömältä. On kuitenkin tehtäviä, joissa RAID-ohjainten käyttö on perusteltua. NVMe-rajapintaa tukevien ohjaimien myötä käyttäjillä on mahdollisuus käyttää projekteissaan nopeampia SSD-levyjä.

RAID-ryhmät NVMe:ssä

Vain rekisteröityneet käyttäjät voivat osallistua kyselyyn. Kirjaudu sisään, ole kiltti.

Käytätkö RAID-ratkaisuja?

  • 29,6%Kyllä, laitteistoratkaisut32

  • 50,0%Kyllä, ohjelmistoratkaisut54

  • 16,7%Nro 18

  • 3,7%RAIDia ei tarvita4

108 käyttäjää äänesti. 14 käyttäjää pidättyi äänestämästä.

Lähde: will.com

Lisää kommentti