Bueno, en este post voy a hablar acerca de como obtener un reporte de capacidad de Datastores de nuestra infraestructura. A quién no le ha pasado, que por culpa de un mal dimensionamiento de un Datastore, se le ha parado una aplicación y ha tenido que ampliar urgentemente. Con un buen dimensionamiento, podremos evitarnos sustos innecesarios, como por ejemplo con la creación de grandes ficheros de snapshots en datastores sobredimensionados.
Pues bien, vamos a ver, como obtener un reporte de todos los Datastores de nuestro Virtual Center y el resultado será una tabla con el nombre del datastore, la capacidad, el espacio libre y el provisionado. También aplicaremos una columna para saber si está bien dimensionado y obtendremos también la capacidad correcta para nuestros datastores, según el espacio provisionado y le añadiremos el 20% para tener espacio para snapshots.
Pues bien, aqui os dejo el script:
############################################################################# ##### Reporte de capacidad de Datastores de vCenter para Just2Kloud ######### ############################################################################# ## V. 1.0 Mario Gómez ### ## -----------------------------------------------------------------------### ## Syntaxis: sizing_datastores.ps1 -VCENTER vCenterName ### ## -----------------------------------------------------------------------### ############################################################################# param( [Parameter(Mandatory=$True)] [string]$VCENTER )   # Solicitamos las credenciales para poder acceder a vCenter Write-Host "Introducir en la ventana emergente que saldrá las credenciales para conectar a vCenter [$VCENTER]" -ForegroundColor Yellow sleep 3 $credentials = Get-Credential # Conectamos al vCenter pasado como parámetro Connect-VIServer -Server $VCENTER -Credential $credentials | Out-Null # Obtenemos un listado de los Datastores de nuestro vCenter $ds_list = Get-Datastore # Inicializamos la Tabla $Object_list = @() foreach ($ds in $ds_list) { # Obtenemos la capacidad de cada Datastore y lo limitamos a 2 decimales (en GB) $ds_capacitygb = $ds.CapacityGB $ds_capacitygb = [math]::round($ds_capacitygb,2) # Obtenemos el espacio que queda libre en nuestro datastores, limitando a 2 decimales $ds_free = $ds.FreeSpaceGB $ds_free = [math]::round($ds_free,2) # Obtenemos el espacio provisionado, limitando a 2 decimales. $ds_provisionedgb = ($ds.ExtensionData.Summary.Capacity - $ds.ExtensionData.Summary.FreeSpace + $ds.ExtensionData.Uncommitted)/1GB $ds_provisionedgb = [math]::round($ds_provisionedgb,2) # Si el espacio provisionado está por debajo de la capacidad, obtendremos un OK y # aún así calcularemos el espacio if ($ds_provisionedgb -le $ds_capacitygb) { $ds_calculate_capacity = $ds_provisionedgb + ($ds_provisionedgb*0.2) $ds_calculate_capacity = [math]::Round($ds_calculate_capacity,2) # Aunque el provisionado esté por debajo de la capacidad, comprobaremos que # el datastore esté correctamente dimensionado con el 20% para Snapshots. if ($ds_calculate_capacity -ge $ds_capacitygb) { $ds_size_right = "[WARN: [++$ds_calculate_capacity++]]" } else { $ds_size_right = "[OK: [$ds_calculate_capacity]]" } } # Si el espacio provisionado es mayor que la capacidad directamente mostraremos un # error y indicaremos el dimensionamiento correcto. else { $ds_calculate_capacity = $ds_provisionedgb + ($ds_provisionedgb*0.2) $ds_calculate_capacity = [math]::Round($ds_calculate_capacity,2) $ds_size_right = "[ERR: [** $ds_calculate_capacity **]]" } # Rellenamos la linea de la tabla para cada iteración por Datastore $hash= @{ Name = $ds.Name CapacityGB = $ds_capacitygb FreeSpaceGB = $ds_free ProvisionedGB = $ds_provisionedgb CapacityRight = $ds_size_right } $obj= New-Object PSObject -Property $hash # Rellenamos la tabla con cada línea $Object_list += $obj }
Y ya si queremos ser perfeccionistas, podemos exportar la tabla a un fichero Excel. Lo haremos de la siguiente manera:
# Exportamos la tabla a un fichero Excel, y en la tabla, el campo CapacityRight los marcará # en Verde (Dimensionamiento OK), Amarillo (Dimensionamiento Warning), Rojo (Dimensionamiento # KO) $Object_list | Select Name, CapacityGB, FreeSpaceGB, ProvisionedGB, CapacityRight | Export-Excel -Path Z:\Just2Kloud\Sizing_Datastores.xlsx -AutoSize -BoldTopRow -ConditionalText $( New-ConditionalText [OK:* -BackgroundColor LightGreen -ConditionalTextColor DarkGreen New-ConditionalText [NO:* -BackgroundColor LightRed -ConditionalTextColor DarkRed New-ConditionalText [WARN:* -BackgroundColor LightYellow -ConditionalTextColor DarkYellow ) -TableStyle Light19 -WorksheetName $VCENTER -Append
En próximos post, publicaré como obtener un reporte del cómputo de nuestra infraestructura virtual.
Espero que os haya gustado!
Comparte si te gusta 🙂
x
One comment