NetApp Space Reclaimer

This has been requested by our Storage Team as they were doing lot of manual stuff , uploading it in the community may be it fulfills needs for others as well.

It can act as reference script only as every environment has different needs.

Below were the requirement:

  • Monday, Wednesday, Friday

Run reclaim commands on particular times on some of the DBs

$tm1,2,3,4 variables have been defined accordingly as per times of execution

  • Tuesday,Thursday, Saturday, Sunday

Run reclaim commands on particular times on some of the DBs

$tm1,2,3,4 variables have been defined accordingly as per times of execution

  • Space reclaim staus to be shown every 30 mins in a log.(used while loop)
  • Seperate log of process initiation to be logged.
  • Full log of whole session.
  • script run time would be 320 min(divided it by 30 so that we know the number of times while loop should be run for first requirement)

You have to customize the script to detect servers as per your enviornment.(variables part)

Example:

$dag1 = “DAGVG01” (server might have this in the name)

if($hostname -like “*$dag1*”){
$dagex= $dag1 -replace “VG” ,”EX”

$dagd1 = “Y:\” + $dagex + “_DB01”

$dagl1 = “Y:\” + $dagex + “_LOG01”

}

ServerDAGVG01 (Host Name Matches)

$dagd1 = “Y:\” + $dagex + “_DB01”  –> Y:\dagex_db01 (drive formation)

Extract the Zip file from below link:(after customizations batch file can be schedule or run manually to test)

Note : schedule times should be as per times defined inside script else it will not run.

example:

$tm1 =”3″

if((($day -eq $day1) – ($day -eq $day3) -or ($day -eq $day5)) -and ($tm -eq $tm1))

it checks if hour is 3 or not , if hour value is 4 than that code will not execute.

https://gallery.technet.microsoft.com/scriptcenter/NetApp-Space-Reclaimer-85629cb9

PowerShell

######################################################################### 
#            Author: Vikas Sukhija 
#            Reviewer: 
#            date: 9/9/2016 
#            Modified:                         
#            Description: Run Netapp Reclaim commands 
######################################################################### 
 
 
$date1 = get-date -format d 
$date1 = $date1.ToString().Replace("/","-"$time = get-date -format t 
 
$time = $time.ToString().Replace(":""-"$time = $time.ToString().Replace(" """) 
 
$logs = ".\Logs" + "\" + "Processed_PS_" + $date1 + "_" + $time + "_.log" 
 
$log1 = ".\Logs" + "\" + "snapdrive_" + $date1 + "_" + $time + "_.log" 
 
$log2 = ".\Logs" + "\" + "snapdrive_Spacereclaim_" + $date1 + "_" + $time + "_.log" 
 
Start-Transcript -Path $logs 
 
##############Import Netap module####################### 
 
Import-Module SnapDrive 
 
if($error){Write-host "Snapdrive module not imported Exit pls" -foregroundcolor Red 
Exitelse{ 
Write-host "Snapdrive module imported" -foregroundcolor green } 
 
###################variables ######################## 
 
$dag1 = "DAGVG01" 
 
$day = (get-date).dayofweek 
 
$tm = (get-date).Hour 
 
$day1 = "Monday" 
 
$day2 = "Tuesday" 
 
$day3 = "Wednesday" 
 
$day4 = "Thursday" 
 
$day5 = "Friday" 
 
$day6 = "Saturday" 
 
$day7 = "Sunday" 
 
$tm1 = "5" 
 
$tm2 = "11" 
 
$tm3 = "17" 
 
$tm4 =  "23" 
 
$runtime1 = "320" 
$timeout = $runtime1/30 
 
$hostname = hostname 
 
if($hostname -like "*$dag1*"){ 
 
$dagex$dag1 -replace "VG" ,"EX" 
 
$dagd1 = "Y:\" + $dagex + "_DB01" 
$dagd2 = "Y:\" + $dagex + "_DB02" 
$dagd3 = "Y:\" + $dagex + "_DB03" 
$dagd4 = "Y:\" + $dagex + "_DB04" 
$dagd5 = "Y:\" + $dagex + "_DB05" 
$dagd6 = "Y:\" + $dagex + "_DB06" 
$dagd7 = "Y:\" + $dagex + "_DB07" 
$dagd8 = "Y:\" + $dagex + "_DB08" 
$dagd9 = "Y:\" + $dagex + "_DB09" 
$dagd10 = "Y:\" + $dagex + "_DB10" 
 
$dagl1 = "Y:\" + $dagex + "_LOG01" 
$dagl2 = "Y:\" + $dagex + "_LOG02" 
$dagl3 = "Y:\" + $dagex + "_LOG03" 
$dagl4 = "Y:\" + $dagex + "_LOG04" 
$dagl5 = "Y:\" + $dagex + "_LOG05" 
$dagl6 = "Y:\" + $dagex + "_LOG06" 
$dagl7 = "Y:\" + $dagex + "_LOG07" 
$dagl8 = "Y:\" + $dagex + "_LOG08" 
$dagl9 = "Y:\" + $dagex + "_LOG09" 
$dagl10 = "Y:\" + $dagex + "_LOG10" 
} 
 
 
 
####################################################### 
 
if((($day -eq $day1- ($day -eq $day3-or ($day -eq $day5)) -and ($tm -eq $tm1)){ 
 
Write-host "Processing .....Snapdrive Commands on Databases" -foregroundcolor green 
 
sdcli spacereclaimer analyze -$dagd1 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd1 " -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd1 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd1 " -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagd2 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd2 " -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd2 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd1 " -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagd3 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd3 " -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd3 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd1 " -foregroundcolor blue 
 
} 
 
if((($day -eq $day1- ($day -eq $day3-or ($day -eq $day5)) -and ($tm -eq $tm2)){ 
 
Write-host "Processing .....Snapdrive Commands" -foregroundcolor green 
 
sdcli spacereclaimer analyze -$dagd4 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd4 " -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd4 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd4 " -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagd5 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd5 " -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd5 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd5 " -foregroundcolor blue 
 
 
} 
 
 
if((($day -eq $day1- ($day -eq $day3-or ($day -eq $day5)) -and ($tm -eq $tm3)){ 
 
Write-host "Processing .....Snapdrive Commands" -foregroundcolor green 
 
sdcli spacereclaimer analyze -$dagd6 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd6 " -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd6 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd6" -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagd7 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd7 " -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd7 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd7 " -foregroundcolor blue 
 
} 
 
if((($day -eq $day1- ($day -eq $day3-or ($day -eq $day5)) -and ($tm -eq $tm4)){ 
 
Write-host "Processing .....Snapdrive Commands" -foregroundcolor green 
 
sdcli spacereclaimer analyze -$dagd8 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd8 " -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd8 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd8 " -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagd9 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd9 " -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd9 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd9 " -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagd10 >> $log1  
 
Write-host "Space reclaimer analysis on $dagd10" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagd10 -$runtime1 
 
Write-host "Space reclaimer Start on $dagd10 " -foregroundcolor blue 
 
 
} 
 
######################LOG Vol####################################### 
 
 
if((($day -eq $day2- ($day -eq $day4-or ($day -eq $day6-or ($day -eq $day7)) -and ($tm -eq $tm1)){ 
 
sdcli spacereclaimer analyze -$dagl1 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl1" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl1 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl1" -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagl2 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl2" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl2 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl2" -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagl3 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl3" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl3 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl3" -foregroundcolor blue 
 
 
} 
 
if((($day -eq $day2- ($day -eq $day4-or ($day -eq $day6-or ($day -eq $day7)) -and ($tm -eq $tm2)){ 
 
Write-host "Processing .....Snapdrive Commands" -foregroundcolor green 
 
sdcli spacereclaimer analyze -$dagl4 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl4" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl4 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl4" -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagl5 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl5" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl5 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl5" -foregroundcolor blue 
 
 
} 
 
 
if((($day -eq $day2- ($day -eq $day4-or ($day -eq $day6-or ($day -eq $day7)) -and ($tm -eq $tm3)){ 
 
Write-host "Processing .....Snapdrive Commands" -foregroundcolor green 
 
sdcli spacereclaimer analyze -$dagl6 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl6" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl6 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl6" -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagl7 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl7" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl7 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl7" -foregroundcolor blue 
 
} 
 
 
if((($day -eq $day2- ($day -eq $day4-or ($day -eq $day6-or ($day -eq $day8)) -and ($tm -eq $tm4)){ 
 
Write-host "Processing .....Snapdrive Commands" -foregroundcolor green 
 
sdcli spacereclaimer analyze -$dagl8 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl8" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl8 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl8" -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagl9 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl9" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl9 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl9" -foregroundcolor blue 
 
sdcli spacereclaimer analyze -$dagl10 >> $log1  
 
Write-host "Space reclaimer analysis on $dagl10" -foregroundcolor magenta 
 
sdcli spacereclaimer start -$dagl10 -$runtime1 
 
Write-host "Space reclaimer Start on $dagl10" -foregroundcolor blue 
 
} 
 
$count=0 
 
do{ 
 
sdcli spacereclaimer status >> $log2  
add-content $log2 "--------------------------------------------------------" 
timeout 1800 
 
$count = $count +1} While($count -lt $timeout) 
 
 
Stop-Transcript 
 
##############################################################
Regards
Sukhija Vikas
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s