Here’s a quick little powershell script I wrote to illustrate the relationship between Aggregates, Shelves, and raid-groups for a student who was a little confused as to their relationship:
$raidGroup = 0;
$shelf=1;
$rgSize=8;
$shelfBays = 24
$numShelves = 2
$totalDisks = ($numShelves * $shelfBays)
write-output("Aggregate Start");
for ( $i = 0 ; $i -lt $totalDisks ; $i++) {
$shelfMody = $i % $shelfBays ;
$mody = $i % $rgSize ;
if ( 0 -eq $shelfMody ) {
Write-Output("------------SHELF------------");
}
if ( 0 -eq $mody ) {
Write-Output("RaidGroup: $raidGroup");
$raidGroup++;
$Parity = 2 ;
}
if ( $Parity -eq 2 ) {
Write-Output(" Parity Disk #1: $i");
$Parity--;
} elseif ( $Parity -eq 1 ) {
Write-Output(" Parity Disk #2: $i");
$Parity--;
} else {
Write-Output(" data Disk: $i");
}
}
You can see some of the output below:
Aggregate Start ------------SHELF------------ RaidGroup: 0 Parity Disk #1: 0 Parity Disk #2: 1 data Disk: 2 data Disk: 3 data Disk: 4 data Disk: 5 data Disk: 6 data Disk: 7 RaidGroup: 1 Parity Disk #1: 8 Parity Disk #2: 9 data Disk: 10 data Disk: 11 data Disk: 12 data Disk: 13 data Disk: 14 data Disk: 15 RaidGroup: 2 Parity Disk #1: 16 Parity Disk #2: 17 data Disk: 18 data Disk: 19 data Disk: 20 data Disk: 21 data Disk: 22 data Disk: 23 ------------SHELF------------ RaidGroup: 3 Parity Disk #1: 24 Parity Disk #2: 25 data Disk: 26 data Disk: 27 data Disk: 28 data Disk: 29 data Disk: 30 data Disk: 31 RaidGroup: 4 Parity Disk #1: 32 Parity Disk #2: 33 data Disk: 34 data Disk: 35 data Disk: 36 data Disk: 37 data Disk: 38 data Disk: 39 RaidGroup: 5 Parity Disk #1: 40 Parity Disk #2: 41 data Disk: 42 data Disk: 43 data Disk: 44 data Disk: 45 data Disk: 46 data Disk: 47