Vraag Software versus hardware RAID-prestaties en cachegebruik


Ik heb veel gelezen over RAID-controllers / setups en een ding dat veel naar voren komt is hoe hardwarebesturingen zonder cache dezelfde prestaties bieden als software-RAID. Is dit echt zo?

Ik dacht altijd dat hardware RAID-kaarten betere prestaties zouden bieden, zelfs zonder cache. Ik bedoel, je hebt speciale hardware om de taken uit te voeren. Als dat het geval is, wat is dan het voordeel van het krijgen van een RAID-kaart zonder cache, zoiets als een LSI 9341-4i die niet bepaald goedkoop is.

Ook als een prestatiewinst alleen mogelijk is met cache, is er dan een cacheconfiguratie die direct naar de schijf schrijft, maar gegevens in de cache bewaart voor leesbewerkingen, waardoor een BBU geen prioriteit is?


62
2018-04-24 11:13


oorsprong


Iets waarvan ik gemerkt heb dat het goed is voor HW raid: in mijn ervaring, als je een SW raid uitvoert en het systeem iets anders doet dan een schone shutdown, zul je een fout maken in de array en deze opnieuw moeten opbouwen. HW raid geeft geen fout als het niet aan het schrijven was toen het systeem uitviel. - Loren Pechtel


antwoorden:


Kortom: als je een low-end RAID-kaart (zonder cache) gebruikt, doe jezelf dan een plezier en schakel over naar software-RAID. Als je een mid-tot-high-end kaart gebruikt (met BBU of NVRAM), dan is hardware vaak (maar niet altijd! Zie hieronder) een goede keuze.

Lang antwoord: wanneer de rekenkracht beperkt was, hadden hardwarematige RAID-kaarten het aanzienlijke voordeel om pariteits / syndroomberekeningen af ​​te rekenen voor RAID-schema's waarbij ze betrokken waren (RAID 3/4/5, RAID6, ecc).

Met de steeds hogere CPU-prestaties is dit voordeel in feite verdwenen: zelfs de oude CPU van mijn laptop (Core i5 M 520, Westmere-generatie) heeft XOR-prestaties van meer dan 4 GB / s en RAID-6-syndroomprestaties over 3 GB / s over een enkele uitvoeringskern.

Het voordeel dat hardware RAID tegenwoordig handhaaft, is de aanwezigheid van een DRAM-cache die beschermd is tegen stroomverlies, in de vorm van BBU of NVRAM. Deze beschermde cache geeft een zeer lage latentie voor willekeurige schrijftoegang (en leest die hit) en transformeert in feite willekeurige schrijfopdrachten in sequentiële schrijfbewerkingen. Een RAID-controller zonder zo'n cache is bijna nutteloos. Bovendien komen sommige low-end RAID-controllers niet alleen zonder cache, maar maken ze ook met geweld de privé-DRAM-cache van de schijf uit, leidt tot langzamere prestaties dan helemaal zonder RAID-kaart. Een voorbeeld zijn de PERC H200- en H300-kaarten van DELL: als nieuwere firmware dit niet heeft veranderd, wordt de persoonlijke cache van de schijf volledig uitgeschakeld (en kan deze niet opnieuw worden ingeschakeld terwijl de schijven zijn aangesloten op de RAID-controller). Doe jezelf een plezier en doe het nooit, nooit koop dergelijke controllers. Hoewel een nog hogere controller de privécache van de schijf vaak uitschakelt, hebben ze op zijn minst een eigen beschermde cache - waardoor de privé-cache van de HDD's (maar niet SSD's!) Enigszins overbodig is.

Dit is echter niet het einde. Zelfs capabele controllers (die met BBU of NVRAM-cache) kunnen inconsistente resultaten geven bij gebruik met SSD, eigenlijk omdat SSD echt nodig hebben een snelle private cache voor efficiënte FLASH-pagina's programmeren / wissen. En terwijl sommige (de meeste?) Controllers u in staat stellen de privé-cache van de schijf opnieuw in te schakelen (bijv .: PERC H700 / 710 / 710P laat de gebruiker het opnieuw inschakelen), als die privé-cache niet tegen schrijven beveiligd is, riskeert u gegevens te verliezen in het geval van vermogensverlies. Het exacte gedrag is echt afhankelijk van controller en firmware (bijv .: op een DELL S6 / i met 256 MB WB-cache en ingeschakeld schijfcache, Ik had Nee verliezen tijdens meerdere, geplande testen van vermogensverlies), wat onzekerheid en veel zorg oplevert.

Open-source software RAID's zijn daarentegen veel meer controleerbare beesten - hun software is niet ingesloten in een eigen firmware en heeft duidelijk gedefinieerde metadatapatronen en gedrag. Softwarematige RAID doet de (juiste) aanname dat de privé DRAM-cache van de schijf niet is beveiligd, maar tegelijkertijd is het van cruciaal belang voor acceptabele prestaties - dus ze schakelen het meestal niet uit, in plaats daarvan gebruiken ze ATA FLUSH / FUA-opdrachten om er zeker van te zijn dat kritieke gegevens landen op stabiele opslag. Omdat ze vaak rennen vanaf de SATA-poorten die zijn aangesloten op de chipset SB, is hun bandbreedte erg goed en is de stuurprogramma-ondersteuning uitstekend.

Bij gebruik in combinatie met mechanische HDD's zal een gesynchroniseerd, willekeurig schrijftoegangspatroon (bijv. Databases, virtuele machines) echter zwaar te lijden hebben vergeleken met een hardware RAID-controller met WB-cache. Aan de andere kant, wanneer ze worden gebruikt met SSD's, blinken ze vaak uit en geven ze zelfs nog meer resultaten dan haalbaar is met hardware RAID-kaarten.

Bedenk ook dat software-RAID's niet allemaal hetzelfde zijn gemaakt. Windows-software RAID heeft een slechte reputatie, wat prestaties betreft, en zelfs opslagruimte lijkt niet te verschillend. Linux MD Raid is uitzonderlijk snel en veelzijdig, maar de Linux I / O-stack is samengesteld uit meerdere onafhankelijke stukken die je zorgvuldig moet begrijpen om maximale prestaties te verkrijgen. ZFS pariteit RAID (ZRAID) is extreem geavanceerd maar kan, als het niet juist is geconfigureerd, u dat geven heel slechte IOP's; spiegelen + striping, aan de andere kant, presteert redelijk goed. Hoe dan ook, het heeft een snel SLOG-apparaat nodig voor synchrone schrijfverwerking (ZIL).

Bottom line:

  1. als uw workloads niet willekeurig zijn gesynchroniseerd, hebt u geen RAID-kaart nodig
  2. als je een RAID-kaart nodig hebt, doe dat dan niet koop een RAID-controller zonder WB-cache
  3. als u van plan bent om SSD te gebruiken, heeft software-RAID de voorkeur. Mijn beste keuze is Linux MD Raid. Als je geavanceerde functies van ZFS nodig hebt, kies dan voor ZRAID, maar denk goed na over je vdev-configuratie!
  4. als je, zelfs met SSD, echt een hardware RAID-kaart nodig hebt, gebruik dan SSD's met schrijfbeveiligde caches (Micron M500 / 550/600 hebben gedeeltelijke bescherming - niet echt voldoende, maar beter dan niets), terwijl Intel DC en S-serie volledig vermogensverlies hebben bescherming, en hetzelfde kan gezegd worden voor zakelijke Samsung SSD's)
  5. als je RAID6 nodig hebt en normale, mechanische HDD's gebruikt, overweeg dan om een ​​snelle RAID-kaart te kopen met een WB-cache van 512 MB (of meer). RAID6 heeft een hoge schrijffunctie en een WB-cache met de juiste afmetingen kan op zijn minst een snelle tijdelijke opslag bieden voor kleine synchrone schrijfbewerkingen (bijv. Bestandssysteemjournaal).
  6. als je RAID6 met HDD's nodig hebt, maar je kan / wil geen hardware RAID-kaart kopen, denk dan goed na over je software-RAID-installatie. Een mogelijke oplossing met Linux MD Raid is bijvoorbeeld om twee arrays te gebruiken: een kleine RAID10-array voor logboekregistraties / DB-logboeken en een RAID6-array voor onbewerkte opslag (als fileserver). Aan de andere kant is software RAID5 / 6 met SSD's erg snel, dus je hebt waarschijnlijk geen RAID-kaart nodig voor een setup met alle SSD's.

127
2018-04-24 13:23



Hartelijk dank voor de geweldige uitleg, ik had geen idee dat RAID-kaarten de cache op de harde schijven hebben uitgeschakeld. Dit is niet het type server dat de investering van bijna $ 800 + garandeert, dus ik zal wat meer lezen over de software-RAID-instellingen en daar waarschijnlijk ook aan meewerken. - ItsJustMe
@ItsJustMe: sommige toepassingen schakelen ook cache voor schijfschrijven uit, als de drive Force Unit Access ondersteunt. Microsoft Active Directory, Exchange komt voor de geest. - Greg Askew
Het OP heeft het over een hypervisor. RAID5 zou uitgesloten moeten zijn, en schrijfcache zal een must zijn. - ewwhite
In werkelijkheid, zelfs in 2016, schrijft een software met zes schijven RAID 5/6 met <25 MB / s, terwijl een goede hardware RAID-kaart uit 2010 schrijft bij> 500 MB / s. Dit is op zowel Intel RSTe als Windows Storage Spaces. Ik begrijp gewoon niet wat de bottleneck is van een moderne CPU. - Monstieur
Het probleem met software RAID 5/6 is dat schrijven vaak een lees-wijzig-schrijf activeert, die op hun beurt de schijven aanzienlijk vertragen. Een BBU-compatibele hardware RAID-controller kan meerdere schrijfbewerkingen samenvoegen in een enkele schijftoegang / -transactie, waardoor de prestaties aanzienlijk verbeteren. - shodanshok


U wilt een cacheoplossing met batterij of flash-back-up voor elke hardware-controller die u koopt. Het spijt me dat ik dit niet doe.

Maar om uw vraag te beantwoorden, de meeste controllers hebben configureerbare cache-verhoudingen ... dus 100% lezen cache en 0% schrijven cache ontkent de behoefte aan BBU-bescherming. Je schrijfprestaties zullen gewoon zuigen.

Ik kan uw softwarematige RAID-vraag niet behandelen, omdat het er van afhangt. Linux MD RAID is anders dan Windows Software RAID, wat anders is dan zoiets ZFS. Oplossingen zoals ZFS kan beter presteren dan hardware, omdat ze gebruikmaken van de RAM- en CPU-bronnen van de server.


6
2018-04-24 11:20



Door "schrijfprestaties zal gewoon zuigen" bedoel je dat dat ongeveer hetzelfde zal zijn als Software RAID of Hardware RAID zonder cache? Of is er een boete om nog betere prestaties te schrijven als de kaart de cache aan het lezen wijdt? - ItsJustMe
Het hangt ervan af wat je aan het doen bent. Als u geen schrijfintensieve toepassing hebt, is de treffer met de prestaties mogelijk geen probleem. - ewwhite
Het is een Proxmox HOST met Windows VM's die worden gebruikt voor e-mail en webhosting. Er is niet veel gebruik van de database, maar de e-maildienst heeft waarschijnlijk veel schrijfactiviteit. Momenteel ben ik alleen aan het debatteren of het hebben van een alleen-lezen cachekaart de moeite waard is voor Software RAID. - ItsJustMe
Gebruik een Flash-backed RAID-controller voor virtualisatie. - ewwhite
We hebben een cyrus-mailserver met ongeveer 4000 accounts erop uitgevoerd met behulp van software-RAID. Actieve accounts die het elke dag raken, waren meer 300 tot 600. De prestaties waren merkbaar slechter dan onze primaire cyrus-mailserver met hardware-RAID en een BBU. De BBU- en RAID-controllercache biedt gegevensbeveiliging, maar biedt ook prestaties. Dit komt omdat zodra de gegevens bij de controller aankomen, het aan het besturingssysteem kan vertellen dat het schrijven is voltooid. Anders zou het moeten wachten tot de harde schijf aangeeft dat het schrijven voltooid is. Dit bespaart significante klokcycli. Verplaatst naar hardware-RAID en opgelost. - labradort


De RAID-controller waar u naar op zoek bent, is een goedkope en is eigenlijk een fakeraid. Het is zelfs afhankelijk van je moederbord om een ​​aantal functies zoals geheugen aan te bieden en niet veel moederborden hebben ondersteuning daarvoor, waardoor je de driver niet kunt laden.

