Network RAID Notation Standard (SAM RAID Notation)
Ettersom RAID-landskapet blir mer komplekst med fremveksten av nettverks-RAID, er det et viktig behov for et mer komplekst og konsist notasjonssystem for RAID-nivåer som involverer en nettverkskomponent.
Tradisjonell RAID kommer i enkeltsiffer-notasjon og de tilgjengelige nivåene er 0, 1, 2, 3, 4, 5, 6, 7. Nivå 7 er uoffisielt men allment akseptert som trippel-paritet RAID (den naturlige utvidelsen av RAID 5 og RAID 6), og RAID 2 og RAID 3 er i praksis ikke lenger i bruk i dag.
Nestet RAID, ett RAID-nivå innenfor et annet, håndteres ved å sette enkeltsiffer RAID-nivåer sammen, slik som RAID 10, 50, 61, 100 osv. Disse kan alternativt skrives med et plusstegn som skiller nivåene, som RAID 1+0, 5+0, 6+1, 1+0+0 osv.
Det er to store problemer med dette notasjonssystemet, utover det åpenbare problemet at ikke alle RAID-typer eller utvidelser er redegjort for av enkeltsiffer-systemet, der mange aspekter ved proprietære RAID-systemer som ZRAID, XRAID og BeyondRAID ikke er redegjort for i notasjonssystemet. Det første er mangelen på nettverks-RAID-notasjon, og det andre er mangelen på spesifikk markering av intra-RAID-konfigurasjon.
Nettverks-RAID finnes i to nøkkeltyper: synkront og asynkront. Synkront nettverks-RAID fungerer praktisk talt identisk med sin ikke-nettverkstilknyttede motpart. Asynkront fungerer det samme, men medfører ekstra risiko ettersom data kanskje ikke er synkronisert på tvers av enheter på tidspunktet for en enhetsfeil. Derfor må forskjellene mellom de to være synlige i notasjonen.
Synkron RAID bør markeres med parenteser. Så to lokale RAID 10-systemer speilet over nettverket (a la DRBD) ville bli notert RAID 10(1). Den effektive RAID-nivået for risiko- og kapasitetsberegninger ville være det samme som for enhver RAID 101, men dette informerer alle parter på et øyeblikk om at speilet er over et nettverk.
Asynkron RAID bør markeres med hakeparenteser. Så to lokale RAID 10-systemer speilet over nettverket asynkront ville bli notert som RAID 10[1], noe som gjør det klart at det er en risikabel forsinkelse i systemet.
Det er et ytterligere behov for en annen type replikering på et høyere, filsystemnivå (a la rsync) som, selv om det ikke er direkte relatert til RAID, gir en lignende funksjon for kald data og ofte brukes i RAID-diskusjoner, og jeg mener at lagringsingeniører trenger muligheten til å notere dette konsist også. Denne asynkrone filsystemnivå-replikeringen kan markeres med krøllparenteser. Bare én notasjon er nødvendig ettersom replikering på filsystemnivå alltid er asynkron. Som et eksempel ville to RAID 6-arrayer synkronisert automatisk med et blokk-differensielt filsystemreplikeringssystem bli notert som RAID 6{1}.
For ytterligere å forenkle RAID-notasjon og for å forkorte det åpenbare behovet for å skrive ordet «RAID» gjentatte ganger, samt for å frigjøre oss fra de tradisjonelle distraksjonene ved hva akronymet står for slik at vi kan fokusere på de relevante replikasjons-aspektene ved det, bør et enkelt «R»-prefiks brukes. Så RAID 10 ville rett og slett være R10. Eller et rent nettverksspeil kan være R(1).
Dette etterlater ett viktig aspekt av RAID-notasjonen å adressere, og det er størrelsen på hver komponent i arrayet. Dette er ofte underforstått, men noen RAID-nivåer, særlig de som er nestet, kan ha kompleksiteter som mangler i tradisjonell notasjon. Å kjenne det totale antallet disker i et array betegner ikke alltid oppsettet til et spesifikt array. For eksempel antas et 24-disk R10 å være tolv par speil i en R0-stripe. Men det kunne være åtte sett med trippelspeil i en R0-stripe. Eller det kunne til og med være seks kvadruplespeil. Eller fire seksdoble speil. Eller tre åttedoblede speil. Eller to tolvdoblede speil. Selv om de fleste av disse er svært usannsynlige, er det behov for å notere dette. For settstørrelsen bruker vi et hevet tall for å angi størrelsen på det settet. Generelt er dette bare nødvendig for ett aspekt av arrayet, ikke alle, ettersom andre kan utledes, men når det er tvil kan det noteres eksplisitt.
Så et R10-array med tre-veis speilsett ville være R130. Mangler man evnen til å skrive et hevet tall, kan man også skrive det som R1^3+0. Denne notasjonen angir ikke den fullstendige arraystørrelsen, bare konfigurasjonstypen. Hvis alle mulige hevede tall er inkludert, kan en full arraystørrelse beregnes uten annet. Hvis vi har et R10 med fire sett med tre-veis speil, kan vi skrive det R1304, som vil informere oss om at hele arrayet består av tolv disker – eller i alternativ notasjon R1^3+0^4.
Hevet tall-notasjon for sett er bare nødvendig når det ikke er åpenbart. R10 uten annen notasjon antyder at R1-komponenten er speilpar, for eksempel. R55 krever nesten alltid ytterligere notasjon unntatt når arrayet består av bare ni medlemmer.
Et ytterligere aspekt å vurdere er å notere arraystørrelse. Dette er langt enklere enn hevet tall-notasjonen og er nesten alltid fullt tilstrekkelig. Dette avlaster behovet for å skrive i lang form «Et fire-disk RAID 10-array.» I stedet kan vi bruke et prefiks for dette. 4R10 ville betegne et fire-disk RAID 10-array.
Så for å se på eksemplet ovenfor: den tolv-disk RAID 10 med de tre-veis speilsettene kan skrives ut som 12R1304. Men bruken av alle tre tallene blir overflødig. Hvilket som helst av tallene kan utelates. Typisk ville dette være det siste, ettersom det er minst sannsynlig å være nyttig. R1-settstørrelsen er nyttig for å bestemme den grunnleggende risikoen, og det ledende 12 brukes for kapasitets- og ytelsesberegninger samt chassistørrelse og innkjøp. Det avsluttende fire er underforstått av de to andre tallene og effektivt ubrukelig alene. Så den beste måten å skrive dette på ville rett og slett være 12R130. Hvis det samme arrayet skulle bruke den vanlige speilpar-tilnærmingen i stedet for tre-veis speil, ville vi rett og slett skrive 12R10 for å betegne et tolv-disk, standard RAID 10-array.
