Grundlagt 2008 · Digital udgave · 19 juni 2026

SMB IT Journal

Informationsteknologi-ressourcen for små virksomheder

Dansk
Lagring

Sammenligning af RAID 10 og RAID 01

Disse to RAID-niveauer skaber ofte enorm forvirring, dels fordi de fejlagtigt bruges om hinanden og dels fordi de simpelthen er dårligt forstået.

Først bør det nævnes, at begge kan skrives med eller uden plustegn: RAID 10 er RAID 1+0 og RAID 01 er RAID 0+1. Mærkværdigvis skrives RAID 10 næsten aldrig med plustegn, og RAID 01 skrives næsten aldrig uden. Storageeksperter er generelt enige om, at plustegnet aldrig bruges, da det er overflødigt.

Begge disse RAID-niveauer er "sammensatte" niveauer, der er lavet ved at kombinere to forskellige, simple RAID-typer. Begge er mirror-baserede, ikke-paritetsmæssige sammensatte eller indlejrede RAID. Begge har stort set identiske ydeevnekarakteristika – nominel overhead og latenstid med NX læsehastighed og (NX)/2 skrivehastighed, hvor N er antallet af drev i arrayet og X er ydeevnen for et enkelt drev i arrayet.

Det, der adskiller de to RAID-niveauer, er, hvordan de håndterer diskfejl. Den korte version er, at RAID 10 er ekstremt sikkert under næsten alle rimelige scenarier. RAID 01 bliver dog hurtigt ganske risikabelt, efterhånden som arrayets størrelse øges.

I et RAID 10 resulterer tabet af et enkelt drev i nedgradering af ét enkelt RAID 1-sæt inden i RAID 0-stripen. Stripe-niveauet ser ingen nedgradering, kun det ene RAID 1-spejl gør. Alle andre spejle er upåvirkede. Det betyder, at vores eneste øgede risiko er, at dette ene drev nu kører uden redundans og ikke har nogen beskyttelse. Alle andre spejlsæt bevarer stadig fuld beskyttelse. Vores eksponering er altså et enkelt, ubeskyttet drev – meget som man ville forvente i en stationær computer.

Array-reparation i et degraderet RAID 10 er det hurtigst mulige reparationsscenarie. Når et fejlet drev udskiftes, er det eneste, der sker, at det ene spejl genopbygges – hvilket er en simpel kopieringsoperation, der sker på RAID 1-niveauet, under RAID 0-stripen. Det betyder, at hvis det overordnede array er inaktivt, kan spejlingsprocessen forløbe med fuld hastighed, og det overordnede array aner ikke engang, at det sker. En disk-til-disk-spejling er ekstremt hurtig, effektiv og pålidelig. Dette er et ideelt gendannelsesscenarie. Selv hvis flere spejle har nedgradering samtidigt og genopbygges samtidigt, er der ingen yderligere indvirkning, da genopbygningen af ét ikke påvirker de andre. RAID 10-risiko og reparationsindvirkning skalerer begge ekstremt godt.

RAID 01 derimod mister, når det mister et enkelt drev, øjeblikkeligt en hel RAID 0-stripe. I et typisk RAID 01-spejl er der to RAID 0-stripes. Det betyder, at halvdelen af hele arrayet er fejlet. Hvis vi taler om et otte-drev RAID 01-array, gør fejlen på et enkelt drev fire drev øjeblikkeligt ubrugelige og effektivt fejlede (hardware behøver ikke udskiftes, men dataene på drevene er forældede og skal genopbygges for at være brugbare). Så fra et risikoperspektiv kan vi betragte det som en fejl på hele stripen.

Det, der er tilbage, efter at en enkelt disk er fejlet, er intet andet end en enkelt, ubeskyttet RAID 0-stripe. Dette er langt farligere end den tilsvarende RAID 10-fejl, fordi i stedet for at der kun er en enkelt, isoleret harddisk i fare, er der nu minimum to diske og potentielt mange flere i fare, og hvert drev eksponeret for denne risiko forstærker risikoen betydeligt.

Som eksempel har vi i det mindst mulige RAID 10 eller 01 array fire drev. I RAID 10, hvis ét drev fejler, er vores risiko, at dets matchende partner også fejler, inden vi genopbygger arrayet. Vi bekymrer os kun om det ene drev, alle andre drev i RAID 10-sættet er stadig beskyttede og sikre. Kun dette ene er et problem. I et RAID 01, når det første drev fejler, er dets partner i dets RAID 0-sæt øjeblikkeligt ubrugelig og effektivt fejlet, da det ikke længere kan fungere i arrayet. Det, der er tilbage, er to drev uden beskyttelse, der kører intet andet end RAID 0, og vi har samme risiko som RAID 10, to gange. Hvert drev har den samme risiko som det ene drev havde. Dette gør vores risiko, i det bedste scenarie, meget højere.

Men for et mere dramatisk eksempel, lad os se på et stort fireogtyve-drev RAID 10 og RAID 01 array. Igen med RAID 10, hvis ét drev fejler, er alle andre, undtagen dets ene partner, stadig beskyttede. Den ekstra størrelse af arrayet tilføjede næsten nul yderligere risiko. Vi frygter stadig kun fejlen på det ene isolerede drev. Sammenlign det med RAID 01, som ville have haft et af dets RAID 0-arrays fejle, idet tolv diske stoppede på én gang ved fejlen af ét, efterladende de andre tolv diske i et RAID 0 uden nogen form for beskyttelse. Chancen for, at et af tolv drev fejler, er betydeligt højere end chancen for, at et enkelt drev fejler, naturligvis.

Dette er ikke hele billedet. Gendannelsen af den enkelte RAID 10-disk er hurtig; det er en direkte kopieringsoperation fra ét drev til det andet. Det bruger minimale ressourcer og tager kun så lang tid, som det kræves for et enkelt drev at læse og skrive sig selv i sin helhed. RAID 01 er ikke så heldig. I modsætning til RAID 10, der kun genopbygger en lille delmængde af hele arrayet – og en delmængde, der ikke vokser, efterhånden som arrayet vokser (tiden til at gendanne et fire-drev RAID 10 eller et fyrre-drev RAID 10 efter fejl er identisk), skal RAID 01 genopbygge en hel halvdel af det overordnede array. I tilfælde af fire-drev-arrayet er dette dobbelt så meget genopbygningsarbejde som RAID 10, men i tilfælde af fireogtyve-drev-arrayet er det tolv gange så meget genopbygningsarbejde. Så RAID 01-genopbygninger tager længere tid at udføre, mens man er under betydeligt mere risiko i den periode.

Der er en ganske vedvarende myte om, at RAID 01 og RAID 10 har forskellige ydeevnekarakteristika, men det har de ikke. Begge bruger simpel striping og spejling, som effektivt er nul-overhead-operationer, der næsten ikke kræver nogen behandlingsoverhead. Begge får fuld læseydeevne fra alle diskenheder tilknyttet dem, og begge mister halvdelen af deres skriveydeevne til spejlingsoperationen (forudsat tovejs-spejle, hvilket er den eneste almindelige brug af begge arraytyper). Der er simpelthen intet, der gør RAID 01 eller RAID 10 hurtigere eller langsommere end den anden. Begge er ekstremt hurtige.

På grund af de to arraytypers karakteristika er det klart, at RAID 10 er den eneste type af de to, der nogensinde bør eksistere på en enkelt array-controller. RAID 01 er unødvendigt farligt og har ingen fordele. De bruger den samme kapacitetsoverhead, de har den samme ydeevne, de koster det samme at implementere, men RAID 10 er betydeligt mere pålideligt.

Så hvorfor eksisterer RAID 01 overhovedet? Delvist eksisterer det af uvidenhed eller forvirring. Mange mennesker, der implementerer deres egne sammensatte RAID-arrays, vælger RAID 01, fordi de har hørt myten om, at det er hurtigere og, som generelt er tilfældet med RAID, ikke undersøger, hvorfor det skulle være hurtigere og glemmer at se på dets pålidelighed og andre faktorer. RAID 01 implementeres virkelig kun på lokale arrays ved fejl.

Men når vi tager RAID til netværkslaget, er der nye faktorer at overveje, og RAID 01 kan blive vigtigt, ligesom dets sjældne fætter RAID 61. Vi angiver via Network RAID Notation, hvor de lokale og netværksmæssige lag af RAID eksisterer. Så i dette tilfælde mener vi RAID 0(1) ELLER RAID 6(1). Parenteserne angiver, at RAID 1-spejlet, den "øverste" del af RAID-stakken, er over en netværksforbindelse og ikke på den lokale RAID-controller.

Hvordan ville dette se ud i RAID 0(1)? Hvis du har to servere, hver med et standard RAID 0-array, og du ønsker, at de skal synkroniseres for at fungere som et enkelt, pålideligt array, kan du bruge en teknologi som DRBD (på Linux) eller HAST (på FreeBSD) til at oprette et netværks-RAID 1-array ud af den lokale lagring på hver server. Naturligvis har dette en masse ydeevneoverhead, da RAID 1-arrayet skal holdes synkroniseret over den høj-latens, lav-båndbredde LAN-forbindelsen. RAID 0(1) er notationen for denne opsætning. Hvis hvert lokalt RAID 0-array blev erstattet med et mere pålideligt RAID 6, ville vi skrive hele opsætningen som RAID 6(1).

Hvorfor accepterer vi risikoen ved RAID 01, når det er over et netværk, men ikke når det er lokalt? Dette skyldes netværksforbindelsens natur. I tilfælde af RAID 10 stoler vi på den lavniveaus RAID 1-del af RAID-stakken for beskyttelse, og RAID 0 sidder ovenpå. Hvis vi replikerer dette på netværksniveau som RAID 1(0), ender vi med, at hver host har et enkelt spejl, der kun repræsenterer en del af arrayets data. Hvis noget ville ske med en hvilken som helst node i arrayet, eller hvis netværksforbindelsen fejlede, ville arrayet øjeblikkeligt blive ødelagt, og hver node ville sidde tilbage med ubrugelige, ufuldstændige data. Det er netop den høje risiko ved node-fejl og risiko på netværksforbindelsesniveauet, der gør RAID-beslutninger i et netværksmiljø ekstremt anderledes. Dette bliver et komplekst emne i sig selv.

Tilstrækkeligt at sige, når man arbejder med normale RAID-array-controllers eller med lokal lagring og software-RAID, brug udelukkende RAID 10 og aldrig RAID 01.

Mærketraid raid 01 raid 10

Annonce

SMB IT Journal — the IT resource for small business