diff --git a/src/tools/raid-calculator/raid-calculator.service.ts b/src/tools/raid-calculator/raid-calculator.service.ts index 9739b687..0e8ce506 100644 --- a/src/tools/raid-calculator/raid-calculator.service.ts +++ b/src/tools/raid-calculator/raid-calculator.service.ts @@ -11,6 +11,10 @@ const raidCalculations = { // total disks * size return (num * size) * unit; }, + efficiency(num) { + // uses 100% of space + return 100; + }, fault(num, size, unit) { return 'None'; }, @@ -25,6 +29,10 @@ const raidCalculations = { // total size is size of a single drive return size * unit; }, + efficiency(num) { + // 1/N + return (1 / num) * 100; + }, fault(num, size, unit) { // FT = total - 1 return `${num - 1} drive failures`; @@ -40,6 +48,10 @@ const raidCalculations = { // (N-1) * S (one drive for parity) return ((num - 1) * size) * unit; }, + efficiency(num) { + // 1 - (1/N) + return (1 - (1 / num)) * 100; + }, fault(num, size, unit) { // always 1 failure return '1 drive failure'; @@ -55,6 +67,10 @@ const raidCalculations = { // (N-2) * S (2 parity) return ((num - 2) * size) * unit; }, + efficiency(num) { + // 1 - (2/N) + return (1 - (2 / num)) * 100; + }, fault(num, size, unit) { // always 2 drive failures return '2 drive failures'; @@ -70,6 +86,10 @@ const raidCalculations = { // Total disks (stripe)/2 (mirror) return ((num * size) / 2) * unit; }, + efficiency(num) { + // 1/2 (1/strips per stripe, 2 in this case) + return 50; + }, fault(num, size, unit) { // one per mirror return '1 drive failure per mirrored set'; diff --git a/src/tools/raid-calculator/raid-calculator.vue b/src/tools/raid-calculator/raid-calculator.vue index d53f6006..10b9a890 100644 --- a/src/tools/raid-calculator/raid-calculator.vue +++ b/src/tools/raid-calculator/raid-calculator.vue @@ -28,6 +28,10 @@ const calculatedFaultTolerance = computed(() => { return raidCalculations[raidType.value].fault(diskTotal.value, diskSize.value, diskUnit.value); }); +const calculatedSpaceEfficiency = computed(() => { + return raidCalculations[raidType.value].efficiency(diskTotal.value); +}); + function validateSetup() { // validate the selected RAID type against parameters return raidCalculations[raidType.value].validate(diskTotal.value, diskSize.value); @@ -90,10 +94,18 @@ function validateSetup() { Fault Tolerance - + {{ calculatedFaultTolerance }} + + + Space Efficiency + + + {{ calculatedSpaceEfficiency }}% + +