Mark II of
SnapReserveCalculator from this post - Re-sizing
Volume Snapshot Reserve Calculator - just a bit prettier and more user-friendly.
Still just a calculator though!
Image:
SnapReserveResizer in action!
The Script
##
+++++ Snapshot Reserve Resizer +++++ ##
Function
Wr{ Param([String]$Echo,[String]$Ink = "WHITE"); IF($Echo){
Write-Host $Echo -ForegroundColor $Ink -NoNewLine } ELSE { Write-Host } }
Function
TrapOut{ Wr "Not a valid value!" Red; Wr; EXIT }; Wr
Wr
"+++++ Snapshot Reserve Resizer +++++" Magenta; Wr; Wr
Wr
"To Health Check Snapshot Reserve ::>" Green; Wr
Wr
"vol show -snapshot-space-used > 100 -type RW -fields
percent-snapshot-space,snapshot-space-used" Cyan; Wr; Wr
Wr
"For any volumes with over 100% snapshot reserve, obtain this info
::>" Green; Wr
Wr
"vol show -volume VOLNAME -fields
size,percent-used,percent-snapshot-space,snapshot-space-used" Cyan; Wr; Wr
Trap
{TrapOut}
Wr
"..................... Volume size : " Green;
[Double]$VolumeSize = Read-Host
Wr
"............. Percent volume full : " Green;
[Double]$PercVolSizeUsed = Read-Host
Wr
"........ Percent snapshot reserve : " Green;
[Double]$PercSnapRes = Read-Host
Wr
"... Percent snapshot reserve used : " Green;
[Double]$PercSnapResUsed = Read-Host; Wr
Wr
"......... NEW percent volume full : " Cyan; [Double]$NewVolPercFull = Read-Host
Wr
"NEW percent snapshot reserve used : " Cyan; [Double]$NewSnapResPerc = Read-Host; Wr
[Double]$SizeUsedBySnapshots
= ($VolumeSize * $PercSnapRes * $PercSnapResUsed) / (100 * 100)
If($PercSnapResUsed
-le 100){ [Double]$SnapshotSpill = 0 }
else{
[Double]$SnapshotSpill = $SizeUsedBySnapshots - (($VolumeSize * $PercSnapRes) /
100) }
[Double]$SizeUsedByUserData
= (($VolumeSize * $PercVolSizeUsed) / 100) - (($VolumeSize * $PercSnapRes) /
100) - $SnapshotSpill
[Double]$NewSnapResSize = ($SizeUsedBySnapshots / $NewSnapResPerc) *
100
[Double]$NewVolumeSize = (($SizeUsedByUserData + $NewSnapResSize)
/ $NewVolPercFull) * 100
[Double]$NewPercSnapRes = ($NewSnapResSize / $NewVolumeSize) * 100
[String]$NewVolSizeString
= [String]($NewVolumeSize)
[String]$NewSnapResString
= [String]($NewPercSnapRes)
Wr
"+++ Result +++" Magenta; Wr; Wr
Wr
"New Volume Size =
" Cyan; Wr $NewVolSizeString; Wr
Wr
"New Percent Snapshot Reserve = " Cyan; Wr $NewSnapResString; Wr; Wr
Wr
"Clustershell Commands ::>" Green; Wr
Wr
"vol size -vserver VSERVER -volume VOLNAME -new-size SIZE{&UNIT}"
Cyan; Wr
Wr
"vol modify -vserver VSERVER -volume VOLNAME -percent-snapshot-space
PERCENT" Cyan; Wr; Wr
Wr
"Press ENTER to exit ..." CYAN; Read-Host; EXIT
Comments
Post a Comment