Raid 1 beskrivning. Jämförelse av standardnivåer. Vad är en RAID-array

Idag ska vi prata om RAID-arrayer. Låt oss ta reda på vad det är, varför vi behöver det, hur det är och hur man använder all denna storslagenhet i praktiken.

Så, i ordning: vad är RAID-array eller bara RÄD? Denna förkortning står för "Redundant Array of Independent Disks" eller "redundant (backup) array of independent disks." För att uttrycka sig enkelt, RAID-array detta är en samling fysiska diskar kombinerade till en logisk disk.

Det händer oftast tvärtom - in systemenhet en fysisk disk är installerad, som vi delar upp i flera logiska. Här är situationen den motsatta - något hårddiskar först kombineras de till ett, och sedan uppfattas operativsystemet som ett. De där. OS är övertygat om att det fysiskt bara har en disk.

RAID-arrayer Det finns hårdvara och mjukvara.

Hårdvara RAID-arrayer skapas innan operativsystemet startar via särskilda verktyg, inkopplad i RAID-kontroller- något som en BIOS. Som ett resultat av att skapa sådana RAID-array redan i OS-installationsstadiet "ser" distributionssatsen en disk.

programvara RAID-arrayer skapad av OS-verktyg. De där. under lastning operativ system"förstår" att hon har flera fysiska diskar och först efter att OS startar, igenom programvara diskar kombineras till arrayer. Självklart sitter inte själva operativsystemet på RAID-array, eftersom den ställs in innan den skapas.

"Varför behövs allt detta?" - du frågar? Svaret är: att öka hastigheten för att läsa/skriva data och/eller öka feltoleransen och säkerheten.

"Hur RAID-array kan öka hastigheten eller säkra data?" - För att svara på den här frågan, överväg huvudtyperna RAID-arrayer, hur de bildas och vad det ger som resultat.

RAID-0. Kallas även "Stripe" eller "Tape". Två eller flera hårddiskar kombineras till en genom sekventiell sammanslagning och summering av volymerna. De där. om vi tar två 500GB diskar och skapar dem RAID-0, kommer operativsystemet att uppfatta detta som en terabyte disk. Samtidigt kommer läs/skrivhastigheten för denna array att vara dubbelt så hög som den för en disk, eftersom till exempel om databasen fysiskt är placerad på detta sätt på två diskar, kan en användare läsa data från en disk , och en annan användare kan skriva till en annan disk samtidigt. Medan i fallet med databasplatsen på en disk, HDD läs/skrivuppgifter olika användare kommer att köras sekventiellt. RAID-0 kommer att tillåta läsning/skrivande parallellt. Som en konsekvens, desto fler diskar i arrayen RAID-0, desto snabbare fungerar själva arrayen. Beroendet är direkt proportionellt - hastigheten ökar N gånger, där N är antalet diskar i arrayen.
Vid arrayen RAID-0 det finns bara en nackdel som överväger alla fördelar med att använda den - den totala avsaknaden av feltolerans. Om en av de fysiska skivorna i arrayen dör dör hela arrayen. Det finns ett gammalt skämt om detta: "Vad betyder "0" i titeln? RAID-0? - mängden information som återställts efter arrayens död!"

RAID-1. Kallas även "Mirror" eller "Mirror". Två eller flera hårddiskar kombineras till en genom parallell sammanslagning. De där. om vi tar två 500GB diskar och skapar dem RAID-1, kommer operativsystemet att uppfatta detta som en 500 GB disk. I det här fallet kommer läs/skrivhastigheten för denna array att vara densamma som för en disk, eftersom information läses/skrivs till båda diskarna samtidigt. RAID-1 ger ingen hastighetsvinst, men ger större feltolerans, eftersom i händelse av att en av hårddiskarna dör, finns det alltid en fullständig dubblett av information på den andra enheten. Man måste komma ihåg att feltolerans endast tillhandahålls mot döden av en av arrayskivorna. Om data raderades avsiktligt raderas den från alla diskar i arrayen samtidigt!

RAID-5. Mer säkert alternativ RAID-0. Arrayens volym beräknas med hjälp av formeln (N - 1) * Diskstorlek RAID-5 från tre 500 GB diskar får vi en array på 1 terabyte. Kärnan i arrayen RAID-5är att flera diskar kombineras till RAID-0, och den sista disken lagrar den så kallade "checksum" - tjänstinformation avsedd att återställa en av array-diskarna i händelse av dess död. Array skrivhastighet RAID-5 något lägre, eftersom tid går åt till att beräkna och skriva kontrollsumman till en separat disk, men läshastigheten är densamma som i RAID-0.
Om en av array-skivorna RAID-5 dör, sjunker läs/skrivhastigheten kraftigt, eftersom alla operationer åtföljs av ytterligare manipulationer. Faktiskt RAID-5 förvandlas till RAID-0 och om återställning inte tas om hand i tid RAID-array det finns en betydande risk att förlora data helt.
Med en array RAID-5 Du kan använda den så kallade Reservskivan, d.v.s. reserv. Under stabil drift RAID-array Denna disk är inaktiv och används inte. Men i händelse av en kritisk situation, återhämtning RAID-array startar automatiskt - information från den skadade återställs till reservdisken med hjälp av kontrollsummor som finns på en separat disk.
RAID-5 skapas från minst tre diskar och sparas från enstaka fel. Vid samtidig förekomst av olika fel på olika diskar RAID-5 sparar inte.

RAID-6- är en förbättrad version av RAID-5. Kärnan är densamma, bara för kontrollsummor, inte en utan två diskar används, och kontrollsummorna beräknas med olika algoritmer, vilket avsevärt ökar feltoleransen för allting RAID-array allmänt. RAID-6 monteras från minst fyra skivor. Formeln för att beräkna volymen av en array ser ut (N - 2) * Diskstorlek, där N är antalet diskar i arrayen och DiskSize är storleken på varje disk. De där. medan du skapar RAID-6 från fem 500 GB diskar får vi en array på 1,5 terabyte.
Skriv hastighet RAID-6 lägre än RAID-5 med cirka 10-15 %, vilket beror på att ytterligare tid spenderas på att beräkna och skriva kontrollsummor.

RAID-10- även ibland kallad RAID 0+1 eller RAID 1+0. Det är en symbios av RAID-0 och RAID-1. Arrayen är byggd av minst fyra diskar: på den första RAID-0-kanalen, på den andra RAID-0 för att öka läs-/skrivhastigheten och mellan dem i en RAID-1-spegel för att öka feltoleransen. Således, RAID-10 kombinerar fördelarna med de två första alternativen - snabb och feltålig.

RAID-50- på samma sätt är RAID-10 en symbios av RAID-0 och RAID-5 - i själva verket är RAID-5 byggd, bara dess beståndsdelar är inte oberoende hårddiskar, och arrayerna är RAID-0. Således, RAID-50 ger mycket bra läs/skrivhastighet och innehåller stabiliteten och tillförlitligheten hos RAID-5.

RAID-60- samma idé: vi har faktiskt RAID-6, sammansatt från flera RAID-0-arrayer.

Det finns också andra kombinerade arrayer RAID 5+1 Och RAID 6+1- Dom ser ut som RAID-50 Och RAID-60 den enda skillnaden är att de grundläggande elementen i arrayen inte är RAID-0-band, utan RAID-1-speglar.

Hur förstår du kombinerade RAID-arrayer: RAID-10, RAID-50, RAID-60 och alternativ RAID X+1är direkta ättlingar till de grundläggande arraytyperna RAID-0, RAID-1, RAID-5 Och RAID-6 och tjänar endast till att öka antingen läs-/skrivhastigheten eller öka feltoleransen, samtidigt som de har funktionerna hos grundläggande överordnade typer RAID-arrayer.

Om vi ​​går vidare till praktiken och pratar om användningen av vissa RAID-arrayer i livet är logiken ganska enkel:

RAID-0 Vi använder det inte alls i dess rena form;

RAID-1 Vi använder den där läs/skrivhastighet inte är särskilt viktig, men feltolerans är viktig - t.ex. RAID-1 Det är bra att installera operativsystem. I det här fallet kommer ingen utom operativsystemet åt diskarna, hastigheten på själva hårddiskarna är ganska tillräcklig för drift, feltolerans säkerställs;

RAID-5 Vi installerar det där hastighet och feltolerans behövs, men det finns inte tillräckligt med pengar för att köpa fler hårddiskar eller det finns ett behov av att återställa arrays i händelse av skada utan att stoppa arbetet - reservdelar reservenheter hjälper oss här. Vanlig applikation RAID-5- datalagring;

RAID-6 används där det helt enkelt är läskigt eller det finns ett verkligt hot om dödsfall för flera diskar i arrayen samtidigt. I praktiken är det ganska sällsynt, främst bland paranoida människor;

RAID-10- används där det är nödvändigt att arbeta snabbt och tillförlitligt. Även den huvudsakliga användningsriktningen RAID-10är filservrar och databasservrar.

Återigen, om vi förenklar det ytterligare, kommer vi till slutsatsen att där det inte finns något stort och omfattande arbete med filer, är det tillräckligt RAID-1- operativsystem, AD, TS, mail, proxy, etc. Om seriöst arbete med filer krävs: RAID-5 eller RAID-10.

Den idealiska lösningen för en databasserver är en maskin med sex fysiska diskar, varav två är kombinerade till en spegel RAID-1 och operativsystemet är installerat på det, och de återstående fyra kombineras till RAID-10 för snabb och tillförlitlig databehandling.

Om du, efter att ha läst allt ovan, bestämmer dig för att installera det på dina servrar RAID-arrayer, men vet inte hur man gör det och var man ska börja - kontakta oss! - vi hjälper dig att välja nödvändig utrustning, samt utföra installationsarbeten för implementering RAID-arrayer.

Alla moderna moderkort är utrustade med en integrerad RAID-kontroller, och toppmodellerna har till och med flera integrerade RAID-kontroller. I vilken utsträckning integrerade RAID-kontroller efterfrågas av hemanvändare är en separat fråga. Modernt i alla fall moderkort ger användaren möjligheten att skapa en RAID-array med flera diskar. Men inte alla hemanvändare vet hur man skapar en RAID-array, vilken arraynivå man ska välja, och har i allmänhet liten aning om för- och nackdelarna med att använda RAID-arrayer.
I den här artikeln kommer vi att ge korta rekommendationer om hur du skapar RAID-arrayer på hemdatorer och använder ett specifikt exempel för att visa hur du självständigt kan testa prestandan hos en RAID-array.

