Last active
March 23, 2016 09:13
-
-
Save equelin/5e035816236f46cde25e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# | |
.SYNOPSIS | |
Reclame l'espace libre sur les datastores en thin provisionning. | |
.DESCRIPTION | |
Reclame l'espace libre sur les datastores en thin provisionning. | |
.PARAMETER Datastore | |
Nom d'un datastore sur lequel sera reclame l'espace libre. le datastore peut etre passé en argument. | |
.NOTES | |
Il est necessaire d etre connecte a un serveur vCenter ou ESXi avant d'executer ce script. Ce script est compatible à partir de vSphere 5.5. | |
Le code est en parti inspiré par le travaille de Cody Hosterman (http://blog.purestorage.com/unmap-block-count-behavior-change-in-esxi-5-5-p3/) | |
.EXAMPLE | |
Get-Datastore | ReclaimUnusedSpace.ps1 | |
Reclamer l'espace libre sur tous les datasores. | |
.EXAMPLE | |
ReclaimUnusedSpace.ps1 -Datastore NomDuDatastore | |
Reclamer l'espace libre sur un datasore specifique. | |
.LINK | |
http://blog.okcomputer.io | |
#> | |
Param ( | |
[Parameter(Mandatory=$True,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True)] | |
[string]$Datastore | |
) | |
# Desactivation du Timeout car l'operation peut-être longue | |
Set-PowerCLIConfiguration -Scope Session -WebOperationTimeoutSeconds -1 -confirm:$false | Out-Null | |
# Récupere les informations sur le ou les datastore(s) | |
$Datastores = Get-Datastore -Name $Datastore | |
# Réclamation de l'espace libre sur chaque datastore | |
foreach ($DS in $Datastores) { | |
Process { | |
# Calcul de la taille du fichier asyncUnmapFile - Source: http://blog.purestorage.com/unmap-block-count-behavior-change-in-esxi-5-5-p3/ | |
if ((1 - $DS.FreeSpaceMB/$DS.CapacityMB) -ge .75) { | |
$asyncUnmapFileSize = 200 | |
} | |
else { | |
$asyncUnmapFileSize = [math]::floor($DS.FreeSpaceMB * .01) | |
} | |
# Selection du serveur ESXi qui executera l'operation | |
$VMHost = $DS | Get-VMHost | where-object {($_.version -like "5.5.*") -or ($_.version -like "6.0.*")} | Select-Object -last 1 | |
# Esxcli | |
$esxcli = Get-VMHost -Name $VMHost | Get-EsxCli | |
Write-Host "Reclamation de l'espace libre sur $($DS.name) par bloc de $asyncUnmapFileSize Mo et depuis le serveur $VMHost" | |
#Execution de la commande avec gestion des erreurs | |
Try { | |
$result = $esxcli.storage.vmfs.unmap($asyncUnmapFileSize, $DS.name, $null) | |
} | |
Catch [VMware.VimAutomation.Sdk.Types.V1.ErrorHandling.VimException.ViError] { | |
Write-Host "Erreur lors de la reclamation de l'espace libre sur $($DS.name)" | |
Write-Host $_.Exception.Message | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment