Hej Habr! I denne artikel vil vi diskutere, om det er værd at oprette RAID-arrays baseret på solid-state-løsninger som SATA SSD og NVMe SSD, og om der vil være store fordele ved dette. Vi har besluttet at undersøge spørgsmålet ved at se på de typer og modeller af controllere, der muliggør dette, samt anvendelsesområderne for sådanne konfigurationer.

På en eller anden måde har vi alle hørt termerne "RAID", "RAID-array", "RAID-controller" mindst én gang i livet, men sjældent tillægger vi dem seriøs betydning, da det næppe interesserer den almindelige PC-bruger. Men hurtigere hastigheder fra interne drev og høj driftssikkerhed ønsker vi alle at have. For hvilken som helst kraftfuld computeropsætning vil opbevaringsdrevets hastighed være det begrænsende faktor, når vi taler om det samlede ydeevne af PC’en og serveren.
Det var sådan indtil det øjeblik, hvor moderne NVMe SSD'er med en sammenlignelig kapacitet på 1 TB og mere kom i stedet for traditionelle HDD'er. Tidligere så man ofte kombinationer af SATA SSD + et par højkapacitets HDD'er i PC’er, men nu begynder de at blive erstattet af en anden løsning — NVMe SSD + et par højkapacitets SATA SSD'er. Hvad angår virksomhedsservere og "cloud"-løsninger, er mange allerede skiftet til SATA SSD'er, blot fordi de er hurtigere end almindelige "harddiske" og kan håndtere flere I/O-operationer samtidigt.

Men systemets fejlfindingsresistens er stadig på et relativt lavt niveau: vi kan ikke som i "Battle of the Psychics" forudsige præcist, hvornår en given solid-state-disk vil give op. Mens HDD'ere "dør" gradvist og giver mulighed for at fange symptomer og tage affære, "dør" SSD'er pludseligt og uden advarsler. Og nu er det på tide at finde ud af, hvorfor dette hele er nødvendigt? Er det værd at oprette RAID-arrays baseret på solid-state-løsninger som SATA SSD og NVMe SSD, og vil der være store fordele ved dette?
Hvad er formålet med et RAID-array?
Selve ordet “array” antyder, at der bruges flere lagerenheder (HDD og SSD) til oprettelsen af det, som kombineres ved hjælp af en RAID-controller og genkendes af operativsystemet som et enkelt datalager. Den globale opgave, som RAID-arrays tillader, er at minimere adgangstiden til data, øge læse- og skrivehastigheden samt pålidelighed, som opnås gennem muligheden for hurtig gendannelse i tilfælde af fejl. For hjemmebackups er det ikke nødvendigt at bruge RAID. Men hvis du har din egen hjemme-server, som har brug for konstant adgang 24/7 — så er det en anden sag.
Der findes over et dusin niveauer af RAID-arrays, hver med forskellige antal anvendte lagringsenheder og deres egne fordele og ulemper: for eksempel giver RAID 0 høj ydeevne uden fejltolerance, RAID 1 muliggør automatisk spejling af data uden stigning i hastigheden, mens RAID 10 kombinerer funktioner fra de nævnte. RAID 0 og 1 er de mest enkle (da de ikke kræver softwareberegninger) og dermed de mest populære. I sidste ende afhænger valget af det ene eller det andet RAID-niveau af de opgaver, der stilles til diskarrayen, og RAID-controllerens muligheder.
Hjemme- og virksomhed RAID: hvad er forskellen?
Grundlaget for enhver moderne virksomhed er store mængder data, der skal opbevares sikkert på virksomhedens servere. Og som vi allerede har nævnt ovenfor, skal der ligeledes sikres konstant adgang 24/7. Det er klart, at både ”hardware” og software er vigtige, men i dette tilfælde taler vi faktisk om udstyr, der sikrer pålidelig opbevaring og behandling af information. Ingen software kan redde en virksomhed fra konkurs, hvis det “hardware”-udstyr, der er til rådighed, ikke lever op til de stillede krav.

Til disse opgaver tilbyder enhver producent af “hardware” de såkaldte virksomhedsenheder. Hos Kingston er det potente SSD-løsninger i form af SATA-modeller. og , samt NVMe-modeller som DC1000M U.2 NVMe, DCU1000 U.2 NVMe og DCP-1000 PCI-e, der er designet til brug i datacentre og supercomputere. Array med sådanne drev anvendes typisk sammen med hardwarekontrollere.

Til forbrugermarkedet (det vil sige til hjemme-PC'er og NAS-servere) er der sådanne drev som NVMe PCIe, men i dette tilfælde er det ikke nødvendigt at købe en hardwarekontroller. Man kan nøjes med den, der er indbygget i bundkortet til PC'en eller NAS-serveren, hvis man selvfølgelig ikke planlægger at samle en hjemme-server til unikke opgaver (for eksempel at oprette et lille hjemmehost til venner). Desuden forudsætter hjemme-RAID-arrays typisk ikke tilstedeværelsen af hundreder og tusinder af drev, men begrænser sig til to, fire eller otte enheder (ofte SATA).
Typer og kategorier af RAID-kontrollere
Der er tre typer RAID-kontrollere, baseret på principperne for implementering af RAID-arrays:
1. Software, hvor styringen af arrayet hviler på CPU og DRAM (det vil sige, at udførelsen af softwarekoden finder sted på processoren).
2. Integrerede, dvs. indbygget i bundkortene til PC'er eller NAS-servere.
3. Hardware (modulære), som er diskrete udvidelseskort til PCI/PCIe slot på systembundkort.
Hvad er deres grundlæggende forskelle? Software-RAID-kontrollere er underlegne integrerede og hardwarekontrollere med hensyn til ydeevne og fejltolerance, men de kræver ikke specielt udstyr for at fungere. Det er dog vigtigt at sikre, at processoren i værtssystemet er tilstrækkeligt kraftfuld til at køre RAID-software uden at have en negativ indvirkning på ydeevnen af de applikationer, der også kører på værten. Integrerede controllere leveres typisk med egen cache-hukommelse og bruger et vis antal CPU-ressourcer.
Hardware controllers have their own cache memory and built-in processors for executing software algorithms. They typically allow the implementation of all types of RAID levels and support multiple types of storage devices simultaneously. For example, modern hardware controllers from Broadcom can connect SATA, SAS, and NVMe devices at the same time, meaning that the controller does not need to be changed when upgrading servers: specifically, when migrating from SATA SSDs to NVMe SSDs, the controllers can remain the same.

On this note, we have approached the typology of the controllers themselves. If there are three-mode controllers, should there be others? In this case, the answer to this question will be affirmative. Depending on their functions and capabilities, RAID controllers can be divided into several types:
1. Standard controllers with RAID functionality
In the entire hierarchy, this is the simplest controller, allowing the combination of HDDs and SSDs into RAID arrays of levels '0', '1', or '0+1'. This is implemented programmatically at the firmware level. However, such devices are unlikely to be recommended for corporate use as they lack cache and do not support arrays of levels '5', '3', etc. They are, however, quite suitable for entry-level home servers.
2. Controllers working in tandem with other RAID controllers
This type of controller can operate alongside integrated controllers on motherboards. This is implemented on the following principle: the discrete RAID controller handles 'logical' tasks, while the built-in controller manages data exchange between storage devices. There is a caveat, though: the parallel operation of such controllers is only possible on compatible motherboards, meaning their area of application is significantly limited.
3. Independent RAID controllers
These discrete solutions contain all the necessary chips for working with enterprise-class servers, equipped with their own BIOS, cache memory, and a processor for quick error correction and checksum computation. Moreover, they meet high manufacturing reliability standards and possess high-quality memory modules.
4. External RAID controllers
Det er ikke svært at gætte, at alle de ovennævnte controllere er interne og får strøm gennem PCIe-stikket på bundkortet. Hvad betyder det? At fejl på bundkortet kan føre til fejl i RAID-arrayet og datatab. Externe controllere undgår dette problem, da de er placeret i et separat kabinet med en uafhængig strømforsyning. Med hensyn til pålidelighed tilbyder sådanne controllere det højeste niveau af datalagring.
, Microsemi Adaptec, Intel, IBM, Dell og Cisco er blot nogle af de virksomheder, der i øjeblikket tilbyder hardware RAID-controllere.
Driftsformer for RAID-controllere SAS/SATA/NVMe
Hovedopgaven for tri-mode HBA- og RAID-controllere (eller controllere med tri-mode funktion) er at skabe hardware RAID baseret på NVMe. Broadcom har controllere af 9400-serien, som kan gøre dette: for eksempel, . Det tilhører typen af selvstændige RAID-controllere, udstyret med fire SFF-8643 stik og, takket være tri-mode understøttelse, tillader tilslutning af SATA/SAS- og NVMe-lagringsenheder samtidig. Desuden er det også en af de mest energieffektive controllere på markedet (forbruger kun 17 watt energi, hvilket er mindre end 1,1 watt pr. port for hver af de 16 porte).

Tilslutningsinterfacet er PCI Express x8 version 3.1, hvilket muliggør en båndbredde på 64 Gbit/s (i 2020 forventes kontrollere til PCI Express 4.0). Den 16-portede controller er baseret på en dual-core chip og 72-bit DDR4-2133 SDRAM (4 GB), og der er mulighed for at tilslutte op til 240 SATA/SAS-lagringsenheder eller op til 24 NVMe-enheder. Når det kommer til organisationen af RAID-arrays, understøttes niveauer “0”, “1”, “5” og “6”, samt “10”, “50” og “60”. For øvrigt er cache-hukommelsen og de øvrige controllere i 9400-serien beskyttet mod strømsvigt af en ekstra CacheVault CVPM05-modul.
Den tre-tilstand teknologi er baseret på SerDes data konverteringsfunktion: omdannelse af den sekventielle datarepræsentation i SAS/SATA interfaces til en parallel form i PCIe NVMe og omvendt. Det vil sige, controlleren synkroniserer hastigheder og protokoller for problemfrit at arbejde med enhver af de tre typer lagringsenheder. Dette sikrer en problemfri måde at skalere datacenterinfrastrukturen: brugerne kan anvende NVMe uden væsentlige ændringer i andre systemkonfigurationer.

Når man planlægger konfigurationer med NVMe-drev, er det vigtigt at tage højde for, at NVMe-løsninger bruger 4 PCIe baner til tilslutning, hvilket betyder, at hvert drev udnytter alle baner fra SFF-8643 porte. Det resulterer i, at man kun kan tilslutte fire NVMe-drev direkte til MegaRAID 9460-16i controlleren. Alternativt kan man begrænse sig til to NVMe-løsninger, mens der samtidig tilsluttes otte SAS-drev (se tilslutningsskemaet nedenfor).

Illustrationen viser brugen af forbindelse '0' (C0 / Connector 0) og forbindelse '1' til NVMe-forbindelser samt forbindelserne '2' og '3' til SAS-forbindelser. Denne konfiguration kan ændres til det modsatte, men hvert x4 NVMe-drev skal tilsluttes ved at bruge nærliggende baner. Controllerens driftsmodi indstilles via konfigurationsværktøjerne StorCLI eller Human Interface Infrastructure (HII), som fungerer i UEFI-miljøet.

Standardtilstand er profil 'PD64' (kun SAS / SATA understøttelse). Som nævnt tidligere er der i alt tre profiler: 'SAS/SATA only mode' (PD240 / PD64 / PD16), 'NVMe only mode' (PCIe4) og en blandet tilstand, hvor alle typer drev kan fungere: 'PD64-PCIe4' (understøttelse af 64 fysiske og virtuelle diske med 4 NVMe-drev). I blandet tilstand skal den angivne profil være - 'ProfileID=13'. Det skal bemærkes, at den valgte profil gemmes som hovedprofil og nulstilles ikke, selv ved en fabriksnulstilling via kommandoen Set Factory Defaults. Den kan kun ændres manuelt.
Bør man oprette et RAID-array på SSD?
Så vi har allerede forstået, at RAID-arrays er nøglen til høj ydeevne. Men er det værd at samle et RAID af solid-state-drev til hjemme- og erhvervsbrug? Mange skeptikere siger, at hastighedsgevinsten ikke er så betydelig, at man skal bruge penge på NVMe-drev. Men er det virkelig sådan? Sandsynligvis ikke. Den største begrænsning ved brug af SSD i RAID (både hjemme og på erhvervslivet) kan kun være prisen. Uanset hvordan man vender og drejer det, er omkostningerne pr. gigabyte plads hos HDD betydeligt lavere.
At forbinde flere solid-state "diskette" til RAID-controlleren for at skabe et array af SSD i bestemte konfigurationer kan have en enorm indflydelse på ydeevnen. Man skal dog ikke glemme, at den maksimale ydeevne er begrænset af selve RAID-controllerens båndbredde. RAID-niveauet, der tilbyder den bedste hastighed, er RAID 0.

Oprettelsen af et almindeligt RAID 0 med to SSD-drev, hvor metoden til datadeling på faste blokke og deres skift mellem solid-state-lagringsenhederne anvendes, vil føre til en fordobling af ydeevnen (i forhold til hastighederne, som én SSD giver). Samtidig vil et RAID 0-array med fire solid-state-drev være fire gange hurtigere end det langsomste SSD i arrayet (afhængig af båndbreddebegrænsningen på RAID-controller-niveauet for SSD).
Hvis man ser på simpel aritmetik, er SATA SSD cirka 3 gange hurtigere end traditionelle SATA HDD. NVMe-løsninger er endnu mere effektive - 10 gange eller mere. Forudsat at to harddiske i RAID-niveau nul vil vise fordoblet ydeevne, hvilket øger den med 50%, vil to SATA SSD være 6 gange hurtigere, og to NVMe SSD vil være 20 gange hurtigere. Specifikt kan en Kingston KC2000 NVMe PCIe-enhed nå sekventielle læse- og skrivehastigheder på op til 3200 MB/s, hvilket i RAID 0-format vil nå imponerende 6 GB/s. Og læse-/skrivehastigheden for tilfældige blokke på 4 KB vil ændre sig fra 350.000 IOPS til 700.000 IOPS. Men... samtidig giver
Man kan sige, at redundans i lagerkapacitet som regel ikke er nødvendig i hjemmet, så den mest passende RAID-konfiguration for SSD er faktisk RAID 0. Dette er en pålidelig måde at opnå en betydelig præstationsforøgelse på som et alternativ til at bruge teknologier som Intel Optane-baserede SSD'er. Hvordan SSD-løsninger vil performe i de mest populære RAID-typer ('1', '5', '10', '50') vil vi dog tale om i vores næste materiale.
Denne artikel er forberedt med støtte fra vores kolleger hos Broadcom, der leverer deres controllere til Kingston-ingeniører til test med SATA/SAS/NVMe enterprise-lagringsløsninger. Takket være dette venskabelige samarbejde kan kunderne være sikre på pålideligheden og stabiliteten af Kingston-lagringsløsninger med HBA- og RAID-controllere. .
Yderligere oplysninger om Kingston-produkter kan findes the company.
Kilde: habr.com
