You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/tools/raid-calculator/raid-calculator.service.ts
+38-16Lines changed: 38 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -4,14 +4,14 @@ const raidCalculations = {
4
4
raid_0: {
5
5
about: 'RAID 0 splits data evenly across 2 or more disks without redunancy or fault tolerance creating one large storage space. More info: <a href="https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_0" target="_blank">Wikipedia</a>',
6
6
requirements: 'RAID 0 requires at least 1 disk',
7
-
validate(num,size){
7
+
validate(num,size,stripeSize){
8
8
returnnum>1;
9
9
},
10
-
capacity(num,size,unit){
10
+
capacity(num,size,stripeSize,unit){
11
11
// total disks * size
12
12
return(num*size)*unit;
13
13
},
14
-
efficiency(num){
14
+
efficiency(num,stripeSize){
15
15
// uses 100% of space
16
16
return100;
17
17
},
@@ -22,14 +22,14 @@ const raidCalculations = {
22
22
raid_1: {
23
23
about: 'RAID 1 consists of an exact copy of the data (mirror) across two or more disks. The array will operate as long as at least one drive is operational. More info: <a href="https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_1" target="_blank">Wikipedia</a>',
24
24
requirements: 'RAID 1 requires at least 1 disk',
25
-
validate(num,size){
25
+
validate(num,size,stripeSize){
26
26
returnnum>1;
27
27
},
28
-
capacity(num,size,unit){
28
+
capacity(num,size,stripeSize,unit){
29
29
// total size is size of a single drive
30
30
returnsize*unit;
31
31
},
32
-
efficiency(num){
32
+
efficiency(num,stripeSize){
33
33
// 1/N
34
34
return(1/num)*100;
35
35
},
@@ -41,14 +41,14 @@ const raidCalculations = {
41
41
raid_5: {
42
42
about: 'RAID 5 uses block level striping with parity. This allows for fault tolerance with a storage reduction equal to one drive for the parity information. More info: <a href="https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5" target="_blank">Wikipedia</a>',
43
43
requirements: 'RAID 5 requires at least 3 disks',
44
-
validate(num,size){
44
+
validate(num,size,stripeSize){
45
45
returnnum>=3;
46
46
},
47
-
capacity(num,size,unit){
47
+
capacity(num,size,stripeSize,unit){
48
48
// (N-1) * S (one drive for parity)
49
49
return((num-1)*size)*unit;
50
50
},
51
-
efficiency(num){
51
+
efficiency(num,stripeSize){
52
52
// 1 - (1/N)
53
53
return(1-(1/num))*100;
54
54
},
@@ -60,14 +60,14 @@ const raidCalculations = {
60
60
raid_6: {
61
61
about: 'RAID 6 is similiar to RAID 5 but with an additional parity block. This allows for an additional disk failure at the cost of storage reduction equal to two drives. More info: <a href="https://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_6" target="_blank">Wikipedia</a>',
62
62
requirements: 'RAID 6 requires at least 4 disks',
63
-
validate(num,size){
63
+
validate(num,size,stripeSize){
64
64
returnnum>=4;
65
65
},
66
-
capacity(num,size,unit){
66
+
capacity(num,size,stripeSize,unit){
67
67
// (N-2) * S (2 parity)
68
68
return((num-2)*size)*unit;
69
69
},
70
-
efficiency(num){
70
+
efficiency(num,stripeSize){
71
71
// 1 - (2/N)
72
72
return(1-(2/num))*100;
73
73
},
@@ -77,16 +77,16 @@ const raidCalculations = {
77
77
},
78
78
},
79
79
raid_10: {
80
-
about: 'RAID 10 is generally recognized as a stripe of mirrors (RAID 1 + RAID 0). Each set of drives is mirrored and striped together so that each drive in the set is fault tolerant within the group. More info: <a href="https://en.wikipedia.org/wiki/Nested_RAID_levels#RAID_10_(RAID_1+0)" target="_blank">Wikipedia</a>',
80
+
about: 'RAID 10 is a stripe of mirrors (RAID 1 + RAID 0). Each set of drives is mirrored and striped together so that each drive in the set is fault tolerant within the group. More info: <a href="https://en.wikipedia.org/wiki/Nested_RAID_levels#RAID_10_(RAID_1+0)" target="_blank">Wikipedia</a>',
81
81
requirements: 'RAID 10 requires an even number of at least 4 disks',
82
-
validate(num,size){
82
+
validate(num,size,stripeSize){
83
83
returnnum>=4&&num%2===0;
84
84
},
85
-
capacity(num,size,unit){
85
+
capacity(num,size,stripeSize,unit){
86
86
// Total disks (stripe)/2 (mirror)
87
87
return((num*size)/2)*unit;
88
88
},
89
-
efficiency(num){
89
+
efficiency(num,stripeSize){
90
90
// 1/2 (1/strips per stripe, 2 in this case)
91
91
return50;
92
92
},
@@ -95,4 +95,26 @@ const raidCalculations = {
95
95
return'1 drive failure per mirrored set';
96
96
},
97
97
},
98
+
raid_50: {
99
+
about: 'RAID 50 stripes multiple RAID 5 arrays together (RAID 5 + RAID 0). Each RAID 5 set can sustain a single drive failure. More info: <a href="https://en.wikipedia.org/wiki/Nested_RAID_levels#RAID_50_(RAID_5+0)" target="_blank">Wikipedia</a>',
100
+
requirements: 'RAID 50 requires at least 6 disks total with 3 minimum per stripe. Stripes must contain an equal number of disks.',
0 commit comments