Hvorfor er RAID5 et "må ha"? Se hva "RAID" er i andre ordbøker

En kort oversikt over RAID-teknologi

Dette dokumentet beskriver de grunnleggende elementene i RAID-teknologi og gir en oversikt over de ulike RAID-nivåene.

  • RAID 2, 3

    RAID 4, 5

    Bord: fordeler og ulemper ved store RAID-nivåer

PLYNDRINGSTOKT er et akronym for Redundant rekke uavhengige disker.

En diskarray er en samling av diskenheter som jobber sammen for å øke hastigheten og påliteligheten til et I/O-system. Dette settet med enheter administreres av en spesiell RAID-kontroller ( array-kontroller), som innkapsler funksjonene til å arrangere data i en matrise; og for resten av systemet lar det hele arrayet bli representert som én logisk I/O-enhet. På grunn av parallell kjøring av lese- og skriveoperasjoner på flere disker, gir arrayet økt utvekslingshastighet sammenlignet med én stor disk.

Arrays kan også gi redundant datalagring slik at data ikke går tapt hvis en av stasjonene svikter. Avhengig av RAID-nivået, utføres enten speiling eller distribusjon av data på tvers av disker.

RAID-nivåer

Hvert av de fire store RAID-nivåene bruker en unik metode for å skrive data til disker, og derfor gir hvert nivå forskjellige fordeler. RAID-nivå 1,3 og 5 gir speiling eller lagring av paritetsbiter; og lar deg derfor gjenopprette informasjon i tilfelle feil på en av diskene.

RAID nivå 0

RAID 0-teknologi er også kjent som datastriping ( datastriping). Med denne teknologien brytes informasjon ned i biter (faste mengder data, ofte referert til som blokker); og disse bitene skrives til og leses fra disker parallelt. Når det gjelder ytelse, betyr dette to hovedpunkter fordeler:

    Øker sekvensiell I/O-gjennomstrømning ved å laste flere grensesnitt samtidig.

    redusert ventetid for tilfeldig tilgang; flere forespørsler om forskjellige små segmenter av informasjon kan utføres samtidig.

Feil: RAID 0 er utelukkende av ytelsesgrunner og gir ikke dataredundans. Derfor vil eventuelle diskfeil kreve informasjonsgjenoppretting fra backupmedier.

Array-kontroller

Plate 1

Plate 2

Plate 3

Plate 4

Plate 5

Segment 1

Segment 2

Segment 3

Segment 4

Segment 5

Segment 6

Segment 7

Segment 8

Segment 9

Segment 10

ris. 1. Array-operasjonsskjema og datadistribusjon på tvers av disker for RAID 0. Merk: segmentet- Dette er 2 diskblokker på 512 byte.

RAID nivå 1

RAID 1-teknologi er også kjent som speiling ( diskspeiling). I dette tilfellet lagres kopier av hver informasjonsbit på en separat disk; eller, vanligvis hver (brukt) disk har en "dobbel" som lagrer eksakt kopi denne disken. Hvis en av primærstasjonene svikter, erstattes denne av dens "tvilling". Tilfeldig leseytelse kan forbedres ved å bruke "dobbelt" med hodet nærmere den nødvendige blokken for å lese informasjon.

Opptakstiden kan være litt mer enn for én disk, avhengig av skrivestrategien: skriving til to disker kan gjøres enten parallelt (for hastighet) eller strengt sekvensielt (for pålitelighet).

RAID 1 er godt egnet for applikasjoner som krever høy pålitelighet, lav leseforsinkelse og hvor kostnadsminimering ikke er nødvendig. RAID 1 gir redundant lagring av informasjon, men uansett bør du ta vare på en sikkerhetskopi av dataene fordi dette er den eneste måten å gjenopprette slettede filer eller kataloger ved et uhell.

Plate 1 (data)

Plate 2 (kopi av plate 1)

Plate 3 (data)

Plate 4 (kopi av plate 3)

Plate 5 (gratis)

Segment 1

Segment 1

Segment 2

Segment 2

Segment 3

Segment 3

Segment 4

Segment 4

ris. 2. Datadistribusjon på tvers av disker for RAID 1.

RAID nivå 2 og 3

RAID-nivå 2 og 3 gir parallell ("unison") drift av alle stasjoner. Denne arkitekturen krever lagring av paritetsbiter for hver del av informasjonen fordelt på diskene. Den eneste forskjellen mellom RAID 3 og RAID 2 er at RAID 2 bruker flere disker for å lagre paritetsbiter, mens RAID 3 bruker bare én. RAID 2 brukes sjelden.

Hvis en datastasjon feiler, kan systemet gjenopprette innholdet fra innholdet på de gjenværende datastasjonene og paritetsstasjonen.

Ytelsen i dette tilfellet er veldig høy for store mengder informasjon, men den kan være ganske beskjeden for små volumer, siden overlappende lesing av flere små informasjonssegmenter er umulig.

Plate 1 (data)

Plate 2 (data)

Plate 3 (data)

Plate 4 (data)

Plate 5 (paritetsinformasjon)

Paritetsbyte

Paritetsbyte

ris. 3. Datadistribusjon på tvers av disker for RAID 3.

RAID nivå 4 og 5

RAID 4 korrigerer noen av ulempene med RAID 3 ved å bruke store deler av informasjon spredt over alle stasjoner bortsett fra paritetsstasjonen. I dette tilfellet, for små mengder informasjon, brukes bare disken som den nødvendige informasjonen er plassert på. Dette betyr at flere leseforespørsler kan utføres samtidig. Skriveforespørsler genererer imidlertid låser når du skriver paritetsinformasjon. RAID 4 brukes sjelden.

RAID 5 er veldig lik RAID 4, men fjerner den tilhørende blokkeringen. Forskjellen er at paritetsinformasjon er distribuert over alle diskene i arrayet. I dette tilfellet er både lese- og skriveoperasjoner mulig.

Denne teknologien er godt egnet for applikasjoner som arbeider med små mengder data, som for eksempel transaksjonsbehandlingssystemer.

Plate 1

Plate 2

Plate 3

Plate 4

Plate 5

Paritetssegment

Segment 1

Segment 2

Segment 3

Segment 4

Segment 5

Paritetssegment

Segment 6

Segment 7

Segment 8

Segment 9

Segment 10

Paritetssegment

Segment 11

Segment 12

ris. 4. Datadistribusjon på tvers av disker for RAID 5.

Fordeler og ulemper med store RAID-nivåer

RAID-nivå

Pålitelighetsmekanisme

Effektiv arraykapasitet

Opptreden

Bruksområde

applikasjoner uten vesentlige krav til pålitelighet

speiling

høy eller middels

søknader uten vesentlige kostnadskrav

paritet

applikasjoner som arbeider med store datamengder (grafikk, CAD / CAM, etc.)

paritet

applikasjoner som fungerer med små mengder data (transaksjonsbehandling)

RAID 5-teknologi lar deg kombinere minst 3 harddisker til en enkelt array. Hovedfunksjonen er at sjekksummer er jevnt fordelt over hele plassen, som du kan returnere tapte data med. Teknikken har imidlertid sine egne nyanser, så det faktiske spørsmålet er hvordan du gjenoppretter RAID 5. Vi vil snakke om årsakene til feilen, de viktigste RAID-nivåene, og også presentere en detaljert gjenopprettingsprosedyre.

Mulige årsaker til feil

Redundans av et RAID-array øker sjansene for datagjenoppretting, men harddisker, som alle andre teknikker, er selvfølgelig utsatt for vanlige problemer:

  • utilsiktet sletting;
  • skade på filer/mapper,
  • skade på filsystemer,
  • handlingen til skadelig programvare.

Arrays er også utsatt for ytre påvirkninger: mistet harddisken, brent ned serveren eller fikk vann inni. Ofte bryter selve RAID-kontrolleren sammen. Billige modeller har en lav prislapp, ikke bare på grunn av forenklede algoritmer. Det er alltid en sjanse til å finne et defekt produkt.

Strømstøt eller strømbrudd kan føre til at disken "kastes ut" fra arrayet og går offline, men forblir fullt funksjonell og funksjonell. Problemet kan ligge i programvaren eller kontrolleren, som rett og slett ikke kan se denne harddisken.

Grunnleggende RAID-nivåer og hvordan de gjenopprettes

Brukeren kan gjenopprette data på flere måter, som bestemmer nivået på arrayet. Vi anbefaler at du gjør deg kjent med de eksisterende nivåene som brukes i moderne systemer:

  • RAID0. Arrayen gir den høyeste ytelsen på grunn av mangelen på redundans. Men datasikkerheten er på et minimum, så hvis en disk svikter, vil det være nesten umulig å gjenopprette systemet uten reparasjon.
  • RAID1. Systemet er ikke veldig raskt, men det kan skryte av høy datasikkerhet. Prinsippet om "speil" brukes når alle data dupliseres, mens det er en kopi på en annen disk. Hvis informasjon går tapt, blir den ganske enkelt kopiert fra den første disken uten å stoppe hele arrayen.
  • RAID5. Fordelingen av informasjonsblokker i hele rommet og paritetsprinsippet brukes. Hvis bare én bryter sammen, fortsetter selvfølgelig HDD-arrayen å fungere, men med lavere hastigheter.
  • RAID 10. En kombinasjon av de to første nivåene, minimum antall disker er 4. Prinsippet for dataspeiling brukes.

Trinn-for-trinn-instruksjoner for datagjenoppretting

Du kan gjenopprette slettede data på egen hånd, men bare i de situasjonene når alle diskene er i god stand, "kollapserte matrisen" og det er ingen kritiske data på harddisken. Hvis informasjonen er ekstremt verdifull, ikke eksperimenter selv. Vi anbefaler å bruke hjelp fra spesialister. I tilfelle maskinvarefeil må du underordne harddisken. Først etter det, gjør "monteringen" av matrisen. Dette er en spesifikk operasjon som er problematisk å utføre på egen hånd.

Programvaregjenoppretting

Prosedyren krever foreløpig installasjon av RAID Reconstructor eller lignende. Du trenger også en personlig datamaskin og kabler som du kan koble til stasjoner med. Hvis du ikke kan koble stasjoner fra arrayet til PC-en din, bør du ikke en gang starte. Instruksjonen inkluderer trinn:

  1. Helsen til HDD-en fra arrayet betyr at du kan koble dem til datamaskinen som separate medier. Bruk hvilken som helst praktisk metode (SATA, SAS, IDE, etc.).
  2. Når diskene er koblet til, må du ikke initialisere dem, få tilgang til data eller prøve å formatere dem. Det ideelle alternativet er å jobbe med sektor-for-sektor-kopier, siden endringene ikke vil påvirke de originale dataene.
  3. Start RAID Reconstructor-programmet. Angi RAID5 i Type-feltet og angi antall disker. I vårt eksempel vil det være tre av dem.
  4. I den vertikale listen, atskilt med tre prikker, er det nødvendig å indikere diskene våre, det vil si bildene deres. Klikk på Velg fil. Velg de nødvendige bildene i utforskeren.
  5. Klikk på Åpne stasjoner-knappen og deretter Analyser.
  6. I de neste vinduene klikker du på Neste. Prosedyren vil kun skanne for å bestemme blokkstørrelsen og andre parametere. Deretter vil et vindu med et utvalg parametere vises.
  7. Angi blokkstørrelse og startsektor (hvis de er unikt kjent). Ellers kan du krysse av i boksene overalt. Paritetstypen er ennå ikke kjent, så tester vil være nødvendig. Øk antall sektorer for prøven med 10 ganger (opptil 100 tusen), og klikk deretter på Neste.
  8. Hvis alt lykkes, vil du motta et entydig (eller tvetydig) resultat og anbefaling.
  9. Bygg nå hele arrayet på nytt. I hovedvinduet angir du banen hvor den ferdige matrisen skal kopieres, og klikk deretter Kopier.

Denne metoden lar deg raskt og enkelt gjenopprette data fra RAID 5. Om nødvendig kan du prøve gjenoppretting ved hjelp av Intel Rapid Storage Technology eller R-Studio.

Maskinvare

Dette er en ekstremt kompleks metode og er mer basert på flaks. Du kan prøve å lure maskinvaren og få tilgang til dataene. Generelt må du følge disse trinnene:

  1. nummerer diskene i matrisen;
  2. kopier sektor for sektor hver av dem;
  3. koble dem til kontrolleren i riktig rekkefølge.

Vanskeligheten ligger ikke bare i å bestemme rekkefølgen, men også i uforutsigbarheten til oppførselen til RAID-kontrollerne. De kan ikke godta denne tilnærmingen eller starte en prosess på egen hånd. Pass på at kontrolleren ikke initialiseres. Hvis dette ikke kan unngås, oppnå en akselerert initialisering. Ved å bruke denne teknikken kan du få klonene til å fungere som den originale matrisen, eller gjenskape den, men med de samme innstillingene. Husk at ethvert avvik vil oppheve sjansene dine, så sjansene for suksess uten kunnskap og erfaring på dette området er ekstremt små.

I nærvær av viktige data, kontakt kun et spesialisert servicesenter. Mange "hull og forskyvninger" i dataene gjør ting vanskelig. Bare erfarne fagfolk er i stand til å se "mønstrene" og gradvis gjenopprette verdifull informasjon. Noen ganger må RAID5-gjenopprettingsteknikere programmere sine egne algoritmer.

Når du har krasjet disker i en RAID-array, er det en liste over handlinger som ikke anbefales. Det første og fremste trinnet er ikke å initialisere før du finner ut gjenværende kilde og type problem. Det er situasjoner når én disk i en array ikke fungerer på flere år (gyldig for RAID5), men dette går ubemerket hen. Deretter, etter en feil eller strømstøt, faller arrayen fra hverandre, men diskene forblir synlige. Systemadministratoren samler alt på plass, hvor initialisering nødvendigvis utføres. Uvitenhet om informasjonen om den defekte harddisken vil imidlertid føre til katastrofale resultater. Resultatet er ødelagte data eller en død partisjon. Den "droppede" disken gjør endringer i henholdsvis kontrollsummene, ødelegger all informasjon.


  • sende

    Hvis du er interessert i denne artikkelen, så har du tilsynelatende støtt på eller forventer snart å støte på ett av følgende problemer på datamaskinen din:

    - det er tydeligvis ikke nok fysisk volum på harddisken som en enkelt logisk disk. Oftest oppstår dette problemet når du arbeider med store filer (video, grafikk, databaser);
    - mangler tydeligvis ytelsen til harddisken. Oftest oppstår dette problemet når du arbeider med ikke-lineære videoredigeringssystemer eller når et stort antall brukere får tilgang til filer på harddisken samtidig;
    - påliteligheten til harddisken er tydeligvis ikke nok. Oftest oppstår dette problemet når du skal jobbe med data som aldri kan gå tapt eller som alltid skal være tilgjengelig for brukeren. Trist erfaring viser at selv det mest pålitelige utstyret noen ganger går i stykker, og som regel i det mest uleilige øyeblikket.
    Å lage et RAID-system på datamaskinen din kan løse disse og noen andre problemer.

    Hva er "RAID"?

    I 1987 publiserte Patterson, Gibson og Katz fra University of California, Berkeley A Case for Redundant Arrays of Inexpensive Disks (RAID). Denne artikkelen beskrev de forskjellige typene diskarrayer, referert til som RAID - Redundant Array of Independent (eller Inexpensive) Disks. RAID er basert på følgende idé: ved å kombinere flere små og/eller billige stasjoner til en array, kan du få et system som overgår de dyreste stasjonene når det gjelder volum, hastighet og pålitelighet. På toppen av det, ser et slikt system fra en datamaskins synspunkt ut som én enkelt diskettstasjon.
    Gjennomsnittstiden mellom feil i en diskmatrise er kjent for å være gjennomsnittstiden mellom feil på en enkelt stasjon delt på antall stasjoner i matrisen. Som et resultat er MTBF for arrayet for kort for mange applikasjoner. Imidlertid kan en diskarray gjøres motstandsdyktig mot en enkelt stasjonsfeil på flere måter.

    I artikkelen ovenfor ble fem typer (nivåer) av diskarrayer definert: RAID-1, RAID-2, ..., RAID-5. Hver type ga feiltoleranse samt forskjellige fordeler i forhold til en enkelt stasjon. Sammen med disse fem typene har RAID-0-diskarrayen, som ikke har redundans, også vunnet popularitet.

    Hva er RAID-nivåene og hvilken bør jeg velge?

    RAID-0... Vanligvis definert som IKKE en redundant ikke-paritetsstasjonsgruppe. RAID-0 kalles noen ganger "Striping" når det gjelder måten informasjon plasseres på blant stasjonene som er inkludert i matrisen:

    Siden RAID-0 ikke er redundant, vil feil på én stasjon resultere i feil i hele arrayet. På den annen side gir RAID-0 maksimal valutakurs og diskplasseffektivitet. Fordi RAID-0 ikke krever komplekse matematiske eller logiske beregninger, er implementeringskostnadene minimale.

    Applikasjoner: Lyd- og videoapplikasjoner som krever høye kontinuerlige dataoverføringshastigheter som en enkelt stasjon ikke kan tilby. For eksempel viser forskning utført av Mylex for å bestemme den optimale disksystemkonfigurasjonen for en ikke-lineær videoredigeringsstasjon at sammenlignet med en enkelt stasjon, gir en RAID-0-array med to stasjoner en 96 % økning i skrive-/lesehastighet fra tre stasjoner - med 143 % (i henhold til Miro VIDEO EXPERT Benchmark-testen).
    Minste antall stasjoner i "RAID-0"-arrayet er 2 stk.

    RAID-1... Mer kjent som "speiling", er det et par stasjoner som inneholder samme informasjon og utgjør en logisk stasjon:

    Det skrives til begge stasjonene i hvert par. Imidlertid kan sammenkoblede stasjoner utføre samtidige leseoperasjoner. Dermed kan «speiling» doble lesehastigheten, men skrivehastigheten forblir uendret. RAID-1 er 100 % redundant og en enkelt stasjonsfeil fører ikke til svikt i hele arrayet - kontrolleren bytter ganske enkelt lese-/skriveoperasjoner til den gjenværende stasjonen.
    RAID-1 gir den raskeste ytelsen av alle typer redundante arrays (RAID-1 til RAID-5), spesielt i flerbrukermiljøer, men har den dårligste utnyttelsen av diskplass. Fordi RAID-1 ikke krever komplekse matematiske eller logiske beregninger, er implementeringskostnadene minimale.
    Minste antall stasjoner i "RAID-1"-arrayet er 2 stk.
    Flere RAID-1-arrayer kan i sin tur kombineres til RAID-0 for å øke skrivehastigheten og sikre datalagringssikkerhet. Denne konfigurasjonen kalles "to-nivå" RAID eller RAID-10 (RAID 0 + 1):


    Minste antall stasjoner i en "RAID 0 + 1"-array er 4 stykker.
    Omfang: billige arrays, der det viktigste er datalagringspålitelighet.

    RAID-2... Fordeler data på tvers av sektorstørrelser på tvers av en stasjonsgruppe. Noen stasjoner er dedikert til ECC-lagring (Error Correction Code). Siden de fleste stasjoner lagrer ECC-koder for hver sektor som standard, gir ikke RAID-2 noen store fordeler i forhold til RAID-3 og brukes derfor praktisk talt ikke.

    RAID-3... Som i tilfellet med RAID-2, er data stripet over striper av én sektor, og en av stasjonene i arrayet er reservert for lagring av paritetsinformasjon:

    RAID-3 er avhengig av ECC-koder som er lagret i hver sektor for å oppdage feil. I tilfelle feil på en av stasjonene, er gjenoppretting av informasjonen som er lagret på den mulig ved å beregne eksklusiv OR (XOR) basert på informasjonen på de gjenværende stasjonene. Hver skriving er vanligvis distribuert over alle stasjoner, og derfor er denne typen array bra for arbeid i applikasjoner med stor trafikk med diskundersystemet. Siden hver I/O-operasjon refererer til alle stasjonene i arrayet, kan ikke RAID-3 utføre flere operasjoner samtidig. Derfor er RAID-3 bra for et enkeltbrukermiljø med én oppgave med lange skrivinger. For å jobbe med korte poster, er synkronisering av rotasjonen av stasjonene nødvendig, siden ellers en reduksjon i valutakursen er uunngåelig. Den brukes sjelden, pga taper til RAID-5 når det gjelder diskplassbruk. Implementering er kostbart.
    Minste antall stasjoner i en "RAID-3"-array er 3 stk.

    RAID-4... RAID-4 er identisk med RAID-3, bortsett fra at stripestørrelsen er mye større enn én sektor. I dette tilfellet utføres lesing fra én stasjon (ikke medregnet stasjonen som lagrer paritetsinformasjonen), så det er mulig å utføre flere leseoperasjoner samtidig. Men siden hver skriving må oppdatere innholdet på paritetsstasjonen, kan ikke flere skrivinger utføres samtidig. Denne typen array har ingen merkbare fordeler i forhold til en RAID-5 array.
    RAID-5. Denne typen matrise blir noen ganger referert til som en "rotert paritetsmatrise". Denne typen array overvinner med suksess den iboende ulempen med RAID-4 - manglende evne til å utføre flere skrivinger samtidig. Denne matrisen, som RAID-4, bruker striper stor størrelse, men i motsetning til RAID-4, lagres paritetsinformasjon ikke på én stasjon, men på alle stasjoner etter tur:

    Skriveoperasjoner refererer til en datastasjon og en annen stasjon med paritetsinformasjon. Siden paritetsinformasjon for forskjellige striper er lagret på forskjellige stasjoner, er flere samtidige skrivinger ikke mulig bare i de sjeldne tilfellene når enten datastriper eller paritetsstriper er på samme stasjon. Jo flere stasjoner i arrayet, desto sjeldnere samsvarer plasseringen av informasjons- og paritetsstripene.
    Bruksområde: pålitelige arrays med stort volum. Implementering er kostbart.
    Minste antall stasjoner i en "RAID-5"-array er 3 stk.

    RAID-1 eller RAID-5?
    Sammenlignet med RAID-1, bruker RAID-5 diskplass mer økonomisk, siden den ikke lagrer en "kopi" av informasjon, men en kontrollsum for redundans. Som et resultat kan et hvilket som helst antall stasjoner kombineres i RAID-5, hvorav bare én vil inneholde redundant informasjon.
    Men en høyere effektivitet av diskplassutnyttelsen oppnås på bekostning av en lavere hastighet på informasjonsutveksling. Når du skriver informasjon til RAID-5, må du oppdatere paritetsinformasjonen hver gang. For å gjøre dette må du bestemme hvilke paritetsbiter som har endret seg. Først leses den gamle informasjonen som skal oppdateres. Denne informasjonen blir deretter XORed med den nye informasjonen. Resultatet av denne operasjonen er en bitmaske, der hver bit = 1 betyr at verdien i paritetsinformasjonen i den tilsvarende posisjonen må erstattes. Den oppdaterte paritetsinformasjonen skrives deretter til riktig sted. Derfor, for hver programforespørsel om å skrive informasjon, utfører RAID-5 to lesinger, to skrivinger og to XOR-er.
    Du må betale for det faktum at diskplass brukes mer effektivt (i stedet for en kopi av dataene lagres en paritetsblokk): det tar ekstra tid å generere og skrive paritetsinformasjon. Dette betyr at skrivehastigheten til RAID-5 er lavere enn for RAID-1 i et forhold på 3:5 eller til og med 1:3 (dvs. skrivehastigheten til RAID-5 er 3/5 til 1/3 av skrivehastighet RAID-1). På grunn av dette gir det ingen mening å lage RAID-5 i programvare. De kan heller ikke anbefales for applikasjoner der skrivehastighet er kritisk.

    Bør du velge en RAID-implementeringsmetode - programvare eller maskinvare?

    Etter å ha lest beskrivelsen av de forskjellige RAID-nivåene, vil du legge merke til at ingen steder er noen spesifikke maskinvarekrav nevnt, som kreves for å implementere RAID. Derfra kan vi konkludere med at alt som trengs for å implementere RAID er å koble det nødvendige antallet stasjoner til kontrolleren tilgjengelig på datamaskinen og installere spesiell programvare på datamaskinen. Dette er sant, men ikke helt!
    Faktisk er det mulighet for programvareimplementering av RAID. Et eksempel er Microsoft Windows NT 4.0 Server OS, der programvareimplementering av RAID-0, -1 og til og med RAID-5 er mulig (Microsoft Windows NT 4.0 Workstation gir kun RAID-0 og RAID-1). Imidlertid bør denne løsningen betraktes som ekstremt forenklet, og tillater ikke å implementere funksjonene til RAID-arrayet fullt ut. Det er nok å merke seg at med en programvareimplementering av RAID, vil hele byrden med å plassere informasjon på stasjoner, beregne kontrollkoder, etc. faller på den sentrale prosessoren, noe som naturlig nok ikke øker ytelsen og påliteligheten til systemet. Av samme grunner er det praktisk talt ingen servicefunksjoner her, og alle operasjoner for å erstatte en defekt stasjon, legge til en ny stasjon, endre RAID-nivået osv. utføres med fullstendig tap av data og med et fullstendig forbud mot andre operasjoner . Den eneste fordelen med en programvare-RAID-implementering er den minimale kostnaden.
    - en spesialisert kontroller frigjør sentralprosessoren fra grunnleggende operasjoner med RAID, og ​​effektiviteten til kontrolleren er jo mer merkbar, jo høyere kompleksitetsnivået til RAID;
    - kontrollere er som regel utstyrt med drivere som lar deg lage en RAID for nesten alle populære operativsystemer;
    - den innebygde BIOS-en til kontrolleren og administrasjonsprogrammene som er knyttet til den, lar systemadministratoren enkelt koble til, koble fra eller erstatte stasjoner inkludert i RAID-en, lage flere RAID-arrayer, selv på forskjellige nivåer, overvåke statusen til diskarrayen , etc. For "avanserte" kontrollere kan disse operasjonene utføres "on the fly"; uten å slå av systemenheten. Mange operasjoner kan utføres i "bakgrunnen", dvs. uten å avbryte det nåværende arbeidet og til og med eksternt, dvs. fra hvilken som helst (selvfølgelig, hvis du har tilgang) arbeidsplass;
    - kontrollere kan utstyres med et bufferminne ("cache"), som lagrer de siste få datablokkene, som med hyppig tilgang til de samme filene kan øke hastigheten på disksystemet betydelig.
    Ulempen med hardware RAID er den relativt høye kostnaden for RAID-kontrollere. Men på den ene siden må du betale for alt (pålitelighet, ytelse, service). På den annen side, nylig, med utviklingen av mikroprosessorteknologi, begynte kostnadene for RAID-kontrollere (spesielt juniormodeller) å falle kraftig og ble sammenlignbare med kostnadene for vanlige diskkontrollere, som gjør det mulig å installere RAID-systemer ikke bare i dyre stormaskiner, men også på servere, inngangsnivå og til og med arbeidsstasjoner.

    Hvordan velge en RAID-kontrollermodell?

    Det finnes flere typer RAID-kontrollere, avhengig av funksjonalitet, design og pris:
    1. Drive-kontrollere med RAID-funksjoner.
    Faktisk er dette en vanlig diskkontroller, som, takket være en spesiell BIOS-fastvare, lar deg kombinere stasjoner i en RAID-array, som regel på nivå 0, 1 eller 0 + 1.

    Ultra (Ultra Wide) SCSI-kontroller fra Mylex KT930RF (KT950RF).
    Utad er denne kontrolleren ikke forskjellig fra en vanlig SCSI-kontroller. All "spesialisering" er i BIOS, som så å si er delt inn i to deler - "SCSI Configuration" / "RAID Configuration". Til tross for den lave kostnaden (mindre enn $ 200), har denne kontrolleren et godt sett med funksjoner:

    - Kombinere opptil 8 stasjoner i RAID 0, 1 eller 0 + 1;
    - Brukerstøtte Varm reserveå erstatte "on the fly" en mislykket stasjon;
    - muligheten for automatisk (uten operatørintervensjon) utskifting av en defekt drivenhet;
    - automatisk kontroll av integritet og identitet (for RAID-1) data;
    - tilstedeværelsen av et passord for tilgang til BIOS;
    - programmet RAIDPlus, som gir informasjon om tilstanden til stasjoner i RAID;
    - drivere for DOS, Windows 95, NT 3.5x, 4.0

    Maskinvare undersystemer RAID 5 er de klart mest populære for generelle filservere, webservere og andre datalagrings- og behandlingsapplikasjoner. De øker ikke bare ytelsen og forbedrer databeskyttelsen, men kan redusere kostnadene for en slik løsning samtidig som de opprettholder eller forbedrer de grunnleggende egenskapene og egenskapene.

    Effektiv datalagring er et kritisk problem i bedriftens datamiljø, og mange organisasjoner bruker RAID-matriser i server-, nettverks- og Internett-lagrings- og prosesseringsapplikasjoner for å forbedre tilgjengeligheten. RAID-teknologier kan gjøre det mulig for IT-ledere å dra nytte av nøkkelytelsen og driftsegenskapene som RAID 5-kontrollere og undersystemer gir gjennom I/O-prosessorer som frigjør CPU fra avbrudd under les-modifiser-skriv diskoperasjoner.

    Når det gjelder implementering, kan RAID-kontrollere være programvare (såkalt programvare), programvare og maskinvare, og full maskinvare.

    Programvare RAID krever ikke spesiell maskinvare. Alle data behandles av sentralbehandleren. I dette tilfellet brukes standard stasjonstilkobling. Ulempen med en slik RAID-implementering er en ekstra betydelig belastning på prosessoren, en reduksjon i prosessortid for å behandle forespørsler fra applikasjoner og operativsystemet, siden sentralprosessoren behandler alle RAID-operasjoner (XOR-beregning, dataallokering og avbruddsbehandling for disse oppgaver).

    Maskinvare-programvare RAID implementeres ved hjelp av en I/O-brikke av en spesiell mikrokrets (ASIC) som kan utføre XOR-operasjoner. I dette tilfellet overtas en del av operasjonene for å sikre at RAID-arrayen fungerer av denne mikrokretsen. Alt annet er fortsatt den sentrale behandlingsenheten, som utfører operasjoner ved hjelp av drivere. Maskinvare / programvare RAID er i hovedsak en mer effektiv løsning basert på systemets sentrale prosesseringsenhet.

    Maskinvare RAID-kontroller er et RAID-undersystem som faktisk er uavhengig og selvforsynt med sine oppgaver og praktisk talt ikke krever CPU-ressurser når man opererer med en RAID-array. Dette undersystemet har sin egen BIOS, hvis ledetekst kan sees under systemoppstart, sin egen prosessor og sitt eget minne, kalt kontrollerbufferen.

    Bestemme RAID-nivåer

    Det finnes flere grunnleggende typer (såkalte "nivåer") av RAID. Hver tilbyr en unik kombinasjon av egenskaper, hvorav to er databeskyttelse og ytelse. For å forstå hvordan RAID 5 fungerer, bør du vurdere de to innledende RAID-nivåene, "0" og "1":

    RAID 0(stripe): Dette RAID-nivået gir samtidig lesing/skriving av datablokker samtidig til alle stasjoner i arrayet. Denne parallelle databehandlingen gjør at informasjon kan leses og skrives til en RAID 0-matrise mye raskere enn til en enkelt stasjon. RAID 0 brukes vanligvis til oppgaver der databehandlingshastighet er mye viktigere enn dataintegritet, fordi hvis en av stasjonene svikter, går all data i arrayet tapt.

    RAID 1(speil): Dette RAID-nivået dupliserer data på én eller flere stasjoner. RAID 1, i motsetning til RAID 0, brukes for applikasjoner der databeskyttelse er viktigere enn ytelse. I tilfelle feil på en av stasjonene, vil informasjonen bli fullstendig lagret på den andre. RAID-1 gir raskere lesing enn en enkelt stasjon, men skriving til den er tregere. Fordi det er viktig å beskytte operativsystemet, brukes RAID 1 ofte til å speile oppstartsstasjonen til en server (når operativsystemet og dataene er spredt over forskjellige stasjoner eller arrays).

    Hvordan RAID 5 fungerer

    RAID 5 kombinerer egenskaper RAID 0 og RAID 1... På den ene siden skjer lese- og skriveoperasjoner samtidig (parallelt) med alle diskene i arrayet. På den annen side, hvis en disk feiler, går ikke informasjon tapt.

    RAID 5 opprettholder dataintegriteten til en diskarray ved å bruke plass lik størrelsen på den mindre stasjonen i matrisen. For eksempel, i en matrise med fem 72 GB-stasjoner, vil den tilgjengelige matrisekapasiteten være 288 GB. Den brukertilgjengelige kapasiteten til en RAID 5-matrise beregnes ved hjelp av formelen S * (N – 1), hvor S- kapasiteten til den minste stasjonen i arrayet, N- det totale antallet stasjoner i arrayet.

    Antall stasjoner, deres kapasitet og den totale kapasiteten til RAID 5-arrayet påvirker ikke datasikkerheten. Akkurat som en enkelt 72GB-stasjon kan beskytte alle data i en matrise på fem stasjoner på totalt 288GB, i en matrise med 15 300GB-stasjoner, kan en enkelt 300GB-stasjon beskytte en hel 4,2TB-array i tilfelle feil.

    RAID 5 gir en effektiv måte å beskytte data på og oppnår leseytelse som ligner på RAID 0. Samtidig kan skrivehastigheten til RAID 5 nå høyere verdier enn for en enkelt stasjon. Derfor, fordi RAID 5 effektivt beskytter data og kan forbedre ytelsen til diskundersystemet, er det det mest populære i dag.

    Beregner XOR-funksjonen

    Én stasjon kan beskytte data fra et hvilket som helst antall andre stasjoner, så lenge bare én stasjon i arrayet svikter. XOR er både assosiativ og kommutativ, noe som betyr at verken rekkefølgen eller grupperingen av operandene påvirker resultatene. XOR er også en binær operasjon, og har bare fire mulige kombinasjoner av to operander. To operander har et "ekte" XOR-resultat når én og bare én operand evalueres til 1.

    Beregner XOR implementeres ved hjelp av spesiell maskinvare, som kan være en XOR ASIC-brikke eller en I/O-prosessor med integrert XOR-funksjonalitet, noe som i stor grad øker ytelsen til RAID-kontrolleren. Hver byte med data som er lagret i et RAID 5-volum krever XOR-beregninger. Å forstå hvordan XOR fungerer er avgjørende for å forstå hvordan et RAID 5-undersystem kan beskytte store mengder data med en relativt liten mengde av én stasjon.

    I figur 1 representerer hvert rektangel Dn en datablokk kalt en stripe. Alle striper på rad kalles striper. I RAID 5 er paritetsdata plassert i forskjellige striper på hver stasjon - dette er den såkalte paritetsrotasjonen. Dette er for å forbedre ytelsen: siden paritet beregnes og skrives i hver les-modifiser-skriv-operasjon, vil det å plassere den på en enkelt stasjon skape en flaskehals. En slik stasjon vil få tilgang like mange ganger oftere i forhold til andre stasjoner i systemet som det er av disse stasjonene i systemet. Paritetsdataene er Pn, der n er stripenummeret, bare resultatet av XOR-operasjonen på alle andre dataelementer innenfor samme stripe. Siden XOR er en assosiativ og kommutativ operasjon, kan resultatet på flere operander bli funnet ved å utføre XOR først på to operander, deretter XORing resultatet av den operasjonen og neste operand, og så videre med alle operander til et resultat er oppnådd.

    Figur 1. Datakort til en typisk RAID 5 med fire stasjoner

    Et RAID 5-volum gjør at enhver enkelt stasjon i arrayet svikter uten tap av data. Vanligvis, når en fysisk stasjon feiler, for eksempel stasjon 3 i figur 2, sies arrayet å være i en kritisk tilstand (engelsk degradert). I en slik situasjon kan de manglende dataene for en hvilken som helst stripe bestemmes ved å utføre en XOR-operasjon på alle de gjenværende dataelementene i den stripen. Grovt sett er hver databit som går tapt representert som summen av de gjenværende stripene i stripen. Den typiske stripestørrelsen er 32 KB til 128 KB. Figur 2 viser en matrise med en betinget stripestørrelse, hvor hvert element representerer en enkelt bit.

    Første kjørefelts paritet:
    P1 = D1 XOR D2 XOR D3;
    P1 termin. = D1 XELLER D2 = 1;
    P1 = P1 mellomledd. XOR D3 = 0.
    Så P1 = 0.

    Figur 2. RAID 5-datakort med fire stasjoner; array med betinget stripestørrelse.

    Hvis en vert ber om data fra en kontroller fra en matrise som er i en kritisk tilstand, må RAID-kontrolleren først lese alle tilgjengelige dataelementer på stripen, inkludert paritet. Deretter utføres XOR på disse elementene. Denne operasjonen resulterer i tapte data. Dermed blir ikke tilgangen til arrayet avbrutt i tilfelle feil på en av stasjonene. Imidlertid, hvis den andre stasjonen feiler på dette tidspunktet, går dataene til hele matrisen uopprettelig tapt.

    De fleste maskinvare-RAID-kontrollere gjenoppbygger arrayet automatisk hvis en hot-spare-stasjon er tilgjengelig, og bringer arrayet tilbake til det normale. I tillegg leveres maskinvare-RAID-kontrollere vanligvis med programvare som inkluderer en måte å varsle systemadministratorer når en feil oppstår. Dette lar administratorer fikse problemet før neste stasjon feiler og arrayet går inn i en kritisk tilstand uten automatisk gjenopprettingsevne.

    Utføre en les-endre-skrive-operasjon

    Skriveoperasjonen i RAID 5 er ansvarlig for å beregne og skrive paritetsdata. Denne operasjonen blir ofte referert til som en les-endre-skriveoperasjon. Se for deg en stripe med fire blokker med data og en blokk med paritet. Anta at verten ønsker å endre en liten blokk med data som bare tar opp plass på én stripe innenfor stripen. En RAID-kontroller kan ikke bare skrive denne lille blokken med data og anta at forespørselen er fullført. Denne operasjonen må også oppdatere paritetsdataene som beregnes ved å utføre en XOR-operasjon på hver stripe innenfor stripen. Dermed beregnes paritet når en eller flere striper endres.

    Figur 3 viser en typisk les-modifiser-skriveoperasjon der dataene som verten skriver til stasjonen er inneholdt i bare ett felt, i blokk D5. Les-modifiser-skriv-operasjonen består av følgende trinn:

    Figur 3. Trinn-for-trinn: Read-Modify-Write-operasjon i en Quad-Drive RAID 5-array

    1. Motta nye data fra verten: Operativsystemet ber om å skrive data til blokk D5 på stasjon 2.
    2. Leser gamle data på stasjon 2, i stedet for hvilke nye data skal skrives. Lesing av bare datablokken som endres under skriveprosessen eliminerer behovet for å lese data fra alle andre stasjoner innenfor stripen for å beregne paritet. Antall trinn som kreves for en les-endre-skriveoperasjon er uavhengig av antall stasjoner i matrisen.
    3. Leser gammel paritet. Denne operasjonen er uavhengig av antall stasjoner i arrayet.
    4. Beregning av ny stripeparitet. For å gjøre dette, må du beregne XOR for trinn 2 og 3 minus (i dette tilfellet, i boolsk aritmetikk, er dette den samme XOR) bidraget til de gamle dataene som vil bli overskrevet. Dette skyldes assosiativiteten og kommutativiteten til XOR. For å bestemme pariteten for en stripe med en ny D5-blokk, trenger du bare å beregne XOR for de nye dataene, gamle data og gamle paritet.
    5. Kontroll av dataintegritet: Denne prosessen er ikke beskrevet i figur 3, siden implementeringen varierer mye fra leverandør til leverandør. Poenget med denne prosessen er å spore fremdriften til påfølgende trinn 6 og 7. For en sammenhengende diskarray må undersystemet sørge for at paritetsblokken alltid samsvarer med data innenfor båndbredden. Siden det er umulig å garantere at nye data og en ny paritetsblokk vil bli skrevet til forskjellige disker samtidig, definerer RAID-undersystemet stripen som behandles som ufullstendig (ufullstendig), "skitten", som betyr at dataintegriteten er kompromittert.
    6. Skrive dataene som ble mottatt fra verten i trinn 1. Nå, i henhold til dataallokeringstabellen, bestemmer RAID-undersystemet på hvilken fysisk stasjon, og nøyaktig hvor på stasjonen, disse dataene vil bli skrevet.
    7. Skrive en ny paritetsblokk: en ny paritetsblokk ble beregnet i trinn 4; nå skriver RAID-undersystemet det til stasjonen.
    8. Dataintegritetssjekk: Så snart RAID-delsystemet bekrefter at trinn 6 og 7 er fullført, dvs. og dataene og pariteten skrives til stasjonene, anses stripen å være konsistent.

    I eksemplet i figur 3, anta at Dnew = 0, Dold = 1 og Pold = 0. Behandlingstrinn 4 på disse dataene vil gi oss: 0 XOR 1 XOR 0 = 1. Dette er pariteten P. Etter les-modifiser - skriv ”, den andre raden i figur 3 vil være D4 = 1, D5 = 0, P2 = 1 og D6 = 0.

    Denne optimaliserte metoden er fullt skalerbar. Antall lesinger, skrivinger og XOR-er er uavhengig av antall stasjoner i matrisen. Siden stasjonen med paritetsdata deltar i hver skriveoperasjon (trinn 6 og 7), lagres paritetsdataene på alle stasjonene i arrayet, og beveger seg i stripen i forhold til datablokkene. Hvis alle paritetsdata ble lagret på én fysisk stasjon, kan denne stasjonen bli en flaskehals, som nevnt ovenfor.

    Avlastingsavbrudd fra sentralprosessoren

    Et avbrudd er en forespørsel fra en systemkomponent om CPU-tid. I/O-delsystemene avbryter CPU-en når de fullfører en transaksjon. Nedenfor er en liten sammenligning av hvilke avbrudd som genereres av forskjellige RAID-kontrollere for enkel skriving til en RAID 5-matrise:

    Programvare RAID: siden i dette tilfellet er sentralprosessoren til systemet ansvarlig for å plassere data på disken, må den generere en forespørsel for hver lesing og skriving som kreves for en les-modifiser-skriveoperasjon. Dermed mottar CPU fire avbrudd fra undersystemet, bestående av to leseforespørsler og to skriveforespørsler (trinn 2, 3, 6 og 7 i eksemplet i figur 3).

    Maskinvare / programvare RAID: denne implementeringen genererer de samme fire avbruddene som programvare-RAID, siden forenklingen i denne implementeringen i de fleste tilfeller bare er forbundet med beregningen av XOR-operasjonen ved hjelp av en spesiell mikrokrets XOR ASIC.

    Maskinvare RAID: I/O-prosessoren i hardware RAID-undersystemet skjuler vanligvis alle mellomliggende lese- og skriveoperasjoner, og genererer bare ett avbrudd - ved vellykket gjennomføring av transaksjonen. I/O-prosessoren avskjærer alle andre avbrudd, og frigjør CPU-en til å utføre ikke-RAID-oppgaver.

    basert på materialer fra Dell og Intel

    Skiftet i tyngdepunkt fra prosessorsentriske til datasentriske applikasjoner driver den økende betydningen av lagringssystemer. Samtidig har problemet med lav båndbredde og feiltoleranse som er karakteristisk for slike systemer alltid vært ganske viktig og alltid krevd en løsning.

    I den moderne dataindustrien er magnetiske disker mye brukt som et sekundært datalagringssystem, fordi de, til tross for alle ulempene, har de beste egenskapene for den tilsvarende typen enhet til en overkommelig pris.

    Det særegne ved teknologien for å bygge magnetiske disker har ført til en betydelig avvik mellom økningen i ytelsen til prosessormoduler og selve magnetiske diskene. Hvis den beste blant seriene i 1990 var 5,25 ″ disker med en gjennomsnittlig tilgangstid på 12 ms og en forsinkelsestid på 5 ms (ved en spindelhastighet på ca. 5000 rpm 1), tilhører håndflaten i dag 3,5 ″ disker med en gjennomsnittlig tilgangstid på 5 ms og en forsinkelsestid på 1 ms (ved en spindelhastighet på 10 000 rpm). Her ser vi en ytelsesforbedring på ca 100 %. Samtidig har prosessorhastigheten økt med mer enn 2000 %. Dette er i stor grad muliggjort av at prosessorer har de direkte fordelene ved å bruke VLSI (Extra Large Integration). Bruken gjør det ikke bare mulig å øke frekvensen, men også antallet komponenter som kan integreres i brikken, noe som gjør det mulig å implementere arkitektoniske fordeler som tillater parallell databehandling.

    1 - Gjennomsnittlig data.

    Den nåværende situasjonen kan beskrives som en krise i I/O til et sekundært lagringssystem.

    Økende ytelse

    Umuligheten av en betydelig økning i de teknologiske parametrene til magnetiske disker innebærer behovet for å finne andre måter, hvorav den ene er parallell prosessering.

    Hvis vi arrangerer en datablokk over N disker av en bestemt matrise og organiserer denne ordningen slik at det er mulighet for samtidig lesing av informasjon, så kan denne blokken leses N ganger raskere (uten å ta hensyn til blokkdannelsestiden). Siden all data overføres parallelt, kalles denne arkitektoniske løsningen array med parallell tilgang(parallell tilgangsmatrise).

    Samtidige matriser brukes vanligvis for applikasjoner som krever store dataoverføringer.

    Noen oppgaver er derimot preget av et stort antall små forespørsler. Disse oppgavene inkluderer for eksempel databasebehandlingsoppgaver. Ved å ordne databasepostene på tvers av diskene i matrisen, kan du fordele belastningen uavhengig ved å plassere diskene. Denne arkitekturen kalles vanligvis array med uavhengig tilgang(en matrise med uavhengig tilgang).

    Vi øker motstandskraften

    Dessverre, ettersom antall disker i en matrise øker, reduseres påliteligheten til hele matrisen. Med uavhengige feil og en eksponentiell lov for MTTF-distribusjon, beregnes MTTF for hele matrisen (gjennomsnittlig tid til feil) med formelen MTTF-matrise = MMTF hdd / N hdd (MMTF hdd er gjennomsnittstiden til feil på en disk; NHDD er antall disker).

    Det er således et behov for å forbedre feiltoleransen til diskarrayer. For å øke feiltoleransen til arrayene, brukes redundant koding. Det er to hovedtyper av koding som brukes i redundante diskarrayer - duplisering og paritet.

    Duplisering, eller speiling, er den mest brukte i diskmatriser. Enkle speilsystemer bruker to kopier av dataene, med hver kopi på separate disker. Denne ordningen er ganske enkel og krever ikke ekstra maskinvarekostnader, men den har en betydelig ulempe - den bruker 50% av diskplassen til å lagre en kopi av informasjon.

    Den andre måten å implementere redundante diskarrayer på er å bruke redundant koding ved å beregne paritet. Paritet beregnes som en XOR-operasjon av alle tegn i dataordet. Ved å bruke paritet i redundante diskmatriser reduseres overheaden til en verdi beregnet av formelen: НР hdd = 1 / N hdd (НР hdd - overheadkostnader; N hdd - antall disker i arrayet).

    Historie og utvikling av RAID

    Selv om lagringssystemer for magnetiske disker har vært i produksjon i 40 år, har masseproduksjonen av feiltolerante systemer først nylig begynt. Redundante arrays, ofte referert til som RAID (redundante arrays av rimelige disker), ble introdusert av forskere (Petterson, Gibson og Katz) ved University of California, Berkeley i 1987. Men RAID-systemer ble utbredt først da disker som er egnet for bruk i redundante arrays ble tilgjengelige og hadde tilstrekkelig ytelse. Siden RAID ble offisielt rapportert i 1988, har forskning på redundante diskarrayer eksplodert i et forsøk på å gi et bredt spekter av avveininger mellom kostnad, ytelse og pålitelighet.

    Det var en hendelse med forkortelsen RAID en gang. Faktum er at i skrivende stund ble lavprisdisker kalt alle disker som ble brukt i en PC, i motsetning til dyre disker for en stormaskin (mainframe). Men for bruk i RAID-arrays var det nødvendig å bruke ganske dyr maskinvare sammenlignet med andre PC-konfigurasjoner, så de begynte å dekryptere RAID som en redundant rekke uavhengige disker 2 – en redundant rekke uavhengige disker.

    2 - Definisjon av RAID Advisory Board

    RAID 0 ble introdusert for industrien som definisjonen av en ikke-feiltolerant diskarray. Hos Berkeley ble RAID 1 definert som et speilet diskarray. RAID 2 er reservert for arrays som bruker Hamming-kode. RAID-nivåer 3, 4, 5 bruker paritet for å beskytte data mot enkeltfeil. Det er disse nivåene, til og med 5, som ble presentert på Berkeley, og denne RAID-systematikken ble tatt i bruk som de facto-standarden.

    RAID-nivåer 3,4,5 er ganske populære og har god diskplassutnyttelse, men de har en betydelig ulempe - de er bare motstandsdyktige mot enkeltfeil. Dette gjelder spesielt når du bruker et stort antall disker, når sannsynligheten for samtidig nedetid for mer enn én enhet øker. I tillegg er de preget av en lang gjenopprettingstid, noe som også legger noen begrensninger på bruken.

    Til dags dato er det utviklet et ganske stort antall arkitekturer som sikrer at arrayet fungerer i tilfelle en samtidig feil på to disker uten tap av data. Blant de mange er todimensjonal paritet og EVENEODD, som bruker paritet for koding, og RAID 6, som bruker Reed-Solomon-koding, verdt å merke seg.

    I et toromsparitetsskjema deltar hver datablokk i konstruksjonen av to uavhengige kodeord. Således, hvis en andre plate feiler i det samme kodeordet, brukes et annet kodeord for å rekonstruere dataene.

    Minimum redundans i en slik matrise oppnås med et likt antall kolonner og rader. Og lik: 2 x Square (N Disk) (i "firkantet").

    Hvis den todimensjonale matrisen ikke er organisert i et "kvadrat", vil redundansen være høyere når ordningen ovenfor er implementert.

    EVENEODD-arkitekturen har et feiltoleranseskjema som ligner på todimensjonal paritet, men et annet oppsett av informasjonsblokker, som sikrer minimal overkapasitetsutnyttelse. I tillegg til todimensjonal paritet deltar hver datablokk i konstruksjonen av to uavhengige kodeord, men ordene er ordnet på en slik måte at redundansfaktoren er konstant (i motsetning til forrige skjema) og er lik: 2 x kvadrat. (N Disk).

    Ved å bruke to kontrolltegn, paritet og ikke-binære koder, kan dataordet utformes for å gi feiltoleranse ved dobbel feil. Dette er kjent som RAID 6. Ikke-binær kode basert på Reed-Solomon-koding beregnes vanligvis ved hjelp av tabeller eller en iterativ prosess ved bruk av lineære lukkede sløyferegistre, som er relativt kompleks og krever spesialisert maskinvare.

    Tatt i betraktning at bruken av klassiske RAID-alternativer, som gir tilstrekkelig feiltoleranse for mange applikasjoner, ofte har uakseptabelt lav ytelse, implementerer forskere fra tid til annen ulike grep som bidrar til å øke ytelsen til RAID-systemer.

    I 1996 foreslo Savage og Wilks AFRAID, en A Frequently Redundant Array of Independent Disks. Denne arkitekturen ofrer til en viss grad feiltoleranse for ytelse. I et forsøk på å kompensere for small-write-problemet i RAID 5-matriser, er det tillatt å strippe uten paritet i en periode. Hvis disken beregnet for skriveparitet er opptatt, blir skrivingen utsatt. Det er teoretisk bevist at 25 % reduksjon i feiltoleranse kan øke ytelsen med 97 %. AFRAID endrer faktisk den feiltolerante modellen av arrays fordi et kodeord som ikke har oppdatert paritet er utsatt for diskfeil.

    I stedet for å ofre feiltoleranse, kan du bruke tradisjonelle metoder for å forbedre ytelsen som caching. Gitt at disktrafikken er sprengt, kan du bruke tilbakeskrivningsbufferen til å lagre data når diskene er opptatt. Og hvis cache-minnet er laget i form av ikke-flyktig minne, vil dataene bli lagret i tilfelle strømbrudd. I tillegg gjør lazy disk-operasjoner det mulig å kombinere små blokker i en vilkårlig rekkefølge for å utføre mer effektive diskoperasjoner.

    Det er også mange arkitekturer som tilbyr ytelsesgevinster ved å ofre volum. Blant dem er utsatt modifikasjon av loggdisken og ulike ordninger for å endre den logiske plasseringen av data til den fysiske, som gjør det mulig å distribuere operasjoner i matrisen mer effektivt.

    Et av alternativene - paritetslogging(paritetsregistrering), som tar tak i small-write-problemet og gjør mer effektiv bruk av disker. Paritetslogging innebærer å utsette endringen i paritet i RAID 5 ved å skrive den til FIFO-loggen, som ligger delvis i kontrollerens minne og delvis på disk. Gitt at tilgang til et fullstendig spor i gjennomsnitt er 10 ganger mer effektiv enn tilgang til en sektor, samles store mengder modifisert paritetsdata ved hjelp av paritet, som deretter samlet skrives til en disk designet for å lagre paritet gjennom hele sporet.

    Arkitektur flytende data og paritet(flytende data og paritet), som tillater omfordeling av de fysiske diskblokkene. Frie sektorer er plassert på hver sylinder for å redusere rotasjonslatens(rotasjonsforsinkelser), data og paritet tildeles på disse tomme plassene. For å sikre drift ved strømbrudd må paritets- og datakortet lagres i ikke-flyktig minne. Hvis du mister posisjonskartet, vil alle data i arrayet gå tapt.

    Virtuell stripping- er en flytende data- og paritetsarkitektur som bruker tilbakeskrivningsbuffer. Naturligvis innse de positive sidene ved begge.

    I tillegg er det andre måter å forbedre ytelsen på, for eksempel striping RAID-operasjoner. På en gang bygde Seagate støtte for RAID-operasjoner i sine Fibre Chanel- og SCSI-stasjoner. Dette gjorde det mulig å redusere trafikken mellom sentralkontrolleren og diskene i arrayet for RAID 5. Dette var en radikal innovasjon innen RAID-implementeringer, men teknologien kom ikke i gang, da noen av funksjonene til Fiber Chanel og SCSI-standarder svekker feilmodellen for diskarrayer.

    For samme RAID 5 ble TickerTAIP-arkitekturen presentert. Det ser slik ut - den sentrale kontrollmekanismens opphavsnoden (initieringsnoden) mottar brukerforespørsler, velger en behandlingsalgoritme og overfører deretter arbeidet med disken og pariteten til arbeidernoden (arbeidernoden). Hver arbeidernode behandler et undersett av diskene i arrayet. Som i Seagate-modellen overfører arbeidernoder data seg imellom uten deltakelse fra den initierende noden. I tilfelle en arbeidernodefeil, blir diskene den betjente utilgjengelige. Men hvis kodeordet er konstruert på en slik måte at hvert av tegnene blir behandlet av en separat arbeidernode, gjentar feiltoleranseskjemaet RAID 5. For å forhindre feil på initiatornoden, dupliseres det, slik at vi får en arkitektur som er motstandsdyktig mot feil på noen av nodene. Til tross for alle sine positive egenskaper, lider denne arkitekturen av et "skrivehull"-problem. Noe som innebærer at det oppstår en feil når flere brukere endrer kodeordet samtidig og noden svikter.

    Jeg bør også nevne en ganske populær måte å raskt gjenopprette RAID - ved å bruke en reservedisk. Hvis en av diskene i arrayet svikter, kan RAID-en bygges opp igjen ved å bruke en ledig disk i stedet for den mislykkede. Hovedtrekket ved denne implementeringen er at systemet går til sin forrige (feilsikker tilstand uten ekstern intervensjon). Med en distribuert sparingsarkitektur blir logiske reserveblokker fysisk distribuert over alle diskene i en matrise, noe som eliminerer behovet for å gjenoppbygge matrisen hvis en disk feiler.

    For å unngå gjenopprettingsproblemet med klassiske RAID-nivåer, kalles en arkitektur paritetsdeclustering(paritetsfordeling). Det innebærer å plassere færre logiske stasjoner med mer kapasitet på mindre, men større fysiske stasjoner. Med denne teknologien blir responstiden til systemet på en forespørsel under rekonstruksjon mer enn doblet, og rekonstruksjonstiden reduseres betydelig.

    Grunnleggende RAID-lagarkitektur

    La oss nå se på arkitekturen til de grunnleggende RAID-nivåene mer detaljert. Før vi vurderer, la oss gjøre noen antagelser. For å demonstrere prinsippene for å bygge RAID-systemer, vurder et sett med N disker (for enkelhets skyld vil N bli ansett som et partall), som hver består av M blokker.

    Dataene vil bli betegnet med Dm, n, hvor m er antall datablokker, n er antall underblokker som D-datablokken er delt inn i.

    Disker kan kobles til enten én eller flere dataoverføringskanaler. Bruk av flere kanaler øker gjennomstrømningen til systemet.

    RAID 0. Striped Disk Array uten feiltoleranse

    Det er en diskarray der data er delt inn i blokker, og hver blokk skrives (eller leses) til en separat disk. Dermed kan flere I/O-operasjoner utføres samtidig.

    Fordeler:

    • Høyest ytelse for applikasjoner som krever intensiv behandling av I/O-forespørsler og store datavolumer;
    • enkel implementering;
    • lav kostnad per volumenhet.

    ulemper:

    • ikke en feiltolerant løsning;
    • en enkelt diskfeil vil føre til tap av alle data i arrayet.

    RAID 1. Diskarray med duplisering eller speiling

    Speiling er en tradisjonell metode for å forbedre påliteligheten til et lite diskarray. I den enkleste versjonen brukes to disker, hvor den samme informasjonen er registrert, og i tilfelle feil på en av dem, forblir duplikatet, som fortsetter å fungere i samme modus.

    Fordeler:

    • enkel implementering;
    • enkel gjenoppretting av array i tilfelle feil (kopiering);
    • rimelig høy ytelse for applikasjoner med høy etterspørsel.

    ulemper:

    • høy kostnad per volumenhet - 100 % redundans;
    • lav dataoverføringshastighet.

    RAID 2. Feiltolerant diskarray som bruker Hamming Code ECC.

    Den redundante kodingen som brukes i RAID 2 kalles Hamming-kode. Hamming-koden lar deg korrigere enkelt- og dobbeltfeil. I dag brukes det aktivt i teknologien for koding av data i RAM som ECC. Og koding av data på magnetiske disker.

    I dette tilfellet vises et eksempel med et fast antall disker på grunn av den tungvinte beskrivelsen (et dataord består av henholdsvis 4 biter, en ECC-kode på 3).

    Fordeler:

    • rask feilretting (i farten);
    • svært høy hastighet på dataoverføring av store volumer;
    • med en økning i antall disker reduseres overheadkostnadene;
    • ganske enkel implementering.

    ulemper:

    • høye kostnader med et lite antall disker;
    • lav hastighet på forespørselsbehandling (ikke egnet for systemer orientert på transaksjonsbehandling).

    RAID 3. Parallelle overføringsdisker med paritet

    Data deles inn i underblokker på bytenivå og skrives samtidig til alle disker i arrayet bortsett fra én, som brukes for paritet. Bruk av RAID 3 løser problemet med høy redundans i RAID 2. De fleste kontrolldiskene som brukes i RAID nivå 2 er nødvendige for å finne den feilede biten. Men dette er ikke nødvendig, siden de fleste kontrollere er i stand til å bestemme når en disk har sviktet ved hjelp av spesielle signaler, eller ytterligere koding av informasjon skrevet til disken og brukt til å korrigere tilfeldige feil.

    Fordeler:

    • svært høy dataoverføringshastighet;
    • diskfeil har liten effekt på hastigheten til matrisen;

    ulemper:

    • vanskelig gjennomføring;
    • lav ytelse med høy intensitet av forespørsler om små data.

    RAID 4. Uavhengige datadisker med delt paritetsdisk

    Dataene er brutt ned på blokknivå. Hver datablokk skrives til en separat disk og kan leses separat. Paritet for en gruppe blokker genereres ved skriving og sjekkes ved lesing. RAID nivå 4 forbedrer ytelsen til små dataoverføringer gjennom parallellitet, slik at du kan utføre mer enn én I/O samtidig. Hovedforskjellen mellom RAID 3 og 4 er at i sistnevnte utføres datastriping på sektornivå, ikke på bit- eller bytenivå.

    Fordeler:

    • svært høy hastighet for å lese store datavolumer;
    • høy ytelse med høy intensitet av dataleseforespørsler;
    • lav overhead for implementering av redundans.

    ulemper:

    • svært lav ytelse når du skriver data;
    • lav hastighet på lesing av små data med enkeltforespørsler;
    • asymmetri i ytelse med hensyn til lesing og skriving.

    RAID 5. Uavhengige datadisker med distribuerte paritetsblokker

    Dette nivået ligner på RAID 4, men i motsetning til det forrige, fordeles pariteten syklisk over alle diskene i arrayet. Denne endringen forbedrer ytelsen til å skrive små mengder data på multitasking-systemer. Hvis skriveoperasjonene er riktig planlagt, er det mulig å behandle opptil N / 2 blokker parallelt, hvor N er antall disker i gruppen.

    Fordeler:

    • høy hastighet på dataopptak;
    • tilstrekkelig høy hastighet på datalesing;
    • høy ytelse med høy intensitet av data lese-/skriveforespørsler;
    • lav overhead for implementering av redundans.

    ulemper:

    • datalesehastigheten er lavere enn i RAID 4;
    • lav lese-/skrivehastighet for små data med enkeltforespørsler;
    • ganske kompleks implementering;
    • kompleks datagjenoppretting.

    RAID 6. Uavhengige datadisker med to uavhengige distribuerte paritetsskjemaer

    Data er partisjonert på blokknivå, lik RAID 5, men i tillegg til den forrige arkitekturen, brukes et annet skjema for å forbedre feiltoleransen. Denne arkitekturen er dobbel feiltolerant. Men når du utfører en logisk skriving, er det faktisk seks disktilganger, noe som i stor grad øker behandlingstiden for en forespørsel.

    Fordeler:

    • høy spenst;
    • tilstrekkelig høy hastighet på forespørselsbehandlingen;
    • relativt lav overhead for implementering av redundans.

    ulemper:

    • svært kompleks implementering;
    • kompleks datagjenoppretting;
    • svært lav dataskrivehastighet.

    Moderne RAID-kontrollere lar deg kombinere ulike RAID-nivåer. Dermed er det mulig å implementere systemer som kombinerer fordelene til forskjellige nivåer, så vel som systemer med et stort antall disker. Dette er vanligvis en kombinasjon av stripping og et visst feiltolerant nivå.

    RAID 10. Fault Tolerant Duplicate og Parallel Array

    Denne arkitekturen er en RAID 0-array hvis segmenter er RAID 1-arrayer. Den kombinerer svært høy feiltoleranse og ytelse.

    Fordeler:

    • høy spenst;
    • høy ytelse.

    ulemper:

    • svært høye kostnader;
    • begrenset skalering.

    RAID 30. Feiltolerant array med parallell dataoverføring og økt ytelse.

    Det er en RAID 0-matrise, hvis segmenter er RAID 3-matriser. Den kombinerer feiltoleranse og høy ytelse. Brukes vanligvis for applikasjoner som krever store serielle dataoverføringer.

    Fordeler:

    • høy spenst;
    • høy ytelse.

    ulemper:

    • høy pris;
    • begrenset skalering.

    RAID 50. Feiltolerant distribuert paritetsarray med økt ytelse

    Det er en RAID 0-matrise med segmenter av RAID 5. Den kombinerer feiltoleranse og høy ytelse for applikasjoner med høy etterspørsel og høye dataoverføringshastigheter.

    Fordeler:

    • høy spenst;
    • høy dataoverføringshastighet;
    • høy hastighet på forespørselsbehandlingen.

    ulemper:

    • høy pris;
    • begrenset skalering.

    RAID 7. Fjærende array optimalisert for ytelse. (Optimalisert asynkroni for høye I/O-hastigheter samt høye dataoverføringshastigheter). RAID 7® er et registrert varemerke for Storage Computer Corporation (SCC)

    For å forstå arkitekturen til RAID 7, la oss se på funksjonene:

    1. Alle forespørsler om dataoverføring behandles asynkront og uavhengig.
    2. Alle lese-/skriveoperasjoner bufres over høyhastighets x-bussen.
    3. Paritetsplaten kan plasseres på hvilken som helst kanal.
    4. Array-kontrollermikroprosessoren bruker et sanntids, prosessorientert operativsystem.
    5. Systemet har god skalerbarhet: opptil 12 vertsgrensesnitt og opptil 48 disker.
    6. Operativsystemet styrer kommunikasjonskanalene.
    7. Standard SCSI-disker, busser, hovedkort og minnemoduler brukes.
    8. Høyhastighets X-bussen brukes til å arbeide med det interne hurtigbufferminnet.
    9. Paritetsgenereringsrutinen er integrert i cachen.
    10. Disker koblet til systemet kan erklæres frittstående.
    11. En SNMP-agent kan brukes til å administrere og overvåke systemet.

    Fordeler:

    • høy dataoverføringshastighet og høy spørringsbehandlingshastighet (1,5 - 6 ganger høyere enn andre standard RAID-nivåer);
    • høy skalerbarhet av vertsgrensesnitt;
    • dataskrivehastigheten øker med økningen i antall disker i matrisen;
    • det er ikke behov for ytterligere dataoverføring for å beregne paritet.

    ulemper:

    • eiendom til en produsent;
    • svært høy kostnad per volumenhet;
    • kort garantiperiode;
    • kan ikke betjenes av brukeren;
    • du må bruke en avbruddsfri strømforsyning for å forhindre tap av data fra cache-minnet.

    La oss nå se på standardnivåene sammen for å sammenligne egenskapene deres. Sammenligningen er gjort innenfor rammen av arkitekturene nevnt i tabellen.

    PLYNDRINGSTOKTMinimum
    disker
    Trenge
    i disker
    Feil
    bærekraft
    Hastighet
    Data overføring
    Intensitet
    behandling
    forespørsler
    Praktisk
    bruk
    0 2 N veldig høy
    opptil N x 1 plate
    Grafikk, video
    1 2 2N * R> 1 plate
    B = 1 skive
    opptil 2 x 1 plate
    B = 1 skive
    små filservere
    2 7 2N ~ RAID 3Lavstormaskiner
    3 3 N + 1 LavGrafikk, video
    4 3 N + 1 R WR = RAID 0
    W
    filservere
    5 3 N + 1 R WR = RAID 0
    W
    databaseservere
    6 4 N + 2den høyestelavR> 1 plate
    W
    brukt ekstremt sjelden
    7 12 N + 1 den høyesteden høyesteulike typer applikasjoner

    Avklaringer:

    • * - det ofte brukte alternativet vurderes;
    • k er antall undersegmenter;
    • R - les;
    • W - rekord.

    Noen aspekter ved implementeringen av RAID-systemer

    La oss vurdere tre hovedalternativer for implementering av RAID-systemer:

    • programvare (programvarebasert);
    • maskinvarerom - bussbasert;
    • maskinvare - et autonomt delsystem (undersystembasert).

    Det kan ikke sies entydig at en implementering er bedre enn en annen. Hvert alternativ for å organisere arrayet tilfredsstiller ett eller annet brukerbehov, avhengig av de økonomiske mulighetene, antall brukere og applikasjonene som brukes.

    Hver av de ovennevnte implementeringene er basert på kodekjøring. De er faktisk forskjellige i hvor denne koden utføres: i den sentrale prosessoren til en datamaskin (programvareimplementering) eller i en spesialisert prosessor på en RAID-kontroller (maskinvareimplementering).

    Hovedfordelen med programvareimplementering er lave kostnader. Men samtidig har den mange ulemper: lav ytelse, belastning med tilleggsarbeid på sentralprosessoren, økt busstrafikk. Enkle RAID-nivåer 0 og 1 er vanligvis implementert i programvare, siden de ikke krever betydelig beregning. Med disse funksjonene i tankene, brukes programvarebaserte RAID-systemer på startnivåservere.

    Maskinvare-RAID-implementeringer koster mer enn programvare-RAID, siden de bruker ekstra maskinvare for å utføre I/O-operasjoner. Samtidig laster de av eller frigjør sentralprosessoren og systembussen og øker følgelig ytelsen.

    Bussorienterte implementeringer er RAID-kontrollere som bruker høyhastighetsbussen til datamaskinen de er installert i (nylig brukes vanligvis PCI-bussen). I sin tur kan bussorienterte implementeringer deles inn i lavnivå og høynivå. Førstnevnte har vanligvis ikke SCSI-brikker og bruker den såkalte RAID-porten på et hovedkort med innebygd SCSI-kontroller. I dette tilfellet er funksjonene for behandling av RAID-kode og I/O-operasjoner fordelt mellom prosessoren på RAID-kontrolleren og SCSI-brikkene på hovedkortet. Dermed frigjøres sentralprosessoren fra å behandle tilleggskode og busstrafikken reduseres sammenlignet med programvareversjonen. Kostnaden for slike kort er vanligvis lave, spesielt hvis de er fokusert på RAID - 0 eller 1-systemer (det finnes også implementeringer av RAID 3, 5, 10, 30, 50, men de er dyrere), på grunn av dette gradvis fortrenge programvareimplementeringer fra servermarkedet på entry-level. Busskontrollere på høyt nivå har en litt annen struktur enn sine småbrødre. De overtar alle funksjoner knyttet til I/O og RAID-kodekjøring. I tillegg er de ikke så avhengige av implementeringen av hovedkortet og har som regel flere muligheter (for eksempel muligheten til å koble til en modul for å lagre informasjon i hurtigbufferen i tilfelle hovedkortfeil eller strømbrudd) . Disse kontrollerene er vanligvis dyrere enn kontroller på lavt nivå og brukes i mellomstore og avanserte servere. De implementerer som regel RAID-nivåene 0,1, 3, 5, 10, 30, 50. Tatt i betraktning at bussorienterte implementeringer kobles direkte til den interne PCI-bussen til datamaskinen, er de de mest produktive blant systemene under hensyn (når du organiserer ett vertssystem). Den maksimale ytelsen til slike systemer kan nå 132 MB/s (32bit PCI) eller 264 MB/s (64bit PCI) med en bussfrekvens på 33MHz.

    Sammen med de listede fordelene har den bussorienterte arkitekturen følgende ulemper:

    • avhengighet av operativsystemet og plattformen;
    • begrenset skalerbarhet;
    • begrensede muligheter for å organisere feiltolerante systemer.

    Alle disse ulempene kan unngås ved å bruke frittstående delsystemer. Disse systemene har en helt autonom ekstern organisasjon og er i prinsippet en egen datamaskin som brukes til å organisere informasjonslagringssystemer. I tillegg, i tilfelle en vellykket utvikling av teknologien til fiberoptiske kanaler, vil ytelsen til autonome systemer på ingen måte være dårligere enn bussorienterte systemer.

    Vanligvis er en ekstern kontroller plassert i et eget rack, og i motsetning til systemer med bussorganisasjon kan den ha et stort antall I/O-kanaler, inkludert vertskanaler, som gjør det mulig å koble flere vertsdatamaskiner til systemet og organisere klyngesystemer. I systemer med en frittstående kontroller kan hot spare-kontrollere implementeres.

    En av ulempene med autonome systemer er deres høye kostnader.

    Med tanke på det ovennevnte, merker vi at frittstående kontrollere vanligvis brukes til å implementere datavarehus og klyngesystemer med høy kapasitet.