Network RAID Notation Standard (SAM RAID Notation)
Naarmate het RAID-landschap complexer wordt met de opkomst van network RAID, is er een belangrijke behoefte aan een complexer en beknopter notatiesysteem voor RAID-niveaus waarbij een netwerkcomponent betrokken is.
Traditionele RAID komt in een notatie van één cijfer en de beschikbare niveaus zijn 0, 1, 2, 3, 4, 5, 6, 7. Niveau 7 is officieus maar algemeen aanvaard als triple parity RAID (de natuurlijke uitbreiding van RAID 5 en RAID 6) en RAID 2 en RAID 3 zijn vandaag de dag feitelijk in onbruik geraakt.
Nested RAID, het ene RAID-niveau binnen het andere, wordt afgehandeld door RAID-niveaus van één cijfer samen te voegen, zoals RAID 10, 50, 61, 100, enzovoort. Deze kunnen ook geschreven worden met een plusteken dat de niveaus scheidt, zoals RAID 1+0, 5+0, 6+1, 1+0+0, enzovoort.
Er zijn twee grote problemen met dit notatiesysteem, naast het voor de hand liggende probleem dat niet alle RAID-types of -uitbreidingen door het systeem van één cijfer worden gedekt, waarbij veel van de aspecten van propriëtaire RAID-systemen zoals ZRAID, XRAID en BeyondRAID niet in het notatiesysteem worden meegerekend. Het eerste is een gebrek aan notatie voor network RAID en het tweede is een gebrek aan specifieke aanduiding van de intra-RAID-configuratie.
Network RAID komt in twee hoofdtypes, synchroon en asynchroon. Synchrone network RAID werkt feitelijk identiek aan zijn niet-genetwerkte tegenhanger. Asynchrone functioneert hetzelfde, maar brengt extra risico's met zich mee, aangezien data op het moment van een apparaatfout mogelijk niet over de apparaten heen gesynchroniseerd is. De verschillen tussen de twee moeten dus zichtbaar zijn in de notatie.
Synchrone RAID zou met haakjes moeten worden aangeduid. Twee lokale RAID 10-systemen die over het netwerk worden gemirrord (à la DRBD) zouden dus worden aangeduid als RAID 10(1). Het effectieve RAID-niveau voor risico- en capaciteitsberekeningen zou hetzelfde zijn als bij elke RAID 101, maar dit maakt voor alle partijen in één oogopslag duidelijk dat de mirror over een netwerk plaatsvindt.
Asynchrone RAID zou met vierkante haken moeten worden aangeduid. Twee lokale RAID 10-systemen die asynchroon over het netwerk worden gemirrord zouden dus worden aangeduid als RAID 10[1], waarmee duidelijk wordt gemaakt dat er een riskante vertraging in het systeem zit.
Er is een aanvullende behoefte aan een ander type replicatie op een hoger niveau, op bestandssysteemniveau (à la rsync), dat weliswaar niet werkelijk verwant is aan RAID, maar een vergelijkbare functie biedt voor koude data en vaak in RAID-discussies wordt gebruikt, en ik ben van mening dat opslag-engineers ook de mogelijkheid nodig hebben om dit aan te duiden. Deze asynchrone replicatie op bestandssysteemniveau kan met accolades worden aangeduid. Slechts één notatie is nodig, aangezien replicatie op bestandssysteemniveau altijd asynchroon is. Als voorbeeld zouden dus twee RAID 6-arrays die automatisch worden gesynchroniseerd met een block-differentieel bestandssysteemreplicatiesysteem worden aangeduid als RAID 6{1}.
Om de RAID-notatie verder te vereenvoudigen en om de voor de hand liggende noodzaak om het woord “RAID” herhaaldelijk te schrijven in te korten, en tevens om onszelf los te maken van de traditionele afleidingen over waar het acroniem voor staat, zodat we ons kunnen richten op de relevante replicatie-aspecten ervan, zou een eenvoudig “R”-voorvoegsel moeten worden gebruikt. RAID 10 zou dus simpelweg R10 zijn. Of een puur genetwerkte mirror zou R(1) kunnen zijn.
Hiermee resteert één belangrijk aspect van de RAID-notatie dat aandacht behoeft, en dat is de grootte van elke component van de array. Vaak is dit impliciet, maar sommige RAID-niveaus, met name die welke nested zijn, kunnen complexiteiten bevatten die door de traditionele notatie worden gemist. Het kennen van het totale aantal schijven in een array geeft niet altijd de opzet van een specifieke array aan. Zo wordt aangenomen dat een R10 van 24 schijven bestaat uit twaalf paren mirrors in een R0-stripe. Maar het zouden ook acht sets van drievoudige mirrors in een R0-stripe kunnen zijn. Of het zouden zelfs zes viervoudige mirrors kunnen zijn. Of vier zesvoudige mirrors. Of drie achtvoudige mirrors. Of twee twaalfvoudige mirrors. Hoewel de meeste hiervan uiterst onwaarschijnlijk zijn, is er een noodzaak om het aan te duiden. Voor de setgrootte gebruiken we een superscriptgetal om de grootte van die set aan te duiden. Doorgaans is dit slechts voor één aspect van de array nodig, niet voor alle, aangezien andere kunnen worden afgeleid, maar bij twijfel kan het expliciet worden aangeduid.
Een R10-array die gebruikmaakt van drievoudige mirrorsets zou dus R130 zijn. Als je geen superscript kunt schrijven, zou je het ook kunnen schrijven als R1^3+0. Deze notatie geeft niet de volledige arraygrootte aan, alleen het configuratietype. Als alle mogelijke superscripts worden opgenomen, kan een volledige arraygrootte worden berekend zonder dat er meer nodig is. Als we een R10 hebben van vier sets drievoudige mirrors, zouden we het kunnen schrijven als R1304, wat ons zou laten weten dat de gehele array uit twaalf schijven bestaat – of in de alternatieve notatie R1^3+0^4.
Superscriptnotatie van sets is alleen nodig wanneer ze niet voor de hand liggend is. R10 zonder enige andere notatie impliceert bijvoorbeeld dat de R1-component uit mirrorparen bestaat. R55 vereist vrijwel altijd aanvullende notatie, behalve wanneer de array uit slechts negen leden bestaat.
Een aanvullend aspect om te overwegen is het aanduiden van de arraygrootte. Dit is veel eenvoudiger dan de superscriptnotatie en is vrijwel altijd volledig toereikend. Dit verlicht de noodzaak om in lange vorm te schrijven “Een RAID 10-array van vier schijven.” In plaats daarvan kunnen we hiervoor een voorvoegsel gebruiken. 4R10 zou een RAID 10-array van vier schijven aanduiden.
Om dus terug te kijken naar ons voorbeeld van hierboven: de RAID 10 van twaalf schijven met de drievoudige mirrorsets zou kunnen worden uitgeschreven als 12R1304. Maar het gebruik van alle drie de getallen wordt overbodig. Elk van de getallen kan worden weggelaten. Doorgaans zou dit het laatste zijn, aangezien het het minst waarschijnlijk nuttig is. De R1-setgrootte is nuttig bij het bepalen van het basisrisico en de voorop geplaatste 12 wordt gebruikt voor capaciteits- en prestatieberekeningen, alsook voor het bepalen van de chassisomvang en de aanschaf. De achterop geplaatste vier wordt geïmpliceerd door de andere twee getallen en is op zichzelf feitelijk nutteloos. De beste manier om dit te schrijven zou dus simpelweg 12R130 zijn. Als diezelfde array de gangbare mirrorpaar-aanpak zou gebruiken in plaats van de drievoudige mirror, zouden we simpelweg 12R10 schrijven om een standaard RAID 10-array van twaalf schijven aan te duiden.
