Ét stort RAID 10 – en ny standard for serverlagring
I slutningen af 1990'erne var standardtommelfingerreglen for at bygge en ny server at placere operativsystemet på sit eget, lille RAID 1-array og adskille programmer og data i et separat RAID 5-array. Dette blev gjort af flere årsager, som mange efterhånden er gået i glemmebogen. De vigtigste drivende faktorer var, at lagerkapacitet var ekstremt dyr, diske var små, filsystemer blev jævnligt korrupte, og fysiske harddiske fejlede med en meget høj rate sammenlignet med andre typer fejl. Folk var drevet af et behov for at beskytte sig mod fysiske harddiskfejl, beskytte mod filsystemkorruption og erhverve tilstrækkelig kapacitet til at opfylde deres behov.
I dag er lagringslandskabet forandret. Filsystemer er utroligt robuste, og korruption fra selve filsystemet er nærmest uhørt, og takket være teknologier som journalisering kan det næsten altid rettes hurtigt og effektivt og beskytte slutbrugerne mod datatab. Næsten ingen bekymrer sig om filsystemkorruption i dag.
Moderne filsystemer er også i stand til at håndtere langt større kapacitet end tidligere. Det var ikke ualmindeligt i slutningen af 1990'erne og begyndelsen af 2000'erne at have evnen til nemt at lave et drev-array, der var større end ethvert enkelt filsystem kunne håndtere. I dag er det ikke realistisk tilfældet, da alle almindelige filsystemer håndterer mange terabyte som minimum og ofte petabyte, exabyte eller mere data.
Harddiske er meget mere pålidelige end de var i slutningen af 1990'erne. Fejlrater for en hel disk, der svigter, er meget lave, selv i billigere diske. Så lave, faktisk, at arrayfejl (datatab i hele RAID-arrayet) primært handler om fejlende arrays snarere end fejl på harddiske. Vi udskifter ikke længere harddiske i stor stil. Det er ikke uhørt, at store arrays kører hele deres levetid uden at miste et eneste drev.
Kapaciteterne er skaleret dramatisk. I stedet for 4,3 GB harddiske installerer vi nu 3 TB-drev. Næsten tusinde gange mere kapacitet på en enkelt spindel sammenlignet med for mindre end femten år siden.
Disse faktorer kombineres og skaber et behov for en dramatisk anderledes tilgang til design af serverlagring og en ændring af "tommelfingerreglen" om, hvor man begynder, når man designer lagring.
Den gamle tilgang kan beskrives som RAID 1 + RAID 5. RAID 1-pladsen blev brugt til operativsystemet, mens RAID 5-pladsen, formentlig meget større, blev brugt til data og programmer. Dette design opdelte de to lagringsbehov og lagde maksimal indsats i at beskytte operativsystemet (som var meget svært at genoprette i tilfælde af katastrofe, og som data afhang af for tilgængelighed) på det meget pålidelige RAID 1. Det billigere RAID 5, om end lidt mere risikabelt, blev typisk valgt til data, fordi omkostningerne ved at gemme data på RAID 1 var for høje i de fleste tilfælde. Det var en afvejning, der gav mening på det tidspunkt.
I dag, med vores meget anderledes bekymringer, er en ny tilgang nødvendig, og denne nye tilgang kendes som "Ét stort RAID 10" – hvilket betyder et enkelt, stort RAID 10-array med operativsystem, programmer og data alle gemt sammen. Selvfølgelig er dette bare hvad vi siger for at gøre det nemt; i et system uden behov for ydeevne eller kapacitet ud over en enkelt disk ville vi sige "Ét stort RAID 1", men mange inkluderer RAID 1 i RAID 10-gruppen, så det er bare nemmere at sige det første.
For at gøre det endnu nemmere forkorter vi dette til OBR10.
Fordi omkostningerne til lagring er faldet betydeligt og i stedet for at være en knap ressource typisk er i overflod i dag, fordi filsystemer er utroligt pålidelige, fordi RAID 1 og RAID 10 deler ydeevnekarakteristika, og fordi arrayfejl udløst af ikke-diskfejl er gået fra baggrundsstøj til primære årsager til datatab, er skiftet til RAID 10 og eliminering af array-opdeling blevet den nye standardtilgang.
Med RAID 10 har vi nu den højtilgængelige og robuste lagring, der tidligere kun var forbeholdt operativsystemet, tilgængelig for alle vores data. Vi får fordelen af spejlet RAID-ydeevne plus fordelen af ekstra spindler for alle vores data. Vi får bedre udnyttelse af drevkapacitet og ydeevne baseret på den forbedrede udnyttelse.
Selv den traditionelle opdeling af logfiler, der normalt gøres med databaser (den berømte RAID 1 + RAID 5 + RAID 1-tilgang), er ikke længere nødvendig, fordi RAID 10 bevarer de optimale ydeevnekarakteristika på tværs af alle data. Med RAID 10 eliminerer vi næsten alle de faktorer, der engang fik os til at opdele arrays.
Den eneste væsentlige faktor, der ikke er nævnt, og som traditionelt set ses som gavnlig for delte arrays, er adgangskonkurrence – behovet for, at forskellige processer skal have adgang til forskellige dele af disken på samme tid, hvilket får drevhovedet til at bevæge sig i et mindre end ideelt mønster og reducere drevydeevnen. Konkurrence var et stort problem i slutningen af 1990'erne, da den gamle tommelfingerregel blev udviklet.
I dag eksisterer drevkonkurrence stadig, men er i høj grad afbødet af brugen af store RAID-caches. I slutningen af 90'erne var drevecaches på få megabyte i bedste fald og ofte ikke-eksisterende. I dag er 256 MB en lille cache, og gennemsnitlige servere leveres med 1-2 GB cache på selve RAID-kortet. Nogle systemer begynder at integrere yderligere solid state-baserede caches for at tilføje en sekundær cache ud over hukommelsescachen på controlleren. Disse kan nemt tilføje hundredvis af gigabyte af ekstremt hurtig cache, der kan buffere næsten enhver spindeloperation fra at skulle bekymre sig om konkurrence. Så problemet med konkurrence er blevet løst på andre måder gennem årene, men har ligesom andre teknologiændringer effektivt frigjort os fra de traditionelle bekymringer, der krævede, at vi opdelte arrays.
Ligesom arraykoncurrence var en anden, langt mindre almindelig grund til at opdele arrays i slutningen af 1990'erne at forbedre kommunikationsbusydeevnen på grund af begrænsningerne i datidens SCSI- og ATA-teknologier. Disse er også blevet elimineret med overgangen til serielle kommunikationsmekanismer, SAS og SATA, i moderne arrays. Vi er ikke længere begrænset til kapaciteten af en enkelt bus for hvert array og kan vokse meget større med langt mere fleksibilitet end tidligere. Buskonkurrence er nærmest elimineret.
Hvis der er behov for at adskille plads til beskyttelse, såsom logfilvækst, kan dette opnås gennem partitionering frem for fysisk array-opdeling. Generelt ønsker du at minimere partitionering, da det øger overhead og sænker drevenes evne til at selvjustere, men der er tilfælde, hvor det er den bedre tilgang. Men det kræver ikke, at den underliggende fysiske lagring opdeles, som det traditionelt var tilfældet. Endnu bedre end partitionering, når det er tilgængeligt, er logisk volumenstyring, som skaber partitionslignende adskillelser uden begrænsningerne ved partitioner.
Så til sidst er den nye tommelfingerregel for serverlagring "Ét stort RAID 10." Ikke mere RAID 5, ikke mere array-opdeling. Det handler om pålidelighed, ydeevne, nem administration og moderat omkostningseffektivitet. Som alle tommelfingerregler gælder dette ikke for enhver enkelt situation, men det gælder meget bredere end den gamle standard nogensinde gjorde. RAID 1 + RAID 5 som standard var altid et forsøg på at "klare sig" med noget uønsket og at gøre det bedste ud af en dårlig situation. OBR10 er ikke sådan. Den nye standard er en ønsket standard – det er, hvordan vi faktisk ønsker at køre, ikke noget vi er "stuck" med.
Når du designer lagring til en ny server, start med OBR10 og flyt kun væk fra det, når det specifikt ikke opfylder dine teknologiske behov. Du bør aldrig skulle begrunde brugen af OBR10, kun begrunde at ikke bruge det.