Skapelsens historia

Begreppet "RAID array" dök upp första gången 1987, när de amerikanska forskarna Patterson, Gibson och Katz från University of California Berkeley i sin artikel "A Case for Redundant Arrays of Inexpensive Discs, RAID" beskrev hur man på så sätt kan kombinera flera billiga hårddiskar till en logisk enhet så att den resulterande kapaciteten och prestanda hos systemet ökas, och fel på enskilda enheter leder inte till fel på hela systemet.

Mer än 20 år har gått sedan denna artikel publicerades, men tekniken för att bygga RAID-arrayer har inte förlorat sin relevans idag. Det enda som har förändrats sedan dess är avkodningen av RAID-akronymen. Faktum är att RAID-arrayer från början inte byggdes på billiga diskar alls, så ordet Inexpensive (billigt) ändrades till Independent (oberoende), vilket var mer sant.

Funktionsprincip

Så, RAID är en redundant array av oberoende diskar (Redundant Arrays of Independent Discs), som har till uppgift att säkerställa feltolerans och öka prestanda. Feltolerans uppnås genom redundans. Det vill säga att en del av diskutrymmeskapaciteten tilldelas för officiella ändamål och blir oåtkomlig för användaren.

Ökad prestanda för diskundersystemet säkerställs genom samtidig drift av flera diskar, och i denna mening, ju fler diskar i arrayen (upp till en viss gräns), desto bättre.

Den gemensamma driften av diskar i en array kan organiseras med antingen parallell eller oberoende åtkomst. Med parallell åtkomst är diskutrymmet uppdelat i block (remsor) för inspelning av data. På liknande sätt är information som ska skrivas till disk uppdelad i samma block. Vid skrivning skrivs enskilda block till olika diskar, och flera block skrivs till olika diskar samtidigt, vilket leder till ökad prestanda i skrivoperationer. Den nödvändiga informationen läses också i separata block samtidigt från flera diskar, vilket också ökar prestandan i proportion till antalet diskar i arrayen.

Det bör noteras att parallellaccessmodellen implementeras endast om storleken på dataskrivbegäran är större än storleken på själva blocket. Annars är parallell inspelning av flera block nästan omöjlig. Låt oss föreställa oss en situation där storleken på ett enskilt block är 8 KB och storleken på en begäran om att skriva data är 64 KB. I det här fallet skärs källinformationen i åtta block om 8 KB vardera. Om du har en array med fyra diskar kan du skriva fyra block, eller 32 KB, åt gången. Uppenbarligen, i det övervägda exemplet, kommer skriv- och läshastigheterna att vara fyra gånger högre än när man använder en enda disk. Detta är bara sant för en ideal situation, men begäransstorleken är inte alltid en multipel av blockstorleken och antalet diskar i arrayen.

Om storleken på den inspelade datan är mindre än blockstorleken, implementeras en fundamentalt annorlunda modell - oberoende åtkomst. Dessutom kan denna modell också användas när storleken på data som skrivs är större än storleken på ett block. Med oberoende åtkomst skrivs all data från en enda begäran till en separat disk, det vill säga situationen är identisk med att arbeta med en disk. Fördelen med den oberoende åtkomstmodellen är att om flera skriv-(läs-) förfrågningar kommer samtidigt, kommer de alla att exekveras på separata diskar oberoende av varandra. Denna situation är typisk för till exempel servrar.

I enlighet med olika typer tillgång finns och olika typer RAID-arrayer, som vanligtvis kännetecknas av RAID-nivåer. Förutom typen av åtkomst skiljer sig RAID-nivåerna i hur de tar emot och genererar redundant information. Redundant information kan antingen placeras på en dedikerad disk eller distribueras mellan alla diskar. Det finns många sätt att generera denna information. Den enklaste av dem är fullständig duplicering (100 procent redundans), eller spegling. Dessutom används felkorrigeringskoder samt paritetsberäkningar.

RAID-nivåer

För närvarande finns det flera RAID-nivåer som kan anses vara standardiserade - dessa är RAID 0, RAID 1, RAID 2, RAID 3, RAID 4, RAID 5 och RAID 6.

Olika kombinationer av RAID-nivåer används också, vilket gör att du kan kombinera deras fördelar. Vanligtvis är detta en kombination av någon typ av feltolerant nivå och en nollnivå som används för att förbättra prestandan (RAID 1+0, RAID 0+1, RAID 50).

Observera att alla moderna RAID-kontroller stöder funktionen JBOD (Just a Bench Of Disks), som inte är avsedd för att skapa arrayer - den ger möjlighet att ansluta enskilda diskar till RAID-kontrollern.

Det bör noteras att de RAID-kontroller som är integrerade på moderkort för hemdatorer inte stöder alla RAID-nivåer. RAID-kontroller med dubbla portar stöder bara nivåerna 0 och 1, medan RAID-kontroller med fler portar (till exempel 6-ports RAID-kontrollern integrerad i den södra bryggan av ICH9R/ICH10R-kretsuppsättningen) också stöder nivåerna 10 och 5.

Dessutom, om vi pratar om moderkort baserade på Intel-kretsuppsättningar, implementerar de också Intel Matrix RAID-funktionen, som låter dig skapa hårddiskar x samtidigt RAID-matriser på flera nivåer, som allokerar en del av diskutrymmet för var och en av dem.

RAID 0

RAID-nivå 0 är strängt taget inte en redundant array och ger därför inte tillförlitlig datalagring. Ändå denna nivå används aktivt i fall där det är nödvändigt att säkerställa hög prestanda för diskundersystemet. När man skapar en RAID-nivå 0-array delas information in i block (ibland kallas dessa block ränder), som skrivs till separata diskar, det vill säga ett system med parallell åtkomst skapas (om, naturligtvis, blockstorleken tillåter det ). Genom att tillåta samtidiga I/O från flera diskar ger RAID 0 de snabbaste dataöverföringshastigheterna och maximal diskutrymmeseffektivitet eftersom inget lagringsutrymme krävs för kontrollsummor. Implementeringen av denna nivå är mycket enkel. RAID 0 används främst i områden där snabb överföring av stora mängder data krävs.

RAID 1 (speglad disk)

RAID Level 1 är en uppsättning av två diskar med 100 procent redundans. Det vill säga, data är helt enkelt helt duplicerade (spegelvända), på grund av vilket en mycket hög nivå av tillförlitlighet (liksom kostnad) uppnås. Observera att för att implementera nivå 1 är det inte nödvändigt att först partitionera diskarna och data i block. I det enklaste fallet innehåller två diskar samma information och är en logisk disk. Om en disk misslyckas, utförs dess funktioner av en annan (vilket är helt transparent för användaren). Återställning av en array utförs genom enkel kopiering. Dessutom fördubblar denna nivå hastigheten för att läsa information, eftersom denna operation kan utföras samtidigt från två diskar. Denna typ av informationslagringssystem används främst i de fall då kostnaden för datasäkerhet är mycket högre än kostnaden för att implementera ett lagringssystem.

RAID 5

RAID 5 är en feltolerant diskarray med distribuerad kontrollsummalagring. Vid inspelning delas dataströmmen in i block (ränder) på bytenivå och skrivs samtidigt till alla diskar i arrayen i cyklisk ordning.

Antag att arrayen innehåller n skivor och randstorleken d. För varje del av n–1 ränder, beräknas kontrollsumman sid.

Rand d 1 inspelad på den första skivan, stripe d 2- på tvåan och så vidare upp till randen dn–1, som skrivs till ( n–1):e skivan. Nästa på n-diskkontrollsumma skrivs p n, och processen upprepas cykliskt från den första skivan på vilken remsan skrivs d n.

Inspelningsprocess (n–1) ränder och deras kontrollsumma produceras samtidigt för alla n diskar.

Kontrollsumman beräknas med hjälp av en bitvis exklusiv-eller (XOR) operation applicerad på datablocken som skrivs. Så, om det finns n hårddiskar, d- datablock (remsa), sedan beräknas kontrollsumman med följande formel:

pn=dl d 2 ... d 1–1.

Om någon disk misslyckas kan data på den återställas med hjälp av kontrolldata och data som finns kvar på arbetsdiskarna.

Som en illustration, betrakta block med fyra bitar. Låt det bara finnas fem diskar för att lagra data och registrera kontrollsummor. Om det finns en bitsekvens 1101 0011 1100 1011, uppdelad i block om fyra bitar, är det nödvändigt att utföra följande bitvisa operation för att beräkna kontrollsumman:

1101 0011 1100 1011 = 1001.

Sålunda är kontrollsumman som skrivs till den femte skivan 1001.

Om en av diskarna, till exempel den fjärde, misslyckas, då blocket d 4= 1100 kommer inte att vara tillgängliga vid läsning. Men dess värde kan enkelt återställas med hjälp av kontrollsumman och värdena för de återstående blocken med samma "exklusiva ELLER" -operation:

d4 = dl d 2d 4p5.

I vårt exempel får vi:

d4 = (1101) (0011) (1100) (1011) = 1001.

I fallet med RAID 5 är alla diskar i arrayen lika stora, men den totala kapaciteten för diskundersystemet som är tillgänglig för skrivning blir exakt en disk mindre. Till exempel, om fem diskar är 100 GB stora, är den faktiska storleken på arrayen 400 GB eftersom 100 GB är tilldelat för kontrollinformation.

RAID 5 kan byggas på tre eller fler hårddiskar. När antalet hårddiskar i en array ökar, minskar dess redundans.

RAID 5 har en oberoende åtkomstarkitektur som gör att flera läsningar eller skrivningar kan utföras samtidigt.

RAID 10

RAID nivå 10 är en kombination av nivåerna 0 och 1. Minimikravet för denna nivå är fyra enheter. I en RAID 10-array med fyra enheter kombineras de i par till nivå 0-arrayer, och båda dessa arrayer som logiska enheter kombineras till en nivå 1-array. Ett annat tillvägagångssätt är också möjligt: ​​initialt kombineras diskarna till speglade arrayer av nivå 1, och sedan logiska enheter baserade på dessa arrayer - till en array på nivå 0.

