Récupérer de l’espace disque sur des datastores VMware avec PowerShell
A partir de la version VMware 6.5, la récupération d’espace après la suppression ou le déplacement d’une VM peut se faire de façon asynchrone et automatiquement sur les Datastores en VMFS 6, les VVOLs, NFS.
Par contre, sur les Datastores en VMFS 5 le « Space reclaim » est une action manuelle que l’on execute grâce aux commandes Esxcli.
Commande unmap en Esxcli
Pour exécuter le « Space Reclaim » sur un Datastore en ligne de commande, il faut être connecté en ssh à un ESXi qui a accès au datastore cible et lancer la commande :
« esxcli storage vmfs unmap –volume-label NomDuDatastore«
1 2 3 4 5 |
. esxcli storage vmfs unmap --volume-label NomDuDatastore . |
Pour lister les datastores vu par l’ Esxi, on peut lancer la commande esxcli :
esxcli storage filesystem list
Pour lancer la commande unmap sur l’ensemble de ses datastores, on peut donc lancer la commande esxcli suivante :
esxcli storage filesystem list | grep PaternNomDatastore | awk ‘{print $2}’ | while read d; do da=$(date); echo « $(da) – Processing $d … »; esxcli storage vmfs unmap –volume-label $d; done
1 2 3 4 5 6 7 8 9 10 11 |
. esxcli storage filesystem list | grep PaternNomDatastore | awk '{print $2}' | while read d; do da=$(date); echo "$(da) - Processing $d ..."; esxcli storage vmfs unmap --volume-label $d; done . |
Space Reclaim en Powershell
En Powershell, on s’appuie également sur les commandes esxcli.
Pour cela, il faut tout d’abord se connecter en PowerCli au vCenter ou à un Esxi, puis :
- On créé un objet contenant les commandes esxcli, cela permettra d’exécuter en PowerShell les commandes Esxcli.
$esxcli = get-Esxcli -vmhost $esxName -V2
- On créé une hashtable avec le nom du datastore sur lequel la commande « unmap » doit être appliquer.
$sParam = @{ volumelabel = $datastoreName }
- Et on lance la commande unmap
$esxcli.storage.vmfs.unmap.invoke($sParam)
1 2 3 4 5 6 7 8 9 |
. $esxcli = get-Esxcli -vmhost $esxName -V2 $sParam = @{ volumelabel = $datastoreName } $esxcli.storage.vmfs.unmap.invoke($sParam) . |
Permission nécessaire pour lancer la commande Unmap en PowerCLI
Si vous souhaitez vous connecter au vCenter avec le minimum de privilège pour lancer la commande UNMAP, l’utilisateur doit avoir au minimum une autorisation Host.Config.Storage. Vous pouvez lire sur ce sujet l’article de Cody Hosterman Required ESXi permissions for UNMAP through PowerCLI
Lors de la création du rôle, il faut activer la permission » Storage partition configuration« , que vous trouver dans :
Host -> Configuration -> Storage partition configuration.
A lire :
- https://www.vladan.fr/what-is-vmware-unmap-dead-space-reclamation/
- https://www.codyhosterman.com/pure-storage-vmware-overview/flasharray-and-vmware-best-practices/space-reclamationunmap/
- https://docs.vmware.com/en/VMware-vSphere/6.7/com.vmware.vsphere.storage.doc/GUID-BC1A172C-E649-4812-B8B2-A9E45AC97051.html
- https://kb.vmware.com/s/article/2057513
- https://code.vmware.com/forums/2530/vsphere-powercli#583729