Script – Extension de datastores en ligne de commandes

Ce message est également disponible en : Anglais

Pour des besoins récents d’extension de datastores j’ai eu besoin de travailler sur un script pour automatiser la tâche car elle concernait plus d’une centaine de datastores. Le script ne marche que si le lun hébergeant le datastore a été préalablement agrandi.

En me basant sur le KB 2002461 j’ai réalisé un script permettant l’automatisation de la tâche d’extension.

Ceci est une première version assez sommaire. Je ferais un script un peu plus élaboré dans quelques temps.

Update : Mis à jour du 06/02/2015 – Ajout lanceur Powershell + plink

Pour le script powershell j’ai utilisé un bout de code de virtu-al.net @Alan Renouf pour générer une box de sélection permettant de choisir sur quel datastore / esx / datastore le script sera exécuté.

Ensuite lors de l’exécution du script, vous aurez la possibilité de choisir sur quel cluster exécuter votre script, puis sur l’esx, et enfin le datastore pour poser les scripts.

Le script a été testé sur un ESXi 5.0 U2.

Décompresser le fichier zip et executer le script DatastoreExtend.ps1

– Renseigner le nom du vCenter

Extend-1

– Indiquer les identifiants de connexion au vCenter

Extend-2

– Indiquer le mot de passe root de l’esxi que vous allez traiter.Extend-3– Sélectionner le cluster à traiter

Extend-4

– Sélectionner le hôte

Extend-5

– Sélectionner le datastore dans lequel sera déposé les fichiers à exécuter.

Extend-6

– Voici le ce que vous obtiendrez en sortie.

Capture

Une fois le script terminé, vous aurez le choix de le relancer sur un autre cluster.

Extend-8

 

 


 

Voici le contenu du script resize.sh qui générera la liste des datastores à traiter. Il se passe sur des datastores de type VMFS-5


 

#!/bin/sh
# Script de Julien VARELA
# Release v1.0 03/02/2015
#Extension des Datastores

#Export de la liste des datastores
esxcli storage filesystem list > /tmp/vmfs.txt

# Traitement des datastores en VMFS
cat /tmp/vmfs.txt | grep « VMFS-5 » | awk ‘{print $2}’ > /tmp/datastorelist.txt # Changer VMFS-5 par VMFS pour tout type de VMFS

#Lancemement du script pour extension des datastores en se basant sur le fichier datastorelist.txt
while read i; do /tmp/traitement.sh $i;done <  /tmp/datastorelist.txt

#Suppresion des fichiers temporaires
rm -rf /tmp/vmfs.txt
rm -rf /tmp/datastorelist.txt

 


Détail du script traitement.sh

#!/bin/sh
# Script de Julien VARELA
# Release v1.0 03/02/2015
#Extension des Datastores

# Récupération du naa pour le datastore souhaité
parted=$(vmkfstools -P /vmfs/volumes/$1 | grep « naa. » | sed ‘s/..$//’)
naa=$(echo $parted  | sed ‘s/ //g’)

#Récupération du dernier secteur disponible
endsecavailable=$(partedUtil getUsableSectors /vmfs/devices/disks/$naa | awk ‘{print $2}’)

#Récupération du dernier secteur actif
endsecactive=$(partedUtil get /vmfs/devices/disks/$naa | sed ‘1d’ |awk ‘{print $3}’)

#Récupération du numéro de la partition
numpartition=$(partedUtil get /vmfs/devices/disks/$naa | sed ‘1d’ |awk ‘{print $1}’)

#Récupération du premier secteur
firstsector=$(partedUtil get /vmfs/devices/disks/$naa | sed ‘1d’ |awk ‘{print $2}’)
echo « Nom du datastore a traiter :  » $1
echo « Identifiant du lun :  » $naa
echo « Premier secteur :  » $firstsector
echo « Dernier secteur en place :  » $endsecactive
echo « Dernier secteur disponible : « $endsecavailable #| awk ‘{print $2}’
echo « Numero de la partion :  » $numpartition

if [ $endsecactive = $endsecavailable ]
then
        echo « Le datastore est deja etendu »
else
echo « Resize de la partition »
partedUtil resize /vmfs/devices/disks/$naa $numpartition $firstsector $endsecavailable

echo « Rescan »
vmkfstools -V
echo « Execution commande growfs »
vmkfstools –growfs /vmfs/devices/disks/$naa:$numpartition /vmfs/devices/disks/$naa:$numpartition
echo « Rescan »
vmkfstools -V
echo « Fin de l’extension du datastore :  » $1
fi


Ps: Je ne suis pas un expert Shell ;). Donc vos remarques sont les bien venues pour l’améliorer.

 

Les datastores déjà étendue ne seront pas traités.

 

Capture

Voici le lien pour récupérer les scripts : ExtendDatastore

Il suffit de décompresser le fichier zip et de lancer le script powershell :=)

Laisser un commentaire