Intel Matrix RAID

De övervägda RAID-arrayerna på nivåerna 5 och 1 används sällan hemma, vilket främst beror på den höga kostnaden för sådana lösningar. Oftast, för hemdatorer, används en nivå 0-array på två diskar. Som vi redan har noterat ger RAID nivå 0 inte säker datalagring, och därför står slutanvändare inför ett val: skapa en snabb men opålitlig RAID nivå 0-array eller, fördubbla kostnaden för diskutrymme, RAID-en nivå 1-array som ger tillförlitlig datalagring, men inte ger några betydande prestandafördelar.

För att lösa detta svåra problem utvecklade Intel Intel Matrix Storage Technology, som kombinerar fördelarna med Tier 0 och Tier 1-arrayer på bara två fysiska diskar. Och för att understryka att vi i det här fallet inte bara talar om en RAID-array, utan om en array som kombinerar både fysiska och logiska diskar, används ordet "matris" i teknikens namn istället för ordet "array". ”.

Så, vad är en tvådisk RAID-matris som använder Intel Matrix Storage-teknik? Grundtanken är att om systemet har flera hårddiskar och ett moderkort med ett Intel-chipset som stöder Intel Matrix Storage Technology så är det möjligt att dela upp diskutrymmet i flera delar som var och en kommer att fungera som en separat RAID-array.

Låt oss titta på ett enkelt exempel på en RAID-matris som består av två diskar på 120 GB vardera. Vilken som helst av diskarna kan delas upp i två logiska diskar, till exempel 40 och 80 GB. Därefter kan två logiska enheter av samma storlek (till exempel 40 GB vardera) kombineras till en RAID nivå 1-matris och de återstående logiska enheterna till en RAID-nivå 0-matris.

I princip, med två fysiska diskar, är det också möjligt att skapa bara en eller två RAID nivå 0-matriser, men det är omöjligt att bara få nivå 1-matriser. Det vill säga om systemet bara har två diskar, då Intel-teknik Matrix Storage låter dig skapa följande typer av RAID-matriser:

  • en nivå 0-matris;
  • två nivå 0-matriser;
  • nivå 0 matris och nivå 1 matris.

Om systemet har tre hårddiskar kan följande typer av RAID-matriser skapas:

  • en nivå 0-matris;
  • en nivå 5-matris;
  • två nivå 0-matriser;
  • två nivå 5-matriser;
  • nivå 0 matris och nivå 5 matris.

Om systemet har fyra hårddiskar är det dessutom möjligt att skapa en RAID-matris på nivå 10, samt kombinationer av nivå 10 och nivå 0 eller 5.

Från teori till praktik

Om vi ​​pratar om hemdatorer är de mest populära och populära RAID-arrayer på nivåerna 0 och 1. Användningen av RAID-arrayer med tre eller fler diskar i hemdatorer är snarare ett undantag från regeln. Detta beror på det faktum att, å ena sidan, kostnaden för RAID-arrayer ökar i proportion till antalet inblandade diskar, och å andra sidan, för hemdatorer, är kapaciteten för diskarrayen av primär betydelse och inte dess prestanda och tillförlitlighet.

Därför kommer vi i framtiden att överväga RAID-nivåerna 0 och 1 baserat på endast två diskar. Målet med vår forskning kommer att vara att jämföra prestanda och funktionalitet hos RAID-arrayer på nivåerna 0 och 1, skapade på basis av flera integrerade RAID-kontroller, samt att studera beroendet av RAID-arrayens hastighetsegenskaper på stripe storlek.

Faktum är att även om läs- och skrivhastigheten teoretiskt sett bör fördubblas när man använder en RAID-nivå 0-matris, är ökningen av hastighetsegenskaperna i praktiken mycket mindre blygsam och den varierar för olika RAID-kontroller. Detsamma gäller för en RAID nivå 1-array: trots att läshastigheten teoretiskt sett borde fördubblas, är den i praktiken inte så smidig.

För vår RAID-kontrollerjämförelsetestning använde vi moderkortet Gigabyte GA-EX58A-UD7. Denna tavla är baserad på Intel chipset X58 Express med ICH10R southbridge, som har en integrerad RAID-kontroller för sex SATA II-portar, som stödjer organisationen av RAID-arrayer på nivåerna 0, 1, 10 och 5 med Intel Matrix RAID-funktionen. Dessutom integrerar Gigabyte GA-EX58A-UD7-kortet GIGABYTE SATA2 RAID-kontrollern, som har två SATA II-portar med möjlighet att organisera RAID-arrayer på nivåerna 0, 1 och JBOD.

Också på GA-EX58A-UD7-kortet finns en integrerad SATA III-kontroller Marvell 9128, på grundval av vilken två SATA III-portar är implementerade med förmågan att organisera RAID-arrayer på nivåerna 0, 1 och JBOD.

Således har Gigabyte GA-EX58A-UD7-kortet tre separata RAID-kontroller, på basis av vilka du kan skapa RAID-arrayer på nivåerna 0 och 1 och jämföra dem med varandra. Låt oss komma ihåg att SATA III-standarden är bakåtkompatibel med SATA II-standarden, därför kan du, baserat på Marvell 9128-kontrollern, som stöder enheter med SATA III-gränssnittet, också skapa RAID-arrayer med enheter med SATA II-gränssnittet.

Teststället hade följande konfiguration:

  • processor - Intel core i7-965 Extreme Edition;
  • moderkort - Gigabyte GA-EX58A-UD7;
  • BIOS-version - F2a;
  • hårddiskar - två Western Digital WD1002FBYS-enheter, en Western Digital WD3200AAKS-enhet;
  • integrerade RAID-kontroller:
  • ICH10R,
  • GIGABYTE SATA2,
  • Marvell 9128;
  • minne - DDR3-1066;
  • minneskapacitet - 3 GB (tre moduler på 1024 MB vardera);
  • minnesdriftläge - DDR3-1333, trekanalsdriftläge;
  • grafikkort - Gigabyte GeForce GTS295;
  • strömförsörjning - Tagan 1300W.

Testning utfördes under styrning av operativsystemet Microsoft Windows 7 Ultimate (32-bitars). Operativsystemet installerades på en Western Digital WD3200AAKS-enhet, som var ansluten till porten på SATA II-kontrollern integrerad i ICH10R sydbryggan. RAID-arrayen monterades på två WD1002FBYS-enheter med ett SATA II-gränssnitt.

För att mäta hastighetsegenskaperna för de skapade RAID-arrayerna använde vi verktyget IOmeter, som är industristandarden för att mäta prestanda hos disksystem.

Verktyget IOmeter

Eftersom vi avsåg den här artikeln som en slags användarguide för att skapa och testa RAID-arrayer, skulle det vara logiskt att börja med en beskrivning av verktyget IOmeter (Input/Output meter), som, som vi redan har noterat, är ett slags industristandard för mätning av prestanda hos disksystem. Detta verktygär gratis och kan laddas ner från http://www.iometer.org.

Verktyget IOmeter är ett syntetiskt test och låter dig arbeta med hårddiskar som inte är partitionerade i logiska partitioner, så att du kan testa enheter oavsett filstruktur och minska inflytandet från operativsystemet till noll.

När du testar är det möjligt att skapa en specifik åtkomstmodell, eller "mönster", som låter dig specificera utförandet av specifika operationer av hårddisken. Vid skapande specifik modellåtkomst tillåts att ändra följande parametrar:

  • storleken på begäran om dataöverföring;
  • slumpmässig/sekventiell fördelning (i %);
  • distribution av läs-/skrivoperationer (i %);
  • Antalet individuella I/O-operationer som körs parallellt.

Verktyget IOmeter kräver ingen installation på en dator och består av två delar: IOmeter själv och Dynamo.

IOmeter är en övervakningsdel av programmet med användardefinierad grafiskt gränssnitt, så att du kan göra alla nödvändiga inställningar. Dynamo är en lastgenerator som inte har något gränssnitt. Varje gång du kör IOmeter.exe startar laddningsgeneratorn för Dynamo.exe automatiskt.

För att börja arbeta med programmet IOmeter, kör bara filen IOmeter.exe. Detta öppnar huvudfönstret för IOmeter-programmet (fig. 1).

Ris. 1. Huvudfönster för IOmeter-programmet

Det bör noteras att IOmeter-verktyget låter dig testa inte bara lokala disksystem (DAS), utan också nätverksenheter(NAS). Den kan till exempel användas för att testa prestandan hos en servers diskdelsystem (filserver) med hjälp av flera nätverksklienter. Därför hänför sig några av bokmärkena och verktygen i IOmeter-verktygsfönstret specifikt till nätverksinställningar program. Det är tydligt att när vi testar diskar och RAID-arrayer kommer vi inte att behöva dessa programfunktioner, och därför kommer vi inte att förklara syftet med alla flikar och verktyg.

Så, när du startar IOmeter-programmet, kommer en trädstruktur för alla körbelastningsgeneratorer (Dynamo-instanser) att visas på vänster sida av huvudfönstret (i Topology-fönstret). Varje körande Dynamo load generator-instans kallas en manager. Dessutom är IOmeter-programmet flertrådat och varje enskild tråd som körs på en Dynamo load generator-instans kallas en Worker. Antalet arbetande arbetare motsvarar alltid antalet logiska processorkärnor.

I vårt exempel använder vi bara en dator med en fyrkärnig processor som stöder Hyper-Threading-teknik, så endast en manager (en instans av Dynamo) och åtta (enligt antalet logiska processorkärnor) arbetare lanseras.

För att testa diskar i det här fönstret behöver du faktiskt inte ändra eller lägga till något.