Over HW vs SW-RAID zelf. Ik gebruik HW-RAID niet meer, tenzij het een doos is met een EMC-logo erop bijvoorbeeld. Voor de rest schakelde ik nog een aantal manen terug naar SW-RAID om een ​​paar heel eenvoudige redenen.

  1. U hebt extra hardware nodig en moet deze matchen. U moet ook de firmware afstemmen en synchroon houden. Veel schijven zullen niet correct werken en u zult spikes in uw IO-latentie hebben zonder duidelijke reden.

  2. Extra hardware is duur, dus je kunt die extra $ 1000 (fatsoenlijke controller met twee / drie schijven) voor een kleine oplossing beter gebruiken. Investeer het in meer schijven en standaardcontrollers, ECC-geheugen, snellere CPU. En een reserve-schijf op locatie, misschien als u van plan bent om hem langer te gebruiken dan de garantieperiode of als u de expresskosten niet wilt betalen voor verzending per nacht.

  3. Upgraden is lastig omdat je OS-patches en firmware voor zowel schijf als controller moet bijhouden. Dit kan ertoe leiden dat upgraden / updaten niet meer mogelijk is.

  4. Op schijfindelingen. Voldoende leveranciers gebruiken een interne lay-out om gegevens op te slaan die gekoppeld zijn aan een revisie van je hardware- en firmware-combinatie. Dit kan ertoe leiden dat een vervangend onderdeel het voor u onmogelijk maakt om toegang te krijgen tot uw gegevens.

  5. Het is een SPOF en een knelpunt. Het hebben van slechts één controller achter slechts één PCI-bridge geeft je niet de prestaties en redundantie die je echt nodig hebt. Hierdoor komt er ook geen migratiepad om data te migreren naar een andere diskset buiten het bereik van de controller.

De meeste van deze punten zijn behandeld met nieuwere generaties SW-RAID-software of oplossingen zoals ZFS en BtrFS. Houd in gedachten dat u uiteindelijk uw gegevens wilt beschermen en niet snel toegankelijke, maar overbodige garbage.


6
2018-04-24 12:24



Ben ik het niet mee eens. Veel mensen zijn blij met Dell, HP, IBM en high-end LSI RAID-controllers. Maar eerlijk gezegd, de meeste moderne kwaliteitsservers hebben al ingebouwde RAID-oplossingen, dus het idee om te winkelen voor een individuele controller is een beetje verouderd. Software RAID-oplossingen moeten ook rekening houden met schrijfwerklasten met lage latency. ZFS heeft een ZIL, maar veel andere software-RAID-implementaties ontbreken op dat front. - ewwhite
Ik zou ook verschillen met uw laatste alinea, RAID is beschikbaarheid, geen bescherming. Bescherming vereist back-ups en niet RAID. - Rowan Hawkins


Ik heb het afgelopen jaar (uit en door tot en met 2014-2015) verschillende parallelle CentOS 6.6 RAID 1 (gespiegelde) configuraties getest met behulp van 2 LSI 9300 HBA verzen 2 LSI 9361-8i RAID-controllers met systemen die zijn gebouwd op het volgende: 2U Supermicro CSE- 826BAC4-R920LPB-chassis, een ASUS Z9PE-D16 moederbord, 2 Intel Xeon E5-2687W v2 acht-core 3,4 GHz processors, mirrored Seagate ST6000NM0014 6TB SAS 12Gbs, 512 GB RAM. Let op dit is een volledig SAS3 (12 Gbps) compliant configuratie.

Ik heb de artikelen gelezen die zijn geschreven over tuning-software en ik gebruik Linux-software RAID al meer dan 10 jaar. Bij het uitvoeren van eenvoudige I / O-tests (dd-oflag = directe 5k-naar-100G-bestanden, hdparam -t, enz.), Lijkt software-RAID gunstig te opstapelen naar hardware-overval. De software-RAID werd gespiegeld via afzonderlijke HBA's. Ik ben zelfs zover gegaan om te testen met de standaard CentOS 6-kernel-, kernel-lt- en kernel-ml-configuraties. Ik heb ook verschillende mdadm-, bestandssysteem-, schijfsubsystemen en o / s-afstemmingen geprobeerd die zijn voorgesteld door een verscheidenheid aan online artikelen die zijn geschreven over RAID voor Linux-software. Ondanks tunen, testen, tunen en testen, tijdens het spelen in een leeswereld, het transactieverwerkingssysteem (met een MySQL- of Oracle-database), heb ik ontdekt dat het draaien van een hardware-RAID-controller resulteert in een 50 keer hogere prestatie. Ik schrijf dit toe aan de hardware RAID-geoptimaliseerde cachebesturing.

Gedurende vele, vele maanden was ik er niet van overtuigd dat hardwarematige RAID zoveel beter zou kunnen zijn, maar na uitvoerig onderzoek naar RAID, RAID, testen en tuning, waren dit mijn resultaten.


3
2017-07-29 12:54





De meeste schrijvers hier zijn gewoon onwetend van "schrijf een gat"Dit is de basis die het mogelijk maakt om te schreeuwen naar battey back-upeenheden van hardware-RAID's versus afwezigheid van een dergelijke voor software-RAID's., Bijvoorbeeld, Linux-software RAID-implementatie ondersteunt bitmaps van schrijfbewerkingen of voert volledige" pariteit "uit -calculatie in het geval van niet-schone shutdown ZFS streeft altijd naar full-stripes-schrijfacties om deze inconsistentie te voorkomen of uit te stellen dat het opnieuw moet worden gecontroleerd. Dus als samenvatting is slim genoeg-software-RAID tegenwoordig vaak goed genoeg om in plaats daarvan te worden gebruikt van "wie weet wat er in zit", de zogenaamde "hardware RAID".

Wat betreft het cachegedeelte van de vraag, het maakt echt niet zo veel uit, want de schrijfcache van het besturingssysteem zelf kan veel groter zijn dan de "hardware" -adapter.


1
2018-04-24 17:17



Dit is een andere reden om hardwarematige RAID-kaarten te vermijden zonder een juiste beschermde WB-cache. Een opmerking over Linux MD Raid: het is niet volledig immuun voor write-holes. Omdat het geen bescherming tegen stroomverlies heeft, zullen gegevens in het geval van plotselinge stroomuitval uiteindelijk verloren gaan (denk aan in-transit data en / of gedeeltelijke schrijfacties). Natuurlijk gebeurt dit zelfs in scenario's met één schijf, maar de pariteitsaard of RAID5 / 6 versterken dit. In het slechtste geval kunnen de metadata van crische bestandssystemen beschadigd zijn, maar moderne bestandssystemen zijn veerkrachtig genoeg om heel mooi te herstellen. Sommige gegevens kunnen echter verloren gaan. - shodanshok
@shodanshok, je hebt helemaal ongelijk. Denken - poige
Veel batterijen kunnen, indien ze in goede staat worden gehouden, de WB-cache gedurende 24-96 uur opstarten, wat voldoende tijd is om het stroomverbruik te herstellen behalve werkelijk extreme situaties. Bovendien schakelde de moderne controller over naar NVRAM (lees: flash) geheugen als opslag voor de lange termijn, dus in het geval van een stroomstoring zal een kleine batterij / supercap de cache-inhoud in een NV-geheugen doorspoelen dat gegevens kan bewaren voor maanden of jaren Met andere woorden, een BBU RAID-controller zullen voorkomen van RAID5 / 6 gaten in (bijna) alle omstandigheden. - shodanshok
Je zei dat het immuun is om een ​​gat te schrijven. Ontwikkelaars zeggen dat het dat niet is, zij het dat het niet veel uitmaakt in het echte wereldgebruik. - shodanshok
Sorry maar u schreef: "Dit is de basis die het mogelijk maakt om te schreeuwen naar battey back-upeenheden van hardware RAID's versus afwezigheid van een dergelijke voor software RAID's". Dit is fout. Juiste hardware RAID-kaarten geven toegevoegd bescherming, en ik heb je meerdere keren gezegd dat dit de mening is van dezelfde LSR-ontwikkelaars. Nu stel ik je een vraag: je verklaring is goed of fout? Omdat het verkeerd is, bewerk je je antwoord of een andere gebruiker kan voor de gek gehouden worden door die onzin. - shodanshok


Ik werk dit de hele tijd. Het hangt sterk af van wat je doet en het raidniveau dat je ondersteunt. Een SW-controller met een Raid 0 of 1 voor voor het besturingssysteem en niets speciaals is prima. Het uitvoeren van een SW-controller met een Raid 5 in een database vraagt ​​om problemen! SOMMIGE hardware-controller geeft je betere prestaties, maar het hangt ervan af of het kan cachen en de processor-chipset van de raid-kaart. Ook wordt niet alle software-controller ondersteund door alle ossen. Dus soms moet je misschien een HW kopen om ESXi uit te voeren ... Tenzij je sata-verbindingen gebruikt.


-1
2018-02-22 18:55