VMware et Powershell : liste des datastores en surcharge

J'avais déjà développé un script envoyant un mail si un datastore tombait sous un seuil défini dans le script d'espace libre. Aujourd'hui, voici une variante de ce script puisque celui-ci ne va détecter une espace disque trop faible mais une sur-allocation de celui-ci. En effet, avec les disques à provisionnement dynamique, il est possible de se retrouver en surcharge en créant de nouveaux disques virtuels positionnés sur ce même datastore sur lequel l'espace disque aura été jugé suffisant, en omettant de prendre en compte la croissance des disques déjà présents. Une capture d'écran peut permettre de comprendre le phénomène.

Cette capture d'écran montre bien les différences entre l'espace libre affiché et celui que l'on peut calculer en déduisant l'espace provisionné de la capacité maximale.

Sur cette capture, le sixième datastore affiche 320,49 Go de libre sur 749,75 Go : sur le papier, il est possible de créer une nouvelle VM puisque nous sommes en dessous du seuil d'occupation que l'on ne souhaite pas dépasser (généralement 80%). Seulement, 652 Go sur les 749 sont provisionnés. Cela signifie que si les disques virtuels viennent à atteindre leur taille maximale, nous serons en dessous des 20% d'espace libre. Pire, si la taille provisionnée est supérieure à la capacité, les disques virtuels seraient incapables de grossir et les VM pourraient planter.

Cela dit, il n'est pas forcément nécessaire de s'en tenir simplement à l'espace alloué et à la capacité maximale du datastore. Avec des machines bien dimensionnées et des données de capacity-planning, il est tout à fait possible d'exploiter chaque méga-octet du datastore sans perdre systématiquement au minimum 20% de l'espace de stockage.

Ce script liste donc tous les datastores qui ont un espace provisionné supérieur au seuil défini par rapport à la capacité maximale. Par défaut, ce seuil est de 80% (calculé par 1 - 0,20 dans le script). Il prend le nom du cluster en paramètre -Cluster. Dans une fenêtre PowerCli, on appellera le script ainsi si l'on souhaite analyser le cluster nommé PROD_PARIS :

.\vmw_ds-allocated-size.ps1 -Cluster "PROD_PARIS"
Param([string]$Cluster)
 $threshold = 0.20
 $dslist = Get-Datastore -Location $Cluster
 foreach($ds in $dslist){
     $allocsize = 0
     $hdlist = Get-HardDisk -Datastore $ds
     foreach($hd in $hdlist){
         $allocsize += $hd.CapacityGB
     }
     if($allocsize -gt $ds.CapacityGB*(1-$threshold)) { echo $ds.Name }
 }
Lien pour marque-pages : Permaliens.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.