Om du väljer namnet på datorn med musen i trädstrukturen för körande Dynamo-instanser, sedan i fönstret Mål på fliken Diskmål Alla diskar, diskarrayer och andra enheter (inklusive nätverksenheter) installerade på datorn kommer att visas. Det här är enheterna som IOmeter kan arbeta med. Media kan vara märkta med gult eller blått. Logiska partitioner av media är markerade i gult och fysiska enheter utan logiska partitioner skapade på dem är markerade med blått. Ett logiskt avsnitt kan vara överstruket eller inte. Faktum är att för att programmet ska fungera med en logisk partition måste det först förberedas genom att skapa en speciell fil på den, lika stor som kapaciteten för hela den logiska partitionen. Om den logiska partitionen är överstruken betyder det att sektionen ännu inte är förberedd för testning (den kommer att förberedas automatiskt i det första teststeget), men om sektionen inte är överstruken betyder det att en fil redan har blivit skapad på den logiska partitionen, helt redo för testning .

Observera att, trots den stödda förmågan att arbeta med logiska partitioner, är det optimalt att testa enheter som inte är partitionerade i logiska partitioner. Du kan radera en logisk diskpartition väldigt enkelt - genom en snap-in Diskhantering. För att komma åt det, högerklicka bara på ikonen Dator på skrivbordet och välj objektet i menyn som öppnas Hantera. I fönstret som öppnas Datorhantering på vänster sida måste du välja objektet Lagring, och i det - Diskhantering. Efter det, på höger sida av fönstret Datorhantering Alla anslutna enheter kommer att visas. Genom att högerklicka på till önskad disk och välja objektet i menyn som öppnas Ta bort volym..., kan du ta bort en logisk partition på en fysisk disk. Låt oss påminna dig om att när du tar bort en logisk partition från en disk raderas all information på den utan möjlighet till återställning.

I allmänhet kan du med hjälp av IOmeter-verktyget bara testa tomma diskar eller diskarrayer. Det vill säga, du kan inte testa en disk eller diskarray där operativsystemet är installerat.

Så låt oss återgå till beskrivningen av IOmeter-verktyget. I fönstret Mål på fliken Diskmål du måste välja den disk (eller diskarray) som ska testas. Därefter måste du öppna fliken Åtkomstspecifikationer(Fig. 2), där det kommer att vara möjligt att bestämma testscenariot.

Ris. 2. Öppna fliken Specifikationer i IOmeter-verktyget

I fönstret Globala åtkomstspecifikationer Det finns en lista över fördefinierade testskript som kan tilldelas starthanteraren. Vi kommer dock inte att behöva dessa skript, så alla kan väljas och raderas (det finns en knapp för detta Radera). Efter det klickar du på knappen Ny för att skapa ett nytt testskript. I fönstret som öppnas Redigera åtkomstspecifikation Du kan definiera uppstartsscenariot för en disk eller RAID-array.

Antag att vi vill ta reda på beroendet av hastigheten för sekventiell (linjär) läsning och skrivning på storleken på blocket för begäran om dataöverföring. För att göra detta måste vi generera en sekvens av startskript i sekventiellt läsläge vid olika blockstorlekar, och sedan en sekvens av startskript i sekventiellt skrivläge vid olika blockstorlekar. Vanligtvis väljs blockstorlekar som en serie, där varje medlem är dubbelt så stor som den föregående, och den första medlemmen i denna serie är 512 byte. Det vill säga blockstorlekarna är som följer: 512 byte, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 KB, 1 MB. Det är ingen mening att göra blockstorleken större än 1 MB för sekventiella operationer, eftersom med så stora datablockstorlekar ändras inte hastigheten för sekventiella operationer.

Så låt oss skapa ett laddningsskript i sekventiellt läsläge för ett block på 512 byte.

I fält namn fönster Redigera åtkomstspecifikation ange namnet på laddningsskriptet. Till exempel, Sequential_Read_512. Nästa i fältet Storlek på överföringsbegäran vi ställer in datablockstorleken till 512 byte. Skjutreglage Procent slumpmässig/sekventiell distribution(den procentuella förhållandet mellan sekventiella och selektiva operationer) vi flyttar hela vägen till vänster så att alla våra operationer bara är sekventiella. Tja, reglaget , som ställer in procentandelen mellan läs- och skrivoperationer, förskjuts hela vägen till höger så att alla våra operationer är skrivskyddade. Andra parametrar i fönstret Redigera åtkomstspecifikation behöver inte ändras (fig. 3).

Ris. 3. Fönstret Redigera åtkomstspecifikation för att skapa ett sekventiellt läsladdningsskript
med en datablockstorlek på 512 byte

Klicka på knappen Ok, och det första skriptet vi skapade visas i fönstret Globala åtkomstspecifikationer på fliken Åtkomstspecifikationer IOmeter-verktyg.

På samma sätt måste du skapa skript för de återstående datablocken, men för att göra ditt arbete enklare är det lättare att inte skapa skriptet på nytt varje gång genom att klicka på knappen Ny, och efter att ha valt det senast skapade scenariot, tryck på knappen Redigera Kopiera(redigera kopia). Efter detta öppnas fönstret igen Redigera åtkomstspecifikation med inställningarna för vårt senast skapade skript. Det räcker med att bara ändra namnet och storleken på blocket. Efter att ha genomfört en liknande procedur för alla andra blockstorlekar kan du börja skapa skript för sekventiell inspelning, vilket görs på exakt samma sätt, förutom att skjutreglaget Procent läs/skrivfördelning, som ställer in procentandelen mellan läs- och skrivoperationer, måste flyttas hela vägen till vänster.

På samma sätt kan du skapa manus för selektivt skrivande och läsning.

När alla skript är klara måste de tilldelas nedladdningshanteraren, det vill säga ange vilka skript som kommer att fungera med Dynamo.

För att göra detta kontrollerar vi igen vad som finns i fönstret Topologi Namnet på datorn (det vill säga lasthanteraren på den lokala datorn) är markerat, och inte den enskilda arbetaren. Detta säkerställer att belastningsscenarier kommer att tilldelas alla arbetare på en gång. Nästa i fönstret Globala åtkomstspecifikationer välj alla laddningsscenarier vi har skapat och tryck på knappen Lägg till. Alla valda laddningsscenarier kommer att läggas till i fönstret (Fig. 4).

Ris. 4. Tilldela de skapade lastscenarierna till lasthanteraren

Efter detta måste du gå till fliken Testuppsättning(Fig. 5), där du kan ställa in exekveringstiden för varje skript vi skapade. För att göra detta i en grupp Körtid ställ in exekveringstiden för laddningsscenariot. Det räcker med att ställa in tiden på 3 minuter.

Ris. 5. Ställa in exekveringstiden för laddningsscenariot

Dessutom på fältet Testbeskrivning Du måste ange namnet på hela testet. I princip har den här fliken en hel del andra inställningar, men de behövs inte för våra uppgifter.

När alla nödvändiga inställningar har gjorts rekommenderas det att spara det skapade testet genom att klicka på knappen med bilden av en diskett i verktygsfältet. Testet sparas med tillägget *.icf. Därefter kan du använda det skapade laddningsscenariot genom att inte köra filen IOmeter.exe, utan den sparade filen med tillägget *.icf.

Nu kan du börja testa direkt genom att klicka på knappen med en flagga. Du kommer att bli ombedd att ange namnet på filen som innehåller testresultaten och välja dess plats. Testresultaten sparas i en CSV-fil som sedan enkelt kan exporteras till Excel och genom att sätta ett filter på den första kolumnen välj önskad data med testresultat.

Under testning kan mellanliggande resultat ses på fliken Resultatvisning, och du kan bestämma vilket belastningsscenario de tillhör på fliken Åtkomstspecifikationer. I fönstret Tilldelad åtkomstspecifikation ett pågående skript visas i grönt, färdiga skript i rött och ej körda skript i blått.

Så vi tittade på de grundläggande teknikerna för att arbeta med verktyget IOmeter, som kommer att krävas för att testa enskilda diskar eller RAID-arrayer. Observera att vi inte har pratat om alla funktioner i IOmeter-verktyget, men en beskrivning av alla dess funktioner ligger utanför ramen för denna artikel.

Skapa en RAID-array baserad på GIGABYTE SATA2-kontrollern

Så vi börjar skapa en RAID-array baserad på två diskar med hjälp av GIGABYTE SATA2 RAID-kontrollern integrerad på kortet. Givetvis producerar Gigabyte inte själva chips, och därför döljer sig under GIGABYTE SATA2-chippet ett ommärkt chip från ett annat företag. Som du kan ta reda på från drivrutinens INF-fil talar vi om en JMicron JMB36x-seriekontroller.

Åtkomst till kontrollenhetens inställningsmeny är möjlig vid systemets startskede, för vilket du måste trycka på tangentkombinationen Ctrl+G när motsvarande inskription visas på skärmen. Naturligtvis först in BIOS-inställningar du måste definiera driftsläget för två SATA-portar som tillhör GIGABYTE SATA2-kontrollern som RAID (annars kommer åtkomst till RAID-array-konfiguratormenyn inte att vara möjlig).

Inställningsmenyn för GIGABYTE SATA2 RAID-kontrollern är ganska enkel. Som vi redan har noterat är styrenheten dubbla portar och låter dig skapa RAID-arrayer på nivå 0 eller 1. Genom kontrollenhetens inställningsmeny kan du ta bort eller skapa en RAID-array. När du skapar en RAID-array kan du ange dess namn, välja arraynivå (0 eller 1), ställa in stripe-storleken för RAID 0 (128, 84, 32, 16, 8 eller 4K) och även bestämma storleken på array.

När arrayen väl har skapats är ändringar i den inte längre möjliga. Det vill säga, du kan inte senare ändra för den skapade arrayen, till exempel dess nivå eller randstorlek. För att göra detta måste du först ta bort arrayen (med förlust av data) och sedan skapa den igen. Egentligen är detta inte unikt för GIGABYTE SATA2-kontrollern. Oförmågan att ändra parametrarna för skapade RAID-arrayer är en funktion hos alla kontroller, vilket följer av själva principen att implementera en RAID-array.

När en array baserad på GIGABYTE SATA2-kontrollern har skapats kan aktuell information om den ses med hjälp av GIGABYTE RAID Configurer-verktyget, som installeras automatiskt tillsammans med drivrutinen.

Skapa en RAID-array baserad på Marvell 9128-kontrollern

Konfigurering av Marvell 9128 RAID-kontrollern är endast möjlig genom inställningarna Board BIOS Gigabyte GA-EX58A-UD7. Generellt sett måste det sägas att Marvell 9128-kontrollerns konfiguratormeny är något grov och kan vilseleda oerfarna användare. Vi kommer dock att prata om dessa mindre brister lite senare, men för närvarande kommer vi att överväga de viktigaste funktionalitet Marvell 9128 kontroller.

Så även om den här kontrollern stöder SATA III-enheter, är den också helt kompatibel med SATA II-enheter.

Med Marvell 9128-kontrollern kan du skapa en RAID-array med nivåerna 0 och 1 baserat på två diskar. För en nivå 0-matris kan du ställa in randstorleken till 32 eller 64 KB och även ange namnet på matrisen. Dessutom finns det ett alternativ som Gigabyte Rounding, som behöver förklaras. Trots namnet, som liknar namnet på tillverkaren, har Gigabyte Rounding-funktionen inget med det att göra. Dessutom är den inte på något sätt kopplad till RAID-nivå 0-arrayen, även om den i kontrollerinställningarna kan definieras specifikt för en array på denna nivå. Det här är faktiskt den första av dessa brister i Marvell 9128-kontrollerkonfiguratorn som vi nämnde. Funktionen Gigabyte Rounding definieras endast för RAID Level 1. Den låter dig använda två enheter (till exempel från olika tillverkare eller olika modeller), vars kapacitet skiljer sig något från varandra. Funktionen Gigabyte Rounding ställer exakt in skillnaden i storlekarna på de två diskarna som används för att skapa en RAID nivå 1-array. I Marvell 9128-kontrollern låter Gigabyte Rounding-funktionen dig ställa in skillnaden i storleken på diskarna till 1 eller 10 GB.

En annan brist i Marvell 9128-kontrollerkonfiguratorn är att när man skapar en RAID-nivå 1-array har användaren möjligheten att välja bandstorlek (32 eller 64 KB). Begreppet stripe är dock inte definierat alls för RAID nivå 1.

Skapa en RAID-array baserad på styrenheten integrerad i ICH10R

RAID-kontrollern som är integrerad i ICH10R sydbryggan är den vanligaste. Som redan nämnts har denna RAID-kontroller 6-portar och stöder inte bara skapandet av RAID 0- och RAID 1-arrayer, utan även RAID 5 och RAID 10.

Åtkomst till kontrollenhetens inställningsmeny är möjlig vid systemets startskede, för vilket du måste trycka på tangentkombinationen Ctrl + I när motsvarande inskription visas på skärmen. Naturligtvis, först i BIOS-inställningarna bör du definiera driftläget för denna styrenhet som RAID (annars kommer åtkomst till RAID-array-konfiguratormenyn att vara omöjlig).

Inställningsmenyn för RAID-kontrollern är ganska enkel. Genom kontrollinställningsmenyn kan du ta bort eller skapa en RAID-array. När du skapar en RAID-array kan du ange dess namn, välja arraynivå (0, 1, 5 eller 10), ställa in randstorleken för RAID 0 (128, 84, 32, 16, 8 eller 4K) och även bestämma storleken på arrayen.

Jämförelse av RAID-prestanda

För att testa RAID-arrayer med hjälp av verktyget IOmeter skapade vi scenarier för sekventiell läsning, sekventiell skrivning, selektiv läsning och selektiv skrivbelastning. Datablockstorlekarna i varje laddningsscenario var följande: 512 byte, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 KB, 1 MB.

På var och en av RAID-kontrollerna skapade vi en RAID 0-array med alla tillåtna stripe-storlekar och en RAID 1-array. Dessutom, för att kunna utvärdera prestandavinsten från att använda en RAID-array, testade vi också en enda disk på var och en av RAID-kontrollerna.

Så låt oss titta på resultaten av våra tester.

GIGABYTE SATA2-kontroller

Låt oss först och främst titta på resultaten av att testa RAID-arrayer baserade på GIGABYTE SATA2-kontrollern (Fig. 6-13). I allmänhet visade sig kontrollern vara bokstavligen mystisk, och dess prestanda var helt enkelt en besvikelse.

Ris. 6. Hastighet sekventiell
och selektiva diskoperationer
Western Digital WD1002FBYS

Ris. 7. Hastighet sekventiell

med en randstorlek på 128 KB
(GIGABYTE SATA2-kontroller)

Ris. 12. Seriell hastighet
och selektiva operationer för RAID 0
med en randstorlek på 4 KB
(GIGABYTE SATA2-kontroller)

Ris. 13. Seriell hastighet
och selektiva operationer
för RAID 1 (GIGABYTE SATA2-kontroller)

Om du tittar på hastighetsegenskaperna för en disk (utan en RAID-array) är den maximala sekventiella läshastigheten 102 MB/s och den maximala sekventiella skrivhastigheten är 107 MB/s.

När du skapar en RAID 0-array med en stripestorlek på 128 KB ökar den maximala sekventiella läs- och skrivhastigheten till 125 MB/s, en ökning med cirka 22 %.

Med randstorlekar på 64, 32 eller 16 KB är den maximala sekventiella läshastigheten 130 MB/s och den maximala sekventiella skrivhastigheten är 141 MB/s. Det vill säga, med de specificerade randstorlekarna ökar den maximala sekventiella läshastigheten med 27 % och den maximala sekventiella skrivhastigheten ökar med 31 %.

Faktum är att detta inte räcker för en nivå 0-array, och jag skulle vilja att den maximala hastigheten för sekventiella operationer skulle vara högre.

Med en randstorlek på 8 KB förblir den maximala hastigheten för sekventiella operationer (läsning och skrivning) ungefär densamma som med en randstorlek på 64, 32 eller 16 KB, men det finns uppenbara problem med selektiv läsning. När datablockstorleken ökar upp till 128 KB, ökar den selektiva läshastigheten (som den borde) i proportion till datablockstorleken. Men när datablockstorleken är mer än 128 KB, sjunker den selektiva läshastigheten till nästan noll (till ungefär 0,1 MB/s).

Med en randstorlek på 4 KB sjunker inte bara den selektiva läshastigheten när blockstorleken är mer än 128 KB, utan även den sekventiella läshastigheten när blockstorleken är mer än 16 KB.

Att använda en RAID 1-array på en GIGABYTE SATA2-kontroller ändrar inte den sekventiella läshastigheten nämnvärt (jämfört med en enda enhet), men den maximala sekventiella skrivhastigheten reduceras till 75 MB/s. Kom ihåg att för en RAID 1-array bör läshastigheten öka och skrivhastigheten bör inte minska jämfört med läs- och skrivhastigheten för en enskild disk.

Baserat på resultaten av att testa GIGABYTE SATA2-kontrollern kan endast en slutsats dras. Det är vettigt att använda denna kontroller för att skapa RAID 0- och RAID 1-arrayer endast om alla andra RAID-kontroller (Marvell 9128, ICH10R) redan används. Även om det är ganska svårt att föreställa sig en sådan situation.

Marvell 9128 kontroller

Marvell 9128-kontrollern visade mycket högre hastighetsegenskaper jämfört med GIGABYTE SATA2-kontrollern (fig. 14-17). Faktum är att skillnaderna uppträder även när styrenheten arbetar med en disk. Om den maximala sekventiella läshastigheten för GIGABYTE SATA2-styrenheten är 102 MB/s och uppnås med en datablockstorlek på 128 KB, är den maximala sekventiella läshastigheten för Marvell 9128-styrenheten 107 MB/s och uppnås med en data blockstorlek på 16 KB.

När du skapar en RAID 0-matris med randstorlekar på 64 och 32 KB, ökar den maximala sekventiella läshastigheten till 211 MB/s och sekventiell skrivhastighet ökar till 185 MB/s. Det vill säga, med de specificerade randstorlekarna ökar den maximala sekventiella läshastigheten med 97 % och den maximala sekventiella skrivhastigheten ökar med 73 %.

Det finns ingen signifikant skillnad i hastighetsprestandan för en RAID 0-array med en stripestorlek på 32 och 64 KB, men användningen av en 32 KB stripe är mer att föredra, eftersom i detta fall hastigheten för sekventiella operationer med en blockstorlek på mindre än 128 KB blir något högre.

När du skapar en RAID 1-array på en Marvell 9128-kontroller förblir den maximala sekventiella drifthastigheten praktiskt taget oförändrad jämfört med en enda disk. Så om den maximala hastigheten för sekventiella operationer för en enda disk är 107 MB/s, är det för RAID 1 105 MB/s. Observera också att för RAID 1 försämras selektiv läsprestanda något.

I allmänhet bör det noteras att Marvell 9128-kontrollern har bra hastighetsegenskaper och kan användas både för att skapa RAID-arrayer och för att ansluta enstaka diskar till den.

Styrenhet ICH10R

RAID-styrenheten inbyggd i ICH10R visade sig vara den bästa prestanda av alla de vi testade (Figur 18-25). När man arbetar med en enda enhet (utan att skapa en RAID-array) är dess prestanda praktiskt taget densamma som för Marvell 9128. Den maximala sekventiella läs- och skrivhastigheten är 107 MB och uppnås med en datablockstorlek på 16 KB.

Ris. 18. Seriell hastighet
och selektiva operationer
för Western Digital WD1002FBYS disk (ICH10R controller)

Om vi ​​talar om RAID 0-arrayen på ICH10R-kontrollern, beror den maximala sekventiella läs- och skrivhastigheten inte på bandstorleken och är 212 MB/s. Endast storleken på datablocket vid vilken den maximala sekventiella läs- och skrivhastigheten uppnås beror på randstorleken. Testresultat visar att för RAID 0 baserat på ICH10R-kontrollern är det optimalt att använda en 64 KB stripe. I detta fall uppnås den maximala sekventiella läs- och skrivhastigheten med en datablockstorlek på endast 16 KB.

Så, för att sammanfatta, betonar vi återigen att RAID-kontrollern inbyggd i ICH10R avsevärt överträffar alla andra integrerade RAID-kontroller i prestanda. Och med tanke på att den också har större funktionalitet, är det optimalt att använda just den här kontrollern och helt enkelt glömma existensen av alla de andra (om inte, naturligtvis, systemet använder SATA-enheter III).

Om du har stött på eller förväntar dig att snart stöta på något av följande problem på din dator:

  • Det finns uppenbarligen inte tillräckligt med fysisk kapacitet på hårddisken som en enda logisk enhet. Oftast uppstår detta problem när man arbetar med stora filer (video, grafik, databaser);
  • Hårddiskens prestanda räcker uppenbarligen inte till. Oftast uppstår detta problem när man arbetar med icke-linjära videoredigeringssystem eller när ett stort antal användare samtidigt kommer åt filer på hårddisken;
  • Hårddiskens tillförlitlighet saknas helt klart. Oftast uppstår detta problem när det är nödvändigt att arbeta med data som aldrig får gå förlorade eller som alltid måste vara tillgänglig för användaren. En sorglig erfarenhet visar att även den mest pålitliga utrustningen ibland går sönder och som regel i det mest olämpliga ögonblicket.

Att skapa ett RAID-system på din dator kan lösa dessa och några andra problem.

Vad är "RAID"?

1987 publicerade Patterson, Gibson och Katz vid University of California, Berkeley, "A Case for Redundant Arrays of Inexpensive Disks (RAID)." Den här artikeln beskrev olika typer av diskmatriser, förkortat RAID - Redundant Array of Independent (eller Inexpensive) Disks (redundant matris av oberoende (eller billiga) diskenheter). RAID bygger på följande idé: genom att kombinera flera små och/eller billiga diskenheter till en array kan du få ett system som är överlägset i kapacitet, hastighet och tillförlitlighet jämfört med de dyraste diskenheterna. Ovanpå det, ur en dators synvinkel, ser ett sådant system ut som en enda hårddisk.

Det är känt att medeltiden mellan fel i en enhetsuppsättning är lika med medeltiden mellan fel på en enda enhet dividerad med antalet enheter i matrisen. Som ett resultat är arrayens medeltid mellan felen för kort för många applikationer. En diskarray kan dock göras tolerant mot fel på en enda enhet på flera sätt.

I den här artikeln definierades fem typer (nivåer) av diskarrayer: RAID-1, RAID-2, ..., RAID-5. Varje typ gav feltolerans såväl som olika fördelar jämfört med en enda enhet. Tillsammans med dessa fem typer har RAID-0-diskarrayen, som INTE är redundant, också vunnit popularitet.

Vilka RAID-nivåer finns det och vilken ska du välja?

RAID-0. Typiskt definierad som en icke-redundant grupp av diskenheter utan paritet. RAID-0 kallas ibland "Striping" baserat på hur informationen placeras på de enheter som ingår i arrayen:

Eftersom RAID-0 inte har redundans leder fel på en enhet till fel på hela arrayen. Å andra sidan ger RAID-0 maximal dataöverföringshastighet och effektiv användning av diskutrymme. Eftersom RAID-0 inte kräver komplexa matematiska eller logiska beräkningar, är implementeringskostnaderna minimala.

Tillämpningsomfång: ljud- och videoapplikationer som kräver kontinuerlig dataöverföring med hög hastighet, som inte kan tillhandahållas av en enda enhet. Till exempel, forskning utförd av Mylex för att fastställa den optimala disksystemkonfigurationen för en icke-linjär videoredigeringsstation visar att, jämfört med en enda enhet, ger en RAID-0-array med två enheter en 96% ökning i skriv-/läshastighet, av tre enheter - med 143 % (enligt Miro VIDEO EXPERT Benchmark-testet).

RAID-1. Bättre känd som "Mirroring" ("diskspegel") eller ett par diskenheter som innehåller samma information och utgör en logisk disk:

Kör 0Kör 1

Inspelning utförs på båda enheterna i varje par. Däremot kan enheter i ett par utföra samtidiga läsoperationer. Således kan "spegling" fördubbla läshastigheten, men skrivhastigheten förblir oförändrad. RAID-1 har 100 % redundans och ett fel på en enhet leder inte till ett fel i hela arrayen - styrenheten byter helt enkelt läs/skrivoperationer till den återstående enheten.

RAID-1 tillhandahåller högsta hastighet fungerar bland alla typer av redundanta arrayer, särskilt i en miljö med flera användare, men den värsta användningen av diskutrymme. Eftersom RAID-1 inte kräver komplexa matematiska eller logiska beräkningar, är dess implementeringskostnader minimala.

Minsta antal enheter i arrayen är 2.

För att öka skrivhastigheten och säkerställa tillförlitlig datalagring kan flera RAID-1-arrayer i sin tur kombineras till RAID-0. Denna konfiguration kallas "tvånivås" RAID eller RAID-10 (RAID 0+1)

Minsta antal enheter i arrayen är 4.

Tillämpningsomfång: billiga arrayer där det viktigaste är tillförlitligheten för datalagring.

RAID-2. Distribuerar data i sektorstorlekar över en grupp diskenheter. Vissa enheter är dedikerade till ECC-lagring (Error Correction Code). Eftersom de flesta enheter lagrar ECC-koder per sektor som standard, tillhandahåller inte RAID-2 särskilda fördelar jämfört med RAID-3 och används därför praktiskt taget inte.

RAID-3. Som i fallet med RAID-2 distribueras data över ränder av en sektor i storlek, och en av arrayenheterna är allokerad för att lagra paritetsinformation:

RAID-3 förlitar sig på ECC-koder lagrade i varje sektor för att upptäcka fel. Om en av enheterna misslyckas kan informationen som lagras på den återställas genom att beräkna exklusivt ELLER (XOR) med hjälp av informationen på de återstående enheterna. Varje post är vanligtvis fördelad över alla enheter och därför är denna typ av array bra för diskintensiva applikationer. Eftersom varje I/O-operation kommer åt alla diskenheter i arrayen, kan RAID-3 inte utföra flera operationer samtidigt. Därför är RAID-3 bra för enanvändare, single-tasking-miljöer med långa rekord. För att arbeta med korta inspelningar är det nödvändigt att synkronisera rotationen av diskenheterna, eftersom en minskning av utbyteshastigheten annars är oundviklig. Används sällan, pga sämre än RAID-5 när det gäller användning av diskutrymme. Genomförandet kräver betydande kostnader.

RAID-4. RAID-4 är identisk med RAID-3 förutom att randstorleken är mycket större än en sektor. I det här fallet utförs läsningar från en enda enhet (utan att räkna enheten som lagrar paritetsinformation), så flera läsoperationer kan utföras samtidigt. Men eftersom varje skrivoperation måste uppdatera innehållet i paritetsenheten är det inte möjligt att utföra flera skrivoperationer samtidigt. Denna typ av array har inga märkbara fördelar jämfört med en RAID-5 array.

RAID-5. Denna typ av array kallas ibland en "roterande paritetsarray". Den här typen Arrayen övervinner framgångsrikt den inneboende nackdelen med RAID-4 - oförmågan att samtidigt utföra flera skrivoperationer. Denna array, som RAID-4, använder stora ränder, men till skillnad från RAID-4 lagras paritetsinformation inte på en enhet, utan på alla enheter i sin tur:

Skrivoperationer får åtkomst till en enhet med data och en annan enhet med paritetsinformation. Eftersom paritetsinformation för olika ränder lagras på olika enheter, är det omöjligt att utföra flera samtidiga skrivningar endast i de sällsynta fall där antingen dataremsorna eller ränderna med paritetsinformation finns på samma enhet. Ju fler enheter i arrayen, desto mindre ofta sammanfaller platsen för informationen och paritetsränderna.

Användningsområde: pålitliga arrayer med stora volymer. Genomförandet kräver betydande kostnader.

Minsta antal enheter i arrayen är 3.

RAID-1 eller RAID-5?

RAID-5, jämfört med RAID-1, använder diskutrymme mer ekonomiskt, eftersom det för redundans inte lagrar en "kopia" av information, utan ett kontrollnummer. Som ett resultat kan RAID-5 kombinera valfritt antal enheter, varav endast en kommer att innehålla redundant information.

Men högre diskutrymmeseffektivitet kommer på bekostnad av lägre informationsutbyte. När du skriver information till RAID-5 måste paritetsinformationen uppdateras varje gång. För att göra detta måste du bestämma vilka paritetsbitar som har ändrats. Först läses den gamla informationen som ska uppdateras. Denna information XOReds sedan med den nya informationen. Resultatet av denna operation är en bitmask där varje bit =1 betyder att värdet i paritetsinformationen vid motsvarande position måste ersättas. Den uppdaterade paritetsinformationen skrivs sedan till lämplig plats. Därför, för varje programbegäran att skriva information, utför RAID-5 två läsningar, två skrivningar och två XOR-operationer.

Det är en kostnad att använda diskutrymme mer effektivt (lagra ett paritetsblock istället för en kopia av data): ytterligare tid krävs för att generera och skriva paritetsinformation. Detta betyder att skrivhastigheten på RAID-5 är lägre än på RAID-1 med ett förhållande på 3:5 eller till och med 1:3 (dvs skrivhastigheten på RAID-5 är 3/5 till 1/3 av skrivhastigheten RAID-1). På grund av detta är RAID-5 meningslöst att skapa i programvara. De kan inte heller rekommenderas i fall där inspelningshastigheten är kritisk.

Vilken RAID-implementeringsmetod ska du välja – mjukvara eller hårdvara?

Efter att ha läst beskrivningarna av de olika RAID-nivåerna kommer du att märka att det ingenstans nämns några specifika hårdvarukrav som behövs för att implementera RAID. Av vilken vi kan dra slutsatsen att allt som behövs för att implementera RAID är att ansluta det erforderliga antalet diskenheter till styrenheten som finns tillgänglig i datorn och installera speciell programvara på datorn. Detta är sant, men inte helt!

Det är faktiskt möjligt att implementera RAID i programvara. Ett exempel är Microsoft Windows NT 4.0 Server OS, där mjukvaruimplementering av RAID-0, -1 och till och med RAID-5 är möjlig. dock detta beslut bör betraktas som extremt förenklat, vilket inte gör det möjligt att fullt ut realisera kapaciteten hos en RAID-array. Det räcker att notera att med mjukvaruimplementering av RAID, hela bördan av att placera information på diskenheter, beräkna kontrollkoder etc. lägga sig på CPU, vilket naturligtvis inte ökar systemets prestanda och tillförlitlighet. Av samma anledningar finns det praktiskt taget inga servicefunktioner här och alla operationer för att ersätta en felaktig enhet, lägga till en ny enhet, ändra RAID-nivån etc. utförs med fullständig förlust av data och med fullständigt förbud mot att utföra någon annan operationer. Den enda fördelen med mjukvaruimplementering av RAID är dess minimala kostnad.

Mycket fler möjligheter tillhandahålls av hårdvaruimplementering av RAID med hjälp av speciella RAID-kontroller:

  • en specialiserad styrenhet avlastar den centrala processorn avsevärt från RAID-operationer, och styrenhetens effektivitet är mer märkbar ju högre RAID-komplexitetsnivån är;
  • kontroller, som regel, är utrustade med drivrutiner som låter dig skapa RAID för nästan alla populära operativsystem;
  • Styrenhetens inbyggda BIOS och medföljande hanteringsprogram gör att systemadministratören enkelt kan ansluta, koppla ur eller byta ut enheter som ingår i RAID, skapa flera RAID-arrayer, även på olika nivåer, övervaka statusen för diskarrayen, etc. Med ”avancerade” kontroller kan dessa operationer utföras ”on the fly”, d.v.s. utan att stänga av systemenheten. Många operationer kan utföras i " bakgrund", dvs. utan att avbryta pågående arbete och även på distans, d.v.s. från vilken (naturligtvis, om du har tillgång) arbetsplats;
  • kontroller kan utrustas med ett buffertminne ("cache"), i vilket de sista blocken av data lagras, vilket, med frekvent åtkomst till samma filer, avsevärt kan öka disksystemets prestanda.

Nackdelen med hårdvaru-RAID-implementering är den relativt höga kostnaden för RAID-kontroller. Men å ena sidan måste du betala för allt (tillförlitlighet, snabbhet, service). Å andra sidan, i Nyligen, med utvecklingen av mikroprocessorteknologi, började kostnaden för RAID-kontroller (särskilt yngre modeller) sjunka kraftigt och blev jämförbar med kostnaden för vanliga diskkontroller, vilket gör det möjligt att installera RAID-system inte bara i dyra stordatorer, utan också i servrar nybörjarnivå och även till arbetsstationer.

© Andrey Egorov, 2005, 2006. TIM Group of Companies.

Forumbesökare ställer oss frågan: "Vilken RAID-nivå är den mest tillförlitliga?" Alla vet att den vanligaste nivån är RAID5, men den är inte utan allvarliga nackdelar som inte är uppenbara för icke-specialister.

RAID 0, RAID 1, RAID 5, RAID6, RAID 10 eller vad är RAID-nivåer?

I den här artikeln kommer jag att försöka karakterisera de mest populära RAID-nivåerna och sedan formulera rekommendationer för att använda dessa nivåer. För att illustrera artikeln skapade jag ett diagram där jag placerade dessa nivåer i det tredimensionella rummet av tillförlitlighet, prestanda och kostnadseffektivitet.

JBOD(Just a Bunch of Disks) är en enkel spännvidd av hårddiskar, som formellt sett inte är en RAID-nivå. En JBOD-volym kan vara en array av en enda disk eller en aggregering av flera diskar. RAID-styrenheten behöver inte utföra några beräkningar för att driva en sådan volym. I vårt diagram fungerar JBOD-enheten som en "enkel" eller utgångspunkt - dess tillförlitlighet, prestanda och kostnadsvärden är desamma som för en enda enhet. hårddisk.

RAID 0("Striping") har ingen redundans och distribuerar information omedelbart över alla diskar som ingår i arrayen i form av små block ("stripes"). På grund av detta ökar prestandan avsevärt, men tillförlitligheten blir lidande. Precis som med JBOD får vi 100 % av diskkapaciteten för pengarna.

Låt mig förklara varför tillförlitligheten för datalagring på alla sammansatta volymer minskar - eftersom om någon av hårddiskarna som ingår i den misslyckas går all information helt och oåterkalleligt förlorad. I enlighet med sannolikhetsteorin, matematiskt, är tillförlitligheten för en RAID0-volym lika med produkten av tillförlitligheten för dess ingående diskar, som var och en är mindre än en, så den totala tillförlitligheten är uppenbarligen lägre än tillförlitligheten för någon disk.

Bra nivå - RAID 1("Spegling", "spegel"). Den har skydd mot fel på hälften av den tillgängliga hårdvaran (i det allmänna fallet en av två hårddiskar), ger en acceptabel skrivhastighet och ökar läshastigheten på grund av parallellisering av förfrågningar. Nackdelen är att du måste betala kostnaden för två hårddiskar för att få den användbara kapaciteten på en hårddisk.

Inledningsvis antas det att hårddisken är en pålitlig sak. Följaktligen är sannolikheten för fel på två diskar samtidigt lika (enligt formeln) med produkten av sannolikheterna, dvs. storleksordningar lägre! Tyvärr är det verkliga livet ingen teori! Två hårddiskar tas från samma batch och fungerar under samma förhållanden, och om en av diskarna misslyckas ökar belastningen på den återstående, så i praktiken, om en av diskarna misslyckas, måste brådskande åtgärder vidtas för att återställa redundans. För att göra detta rekommenderas det att använda heta reservdiskar med valfri RAID-nivå (utom noll) HotSpare. Fördelen med detta tillvägagångssätt är att bibehålla konstant tillförlitlighet. Nackdelen är ännu högre kostnader (dvs kostnaden för 3 hårddiskar för att lagra volymen på en disk).

Spegel på många diskar är en nivå RAID 10. När du använder den här nivån arrangeras speglade diskpar i en "kedja", så den resulterande volymen kan överstiga kapaciteten för en enda hårddisk. För- och nackdelarna är desamma som för RAID1-nivån. Liksom i andra fall rekommenderas det att inkludera HotSpare hot spare-diskar i arrayen med en hastighet av en reserv för var femte arbetare.

RAID 5, faktiskt, den mest populära av nivåerna - främst på grund av dess effektivitet. Genom att offra kapaciteten på bara en disk från arrayen för redundans får vi skydd mot fel på någon av volymens hårddiskar. Att skriva information till en RAID5-volym kräver ytterligare resurser, eftersom ytterligare beräkningar krävs, men vid läsning (jämfört med en separat hårddisk) finns det en vinst, eftersom dataströmmar från flera array-enheter parallelliseras.

Nackdelarna med RAID5 uppträder när en av diskarna misslyckas - hela volymen går in i kritiskt läge, alla skriv- och läsoperationer åtföljs av ytterligare manipulationer, prestandan sjunker kraftigt och diskarna börjar värmas upp. Om omedelbar åtgärd inte vidtas kan du förlora hela volymen. Därför (se ovan) bör du definitivt använda en Hot Spare-disk med en RAID5-volym.

Utöver de grundläggande nivåerna RAID0 - RAID5 som beskrivs i standarden finns det kombinerade nivåer RAID10, RAID30, RAID50, RAID15, som tolkas olika av olika tillverkare.

Kärnan i sådana kombinationer är kortfattat som följer. RAID10 är en kombination av ett och noll (se ovan). RAID50 är en kombination av "0" nivå 5 volymer. RAID15 är en "spegel" av "femman". Och så vidare.

Således ärver kombinerade nivåer fördelarna (och nackdelarna) hos sina "föräldrar". Så, utseendet på en "nolla" i nivån RAID 50 tillför ingen tillförlitlighet till det, men har en positiv effekt på prestandan. Nivå RAID 15, förmodligen mycket pålitlig, men den är inte den snabbaste och dessutom extremt oekonomisk (volymens användbara kapacitet är mindre än hälften av den ursprungliga diskarrayen).

RAID 6 skiljer sig från RAID 5 genom att i varje rad med data (på engelska rand) har inte en, men två kontrollsumma block. Kontrollsummor är "flerdimensionella", dvs. oberoende av varandra, så även fel på två diskar i arrayen låter dig spara originaldata. Att beräkna kontrollsummor med Reed-Solomon-metoden kräver mer intensiva beräkningar jämfört med RAID5, så tidigare användes den sjätte nivån praktiskt taget inte. Nu stöds det av många produkter, sedan de började installera specialiserade mikrokretsar som utför alla nödvändiga matematiska operationer.

Enligt vissa studier slutar återställning av integriteten efter ett enda diskfel på en RAID5-volym som består av stora SATA-diskar (400 och 500 gigabyte) i dataförlust i 5 % av fallen. Med andra ord, i ett fall av tjugo, under regenereringen av en RAID5-array till en Hot Spare-disk, kan den andra disken misslyckas... Därav rekommendationerna från de bästa RAID-enheterna: 1) Alltid do säkerhetskopior; 2) använda RAID6!

Nyligen har nya nivåer RAID1E, RAID5E, RAID5EE dykt upp. Bokstaven "E" i namnet betyder Förbättrad.

RAID level-1 Enhanced (RAID level-1E) kombinerar spegling och datastripning. Denna blandning av nivåerna 0 och 1 är anordnad enligt följande. Data i en rad fördelas exakt som i RAID 0. Det vill säga att dataraden inte har någon redundans. Nästa rad med datablock kopierar det föregående med en förskjutning av ett block. Således, som i standard RAID 1-läge, har varje datablock en spegelkopia på en av diskarna, så den användbara volymen för arrayen är lika med hälften av den totala volymen på hårddiskarna som ingår i arrayen. RAID 1E kräver en kombination av tre eller flera enheter för att fungera.

Jag gillar verkligen RAID1E-nivån. För kraftfull grafik arbetsstation eller till och med för hemdatoroptimalt val! Den har alla fördelar med noll och första nivåer - utmärkt hastighet och hög tillförlitlighet.

Låt oss nu gå vidare till nivån RAID level-5 Enhanced (RAID level-5E). Detta är samma som RAID5, bara med en backup-skiva inbyggd i arrayen reservdrev. Denna integrering utförs på följande sätt: på alla diskar i arrayen lämnas 1/N del av utrymmet ledigt, vilket används som en reservdel om en av diskarna går sönder. På grund av detta uppvisar RAID5E, tillsammans med tillförlitlighet, bättre prestanda, eftersom läsning/skrivning utförs parallellt från ett större antal enheter samtidigt och reservenheten inte är ledig, som i RAID5. Uppenbarligen kan säkerhetskopieringsdisken som ingår i volymen inte delas med andra volymer (dedikerad vs. delad). En RAID 5E-volym är byggd på minst fyra fysiska diskar. Den användbara volymen för en logisk volym beräknas med formeln N-2.

