Grundad 2008 · Digital utgåva · 15 juni 2026

SMB IT Journal

Informationsteknikresursen för småföretag

Svenska
Lagring

RAID på nytt

På den tiden då jag var en oerfaren servicetekniker och knappt visste något om systemadministration var ett av de få ämnen som vi alltid förväntades kunna utan och innan RAID – Redundant Array of Inexpensive Disks. Det var svaret på alla våra lagringsbekymmer. Med RAID kunde vi skala våra filsystem större, få bättre genomströmning och till och med lägga till redundans som gjorde det möjligt för oss att överleva förlusten av en disk, vilket, särskilt på den tiden, inträffade ganska regelbundet. Med uppkomsten av NAS- och SAN-lagringsapparater håller färdigheten att ta sig ända ner till den fysiska lagringsnivån och finjustera den för att möta behoven hos systemet i fråga snabbt på att försvinna. Detta är inte något bra. Bara för att vi avlastar lagring till externa enheter förändrar det inte det faktum att vi i grunden behöver förstå vår lagring och konfigurera den för att möta våra systems specifika behov.

En missuppfattning som tycks ha letat sig in på fältet under de senaste fem till tio åren är föreställningen att RAID på något sätt utgör en systemsäkerhetskopiering. Det gör det inte. RAID är en form av feltolerans. Säkerhetskopiering och feltolerans är begreppsmässigt mycket olika. Säkerhetskopiering är utformad för att göra det möjligt för dig att återställa efter att en katastrof har inträffat. Feltolerans är utformad för att minska risken för katastrof i första hand. Tänk på feltolerans som att bygga ett staket vid kanten av en klippa och säkerhetskopiering som att bygga ett sjukhus vid dess fot. Du vill egentligen aldrig befinna dig i en situation utan både ett staket och ett sjukhus, men de är definitivt olika saker.

När vi väl implementerar RAID för våra diskar, oavsett om de är lokalt anslutna eller på en fjärrapparat som SAN, har vi idag fyra centrala RAID-lösningar att välja mellan för företag: RAID 1 (spegling), RAID 5 (striping med paritet), RAID 6 (striping med dubbel paritet) och RAID 10 (spegling med striping). Det finns andra, som RAID 0, som endast bör användas i sällsynta fall när du verkligen förstår behoven hos ditt disksubsystem. RAID 50 och 51 används också, men långt mindre vanligt och är inte alls lika effektiva. För tio år sedan var RAID 1 och RAID 5 vanliga, men idag har vi fler alternativ.

Låt oss gå igenom alternativen och diskutera några grundläggande siffror. I våra exempel kommer vi att använda n för att representera antalet diskar i vår array och vi kommer att använda s för att representera storleken på en enskild disk. Med hjälp av dessa kan vi uttrycka det användbara lagringsutrymmet i en array, vilket gör jämförelser enkla i termer av lagringskapacitet.

RAID 1: I denna RAID-typ speglas diskarna. Du har två diskar och de gör allt tillsammans samtidigt, därav “spegling”. Spegling är extremt stabilt eftersom processen är så enkel, men det kräver att du köper dubbelt så många diskar som du skulle behöva om du inte använde RAID alls, eftersom din andra disk är dedikerad till redundans. Fördelen är att du har garantin att varje bit som du skriver till disk skrivs två gånger för ditt skydd. Så med RAID 1 beräknas vår kapacitet till (n*s/2). RAID 1 lider av att ge minimala prestandavinster jämfört med diskar utan RAID. Skrivhastigheterna är likvärdiga med ett system utan RAID medan läshastigheterna är nästan dubbelt så snabba i de flesta situationer eftersom diskarna under läsoperationer kan komma åt parallellt för att öka genomströmningen. RAID 1 är begränsat till uppsättningar om två diskar.

RAID 5: Striping med enkel paritet, i denna RAID-typ skrivs data i en komplex stripe över alla diskar i arrayen med ett distribuerat paritetsblock som finns över samtliga diskar. Genom att göra detta kan RAID 5 använda en array av godtycklig storlek om tre eller fler diskar och förlorar endast den lagringskapacitet som motsvarar en enskild disk till paritet, även om pariteten är distribuerad och inte finns enbart på någon enskild fysisk disk. RAID 5 används ofta på grund av sin kostnadseffektivitet tack vare avsaknaden av lagringskapacitetsförlust i stora arrayer. Till skillnad från spegling kräver striping med paritet att en beräkning utförs för varje skrivstripe över diskarna, och detta skapar en viss omkostnad. Därför är genomströmningen inte alltid en uppenbar beräkning och är starkt beroende av beräkningskraften hos det system som utför paritetsberäkningen. Att beräkna kapaciteten för RAID 5 är ganska enkelt eftersom det helt enkelt är ((n-1)*s). En RAID 5-array kan överleva förlusten av vilken enskild disk som helst i arrayen.

RAID 6: Redundant striping med dubbel paritet. RAID 6 är praktiskt taget identiskt med RAID 5 men använder två paritetsblock per stripe snarare än ett för att möjliggöra ytterligare skydd mot diskfel. RAID 6 är en nyare medlem av RAID-familjen som lades till flera år efter att de övriga nivåerna hade blivit standardiserade. RAID 6 är speciellt så till vida att det tillåter att vilka två diskar som helst i en array går sönder utan att drabbas av dataförlust. Men för att rymma den ytterligare redundansnivån förlorar en RAID 6-array den lagringskapacitet som motsvarar två diskar i arrayen och kräver minst fyra diskar. Vi kan beräkna kapaciteten för en RAID 6-array med ((n-2)*s).

RAID 10: Spegling plus striping. Tekniskt sett är RAID 10 en hybrid-RAID-typ som omfattar en uppsättning RAID 1-speglar som existerar i en stripe utan paritet (RAID 0). Många leverantörer använder termen RAID 10 (eller RAID 1+0) när de talar om endast två diskar i en array, men tekniskt sett är det RAID 1 eftersom striping inte kan inträffa förrän det finns minst fyra diskar i arrayen. Med RAID 10 måste diskar läggas till parvis så endast ett jämnt antal diskar kan existera i en array. RAID 10 kan överleva förlusten av upp till hälften av den totala uppsättningen diskar men en maximal förlust av en disk från varje par. RAID 10 involverar inte någon paritetsberäkning, vilket ger det en prestandafördel jämfört med RAID 5 eller RAID 6 och kräver mindre beräkningskraft för att driva arrayen. RAID 10 levererar den största läsprestandan av alla vanliga RAID-typer eftersom alla diskar i arrayen kan användas samtidigt vid läsoperationer, även om dess skrivprestanda är mycket lägre. RAID 10:s kapacitetsberäkning är identisk med den för RAID 1, (n*s/2).

I dagens företagsmiljö är det sällsynt att en IT-avdelning har ett verkligt behov av att överväga någon diskkonfiguration utanför de fyra som nämns här, oavsett om RAID implementeras i programvara eller hårdvara. Traditionellt sett kretsade den största farhågan i ett beslut om en RAID-array kring användbar kapacitet. Detta berodde på att diskar var dyra och små. Idag är diskar så stora att lagringskapacitet sällan är ett problem, åtminstone inte som det var för bara några år sedan, och kostnaderna har fallit på ett sådant sätt att inköp av de ytterligare diskar som krävs för bättre diskredundans i allmänhet är av mindre betydelse. När kapacitet är en bristvara är RAID 5 ett populärt val eftersom det förlorar minst lagringskapacitet jämfört med andra arraytyper och i stora arrayer är lagringsförlusten försumbar.

Idag har vi i allmänhet andra farhågor, främst datasäkerhet och prestanda. Att lägga lite extra för att säkerställa dataskydd borde vara ett uppenbart val. RAID 5 lider av att kunna förlora endast en enskild disk. I en array med endast tre medlemmar är detta endast något farligare än det skydd som RAID 1 erbjuder. Vi skulle kunna överleva förlusten av vilken som helst av tre diskar. Inte alltför skrämmande jämfört med att förlora endera av två diskar. Men hur är det med en stor array, säg sexton diskar. Att kunna förlora endast en av sexton diskar på ett säkert sätt borde få oss att ifrågasätta vår tillförlitlighet lite mer grundligt.

Det är här RAID 6 klev in för att fylla luckan. RAID 6 medför, när det används i en stor array, en mycket liten förlust av lagringskapacitet och prestanda samtidigt som det ger garantin att kunna förlora vilka två diskar som helst. Förespråkare för lägret striping med paritet citerar ofta dessa siffror för att lugna ledningen med att RAID 5/6 kan ge tillräckligt med “valuta för pengarna” i lagringssubsystem, men det finns andra faktorer i spel.

Nästan helt förbisedd i diskussioner om RAID-tillförlitlighet, ett alltför sällan diskuterat ämne som det är, är frågan om paritetsberäkningens tillförlitlighet. Med RAID 1 eller RAID 10 görs ingen “beräkning” för att skapa en stripe med paritet. Data skrivs helt enkelt på ett stabilt sätt. När en disk går sönder tar dess partner över belastningen och diskprestandan försämras något tills partnern byts ut. Det finns ingen återuppbyggnadsprocess som påverkar befintliga diskmedlemmar. Så är det inte med paritetsstripes.

RAID-arrayer med paritet har operationer som involverar att beräkna vad som finns och vad som borde finnas på diskarna. Även om denna beräkning är mycket enkel ger den en möjlighet för saker att gå fel. En arraystyrenhet som havererar med RAID 1 eller RAID 10 skulle i teorin kunna skriva felaktig data över diskarnas innehåll, men det finns ingen process genom vilken styrenheten gör diskändringar på egen hand, så detta är extremt osannolikt att någonsin inträffa eftersom det aldrig finns någon “återuppbyggnadsprocess” utom när en spegel skapas.

När arrayer med paritet utför en återuppbyggnadsoperation genomför de en komplex process genom vilken de stegar igenom hela arrayens innehåll och skriver tillbaka saknad data till den utbytta disken. I sig självt är detta relativt enkelt och borde inte vara någon anledning till oro. Det som jag och andra har sett på nära håll är ett något annorlunda scenario som involverar diskar som har förlorat anslutningen på grund av lösa kontakter till arrayen. Diskar kan ofta “skakas” loss med tiden medan de sitter i en server, särskilt efter flera års tjänst i ett system som alltid är påslaget.

Det som kan hända, i extrema scenarier, är att god data på diskar kan skrivas över av felaktig paritetsdata när en arraystyrenhet tror att en eller flera diskar har gått sönder i följd och tagits tillbaka online för återuppbyggnad. I detta fall har diskarna själva inte gått sönder och det finns ingen dataförlust. Allt som krävs är att diskarna sätts på plats igen, i teorin. På hot swap-system är hanteringen av diskåteruppbyggnad ofta automatisk baserad på borttagningen och utbytet av en trasig disk. Så denna process att förlora och byta ut en disk kan inträffa utan någon mänsklig inblandning – och en återuppbyggnadsprocess kan påbörjas. Under denna process är disksystemet i riskzonen, och skulle samma händelse inträffa igen kan diskarrayen, baserat på diskarnas status, börja stripe-skriva felaktig data över diskarna och skriva över det goda filsystemet. Det är en av de mest nedslående syner en serveradministratör kan se när ett system utan några trasiga diskar förlorar en hel array på grund av en onödig återuppbyggnadsoperation.

I teorin borde denna typ av situation inte inträffa och skyddsmekanismer finns på plats för att skydda mot den, men en lågnivå-diskstyrenhets bedömning av en disks status för närvarande och tidigare samt kvaliteten på den data som finns på den disken är inte så enkel som den kan tyckas, och det är möjligt för misstag att inträffa. Även om denna situation är osannolik inträffar den, och den lägger till en nästan omöjlig att beräkna risk till RAID 5- och RAID 6-system. Vi måste överväga risken för paritetsfel utöver den traditionella risk som beräknas utifrån antalet diskförluster som en array kan överleva ur en pool. I takt med att diskar blir mer tillförlitliga blir betydelsen av riskhändelsen paritetsfel större.

Dessutom medför paritet i RAID 5 och RAID 6 en systemomkostnad på grund av paritetsberäkning som ofta hanteras med hjälp av dedikerad RAID-hårdvara. Denna beräkning medför en latens i disksubsystemet som varierar dramatiskt beroende på implementering, både i hårdvara och i programvara, vilket gör det omöjligt att ange prestandasiffror för olika RAID-nivåer i förhållande till varandra eftersom varje implementering kommer att vara unik.

Möjligen det största problemet med RAID-val idag är att den lätthet med vilken mätvärden för lagringseffektivitet och överlevnadsförmåga vid diskförlust kan erhållas maskerar helhetsbilden av tillförlitlighet och prestanda, eftersom den statistiken är nästan helt otillgänglig. En av farorna med mätvärden är att människor kommer att fokusera på faktorer som lätt kan mätas och ignorera dem som inte lätt kan mätas, oavsett deras potential till påverkan.

Även om alla moderna RAID-nivåer har sin plats är det avgörande att de övervägs inom sitt sammanhang och med en förståelse för riskernas hela omfattning. Vi bör arbeta hårt för att förskjuta vår bransch från ett standardval av RAID 5 till ett standardval av RAID 10. Diskar är billiga och dataförlust är dyrt.

[Redigering: Under de år som gått sedan detta ursprungligen skrevs har uppkomsten av riskerna för URE (Unrecoverable Read Errors) under en återuppbyggnadsoperation förskjutit de primära riskerna från dem som anges till URE-relaterade risker för paritetsarrayer.]

Taggatraid storage

Annons

SMB IT Journal — the IT resource for small business