RAID level-5E Enhanced (RAID level-5EE) liknar RAID level-5E, men den har mer effektiv distribution extra drivkraft och, som ett resultat, snabbare återhämtningstid. Liksom RAID5E-nivån distribuerar denna RAID-nivå block av data och kontrollsummor i rader. Men den distribuerar också lediga block av reservenheten och reserverar inte bara en del av diskutrymmet för dessa ändamål. Detta minskar tiden som krävs för att rekonstruera integriteten hos en RAID5EE-volym. Säkerhetskopieringsskivan som ingår i volymen kan inte delas med andra volymer - som i föregående fall. En RAID 5EE-volym är byggd på minst fyra fysiska diskar. Den användbara volymen för en logisk volym beräknas med formeln N-2.

Konstigt nog nämns inget om nivå RAID 6E Jag kunde inte hitta det på Internet - än så länge erbjuds eller tillkännages denna nivå inte av någon tillverkare. Men nivån RAID6E (eller RAID6EE?) kan erbjudas enligt samma princip som den tidigare. Disk HotSpare Nödvändigtvis måste följa med vilken RAID-volym som helst, inklusive RAID 6. Naturligtvis kommer vi inte att förlora information om en eller två diskar misslyckas, men det är extremt viktigt att börja regenerera integriteten för arrayen så tidigt som möjligt för att snabbt få ut systemet av det "kritiska" läget. Eftersom behovet av en Hot Spare-disk är utom tvivel för oss, skulle det vara logiskt att gå längre och "sprida" den över volymen som görs i RAID 5EE för att få fördelarna med att använda mer kvantitet diskar ( bästa hastigheten läs-skriv med mera snabb återhämtning integritet).

RAID-nivåer i "siffror".

Jag har samlat några av dem i en tabell viktiga parametrar nästan alla RAID-nivåer, så att du kan jämföra dem med varandra och bättre förstå deras väsen.

Nivå
~~~~~~~

Hyddor-
exakt
ness
~~~~~~~

Använda sig av
Diskkapacitet
~~~~~~~

Produktion
ditel-
ness
läsning

~~~~~~~

Produktion
ditel-
ness
uppgifter

~~~~~~~

Inbyggt
disk
boka

~~~~~~~

Min. antal diskar
~~~~~~~

Max. antal diskar

~~~~~~~

Exc.

Exc.

Exc.

Exc.

Alla "spegel"-nivåer är RAID 1, 1+0, 10, 1E, 1E0.

Låt oss försöka igen för att grundligt förstå hur dessa nivåer skiljer sig?

RAID 1.
Detta är en klassisk "spegel". Två (och bara två!) hårddiskar fungerar som en och är en komplett kopia av varandra. Fel på någon av dessa två enheter leder inte till förlust av dina data, eftersom styrenheten fortsätter att fungera på den återstående enheten. RAID1 i antal: 2x redundans, 2x tillförlitlighet, 2x kostnad. Skrivprestanda är likvärdig med en enda hårddisk. Läsprestandan är högre eftersom styrenheten kan fördela läsoperationer mellan två diskar.

RAID 10.
Kärnan i denna nivå är att diskarna i arrayen kombineras i par till "speglar" (RAID 1), och sedan kombineras alla dessa spegelpar i sin tur till en gemensam randig array (RAID 0). Det är därför det ibland kallas RAID 1+0. Viktig poäng– RAID 10 kan bara kombinera ett jämnt antal diskar (minst 4, max 16). Fördelar: tillförlitlighet ärvs från "spegeln", prestanda för både läsning och skrivning ärvs från "noll".

RAID 1E.
Bokstaven "E" i namnet betyder "Förbättrad", dvs. "förbättrad". Principen för denna förbättring är som följer: data "strippas" i block över alla diskar i arrayen och "strippas" sedan igen med en förskjutning till en disk. RAID 1E kan kombinera från tre till 16 diskar. Tillförlitligheten motsvarar de "tio" indikatorerna, och prestandan blir lite bättre på grund av större "växling".

RAID 1E0.
Den här nivån implementeras så här: vi skapar en "null"-array från RAID1E-arrayer. Därför måste det totala antalet diskar vara en multipel av tre: minst tre och högst sextio! I det här fallet är det osannolikt att vi får en hastighetsfördel, och komplexiteten i implementeringen kan påverka tillförlitligheten negativt. Den största fördelen är möjligheten att kombinera ett mycket stort (upp till 60) antal diskar i en array.

Likheten mellan alla RAID 1X-nivåer ligger i deras redundansindikatorer: för tillförlitlighetens skull offras exakt 50 % av arraydiskarnas totala kapacitet.

Beroende på den valda RAID-specifikationen kan läs- och skrivhastigheter och/eller skydd för dataförlust förbättras.

När man arbetar med diskundersystem möter IT-specialister ofta två huvudproblem.

  • Den första är låg hastighet läs/skriv, ibland räcker inte ens hastigheterna på en SSD-enhet till.
  • Det andra är fel på diskar, vilket innebär förlust av data, vars återställning kan vara omöjlig.

Båda dessa problem löses med RAID-teknik (redundant array av oberoende diskar) - en virtuell datalagringsteknik som kombinerar flera fysiska diskar till ett logiskt element.

Beroende på den valda RAID-specifikationen kan läs-/skrivhastigheter och/eller dataförlustskydd förbättras.

RAID-specifikationsnivåerna är: 1,2,3,4,5,6,0. Dessutom finns det kombinationer: 01,10,50,05,60,06. I den här artikeln kommer vi att titta på de vanligaste typerna av RAID-arrayer. Men låt oss först säga att det finns hård- och mjukvaru-RAID-arrayer.

RAID-arrayer för hårdvara och mjukvara

  • Programvaruarrayer skapas efter installationen av operativsystemet med hjälp av mjukvaruprodukter och verktyg, vilket är den största nackdelen med sådana diskarrayer.
  • Hårdvaru-RAID skapar en diskarray innan operativsystemet installeras och är inte beroende av det.

RAID 1

RAID 1 (även kallad "Mirror" - Mirror) innebär fullständig duplicering av data från en fysisk disk till en annan.

Nackdelarna med RAID 1 är bland annat att du får halva diskutrymmet. De där. Om du använder TVÅ 250 GB-diskar ser systemet endast EN 250 GB stor. Den här typen RAID ger ingen hastighetsvinst, men det ökar graden av feltolerans avsevärt, för om en disk går sönder finns det alltid en komplett kopia av den. Inspelning och radering från diskar sker samtidigt. Om informationen avsiktligt raderades kommer det inte att finnas något sätt att återställa den från en annan disk.

RAID 0

RAID 0 (även kallat Striping) går ut på att dela upp information i block och samtidigt skriva olika block till olika diskar.

Denna teknik ökar läs-/skrivhastigheten, tillåter användaren att använda hela diskarnas totala kapacitet, men minskar feltoleransen, eller snarare reducerar den till noll. Så om en av diskarna misslyckas kommer det att vara nästan omöjligt att återställa information. För att bygga RAID 0 rekommenderas det att endast använda mycket tillförlitliga diskar.

RAID 5 kan kallas en mer avancerad RAID 0. Du kan använda upp till 3 hårddiskar. Raid 0 registreras på alla utom en, och en speciell kontrollsumma registreras på den sista, vilket gör att du kan spara information på hårddiskarna i händelse av att en av dem "död" (men inte mer än en). Arbetshastigheten för en sådan grupp är hög. Om du byter ut disken kommer det att ta mycket tid.

RAID 2, 3, 4

Dessa är metoder för distribuerad informationslagring med användning av diskar som allokerats för paritetskoder. De skiljer sig endast från varandra i blockstorlekar. I praktiken används de praktiskt taget inte på grund av behovet av att ägna en stor del av diskkapaciteten till lagring av ECC- och/eller paritetskoder, samt på grund av låg prestanda.

RAID 10

Det är en blandning av RAID-arrayer 1 och 0. Och den kombinerar fördelarna med var och en: hög prestanda och hög feltolerans.

Arrayen måste innehålla ett jämnt antal diskar (minst 4) och är det mest tillförlitliga alternativet för att lagra information. Nackdelen är den höga kostnaden för diskarrayen: den effektiva kapaciteten kommer att vara hälften av den totala kapaciteten på diskutrymmet.

Är en blandning av RAID-arrayer 5 och 0. RAID 5 håller på att byggas, men dess komponenter kommer inte att vara oberoende hårddiskar, utan RAID 0-arrayer.

Egenheter.

Om RAID-kontrollern går sönder är det nästan omöjligt att återställa informationen (gäller inte Mirror). Även om du köper exakt samma kontroller är det stor sannolikhet att RAID kommer att monteras från andra disksektorer, vilket gör att information på diskarna går förlorad.

Som regel köps skivor i ett parti. Deras arbetsliv kan därför vara ungefär detsamma. I det här fallet rekommenderas det att omedelbart, vid tidpunkten för inköp av diskar för arrayen, köpa lite överskott. Till exempel, för att konfigurera RAID 10 av 4 diskar, bör du köpa 5 diskar. Så om en av dem misslyckas kan du snabbt ersätta den med en ny innan andra diskar misslyckas.

Slutsatser.

I praktiken används oftast bara tre typer av RAID-arrayer. Dessa är RAID 1, RAID 10 och RAID 5.

När det gäller kostnad/prestanda/feltolerans, rekommenderas att använda:

  • RAID 1(spegling) för att bilda ett diskundersystem för användaroperativsystem.
  • RAID 10 för data som har höga krav att skriva och läsa hastighet. Till exempel för lagring av 1C:Enterprise-databaser, e-postserver, AD.
  • RAID 5 används för att lagra fildata.

Den idealiska serverlösningen enligt majoriteten systemadministratörerär en server med sex diskar. De två diskarna "speglas" och operativsystemet är installerat på RAID 1. De fyra återstående enheterna kombineras till RAID 10 för snabb, problemfri och pålitlig systemdrift.