Installation VMware Consolidated Backup (VCB)

Jusqu’à présent pour sauvegarder un serveur Windows, il fallait installer un client de sauvegarde (Networker par exemple) puis sauvegarder les données ainsi que le System State. Pour réinstaller complètement un serveur, il fallait réinstaller l’OS et les applications avant de faire la restauration.

Les serveurs sont maintenant un ensemble de fichiers représentant d’une part la configuration « matérielle » (vmx) et d’autre part les données (vmdk) (ce sont les seuls fichiers qui nous intéressent dans le cadre de la gestion des sauvegardes). Il est donc possible de sauvegarder directement ces fichiers afin de faciliter les restaurations complètes.

Pour cela, VMware propose VMware Consolidated Backup (VCB) et plus récemment VMware Data Recovery.

Dans cet article, nous allons voir comment installer VCB. VMware Data Recovery sera traité dans un prochain billet.

Il existe plusieurs façons de configurer VCB. Dans notre cas, nous utiliserons le mode de transport SAN. C’est à dire que les données sauvegardées par VCB vont transiter par la fibre.

 

  1. Principe
  2. Voici les étapes d’une sauvegarde VCB :

    • Exécution de la commande de sauvegarde
    • Création d’un snapshot de la VM
    • Dans le cas d’une sauvegarde fullvm, copie du snapshot via la fibre sur un stockage externe
    • Dans le cas d’une sauvegarde file, montage du snapshot via la fibre sur le serveur VCB
    • Démontage du snapshot
    • Suppression du snapshot

     

  3. Prérequis 
    • Les binaires de VCB :
    • Le serveur VCB doit avoir accès au SAN.
    • Ne surtout pas présenter les LUNs contenant les datastore au serveur VCB maintenant.
    •  Créer un utilisateur ESX_VCB_SVC dans le domaine Active Directory. Je vous recommande de générer un mot de passe complexe via le logiciel Keypass.
    •  Ajouter l’utilisateur ESX_VCB_SVC  dans le groupe administrateur local du serveur VCB.
  4. Habilitation de l’utilisateur ESX_VCB_SVC à accéder au VCenter.
  5. Cette étape a pour  but de donner le droit à l’utilisateur ESX_VCB_SVC de créer un snaphot des VM puis de cloner ce snapshot.

    • Se connecter au vcenter

    • Faire un clic droit sur le nom du serveur VCenter puis choisir « Ajouter autorisation »

    • Sélectionner « Utilisateur Vmware Consolidated Backup » puis cliquer sur « Ajouter »

    • Saisir le nom de l’utilisateur ESX_VCB_SVC. Il faut préciser le nom du domaine. Cliquer sur « OK ».

     

  6. Désactivation de l’automount de Windows
  7. Pour sauvegarder les VM en utilisant la fibre, il faut présenter les LUN VMFS au serveur Windows VCB. Par défaut Windows essaie de monter le disque, de lui attribuer une lettre et de le signer. Dans le cas du VMFS, il ne faut surtout pas que le serveur VCB  monte les LUNs comme des partitions Windows.

    Pour désactiver l’automount :

    Pour cela lancer une fenêtre de commande et saisir les commandes suivantes :

    • Ouvrir l’utilitaire diskpart

     Diskpart

    • Désactiver l’auomount

    Automount disable

    • Vérification de la désactivation

    Automount

    • Quitter diskpart

     Exit

     

  8. Présentation des LUNs
  9. Les LUNs contenant les VM peuvent être présentés au serveur VCB.  Voici ce que préconise HP concernant les présentations des LUNs au VCB :

    Note

    When configuring VMware Consolidated Backup (VCB) with an EVA array, all vSphere servers must be set to VMware. However, the VCB proxy host, which is a Microsoft® Windows® server attached to the EVA, must be set to Microsoft Windows (Windows Server 2003) or Microsoft Windows 2008 (Windows Server 2008).

    Bien que d’habitude, on recommande de présenter les LUNs de la même façon à tous les serveurs partageants une ressource, dans ce cas précis, les LUNs sont présentés en mode VMware pour les ESX et en mode Windows pour le VCB.

     

  10. Installation de VCB
  11. Il est possible de l’automatiser. Dans notre cas, l’installation est manuelle.

     

  12. Configuration
  13. La configuration se trouve dans le fichier C:\Program Files (x86)\VMware\VMware Consolidated Backup Framework\config\config.js .

    Les clauses à modifiées dans ce fichier sont :

    • BACKUPROOT= »K:\\mnt »;  : Destination de la sauvegarde (il faut doubler les « \ »)
    • HOST= »XXXXXXXX »;  : Adresse du VCenter
    • USERNAME= »__sspi__ »;  : SSPI pour l’authentification intégrée
    • PASSWORD= »*** »;
    • TRANSPORT_MODE= »san »;  : Utilisation de la fibre

     

  14. Exécution
  15. Pour sauvegarder la VM nommée TEST (nom apparaissant dans le VCenter), la commande est la suivante :
    cscript "C:\Program Files (x86)\VMware\VMware Consolidated Backup Framework\generic\pre-command.wsf" "C:\Program Files (x86)\VMware\VMware Consolidated Backup Framework" "TEST" fullvm

    Du côté du VCenter, on peut voir le traitement :

    Cette commande créée un répertoire TEST-fullVM à l’emplacement BACKUPROOT. La VM est sauvegardée sous forme de fichier VMDK. Ces fichiers peuvent alors être sauvegardés sur bande.

    Les serveurs ainsi sauvegardés peuvent être réinstallés rapidement et par lots via Vmware Converter.

Catégories :Virtualisation, vSphere Étiquettes : , , , , ,

Extension d’un disque virtuel VMDK d’un serveur Windows

Les serveurs virtuels ont de nombreux avantages, il en existe un particulièrement intéressant: l’extension des disques.
Sur un serveur physique lorsque les disques sont pleins, il faut soit faire le ménage, soit capturer le disque (les disques dans le cas d’un raid) puis le remplacer par un plus grand et enfin restaurer l’image.
Avec les serveurs virtuels, il suffit de modifier les paramètres de la VM puis d’étendre la partition sous windows.
Voici les étapes pour étendre un disque d’un serveur Windows 2003 fonctionnant sur ESX 4.1.

Prérequis : Il faut supprimer les snapshots de la VM. Le datastore doit disposer de suffisamment d’espace. L’extension du disque peut être réalisée à chaud. Néanmoins le disque contenant le fichier de swap ne peut pas être étendu via Windows. Pour l’étendre, il faut utiliser une solution de type Winpe ou LiveCD Linux.

 


Se connecter au VCenter.

 


Sélectionner la vue « VM et modèles ».

 


Faire un clic droit sur la VM puis sélectionner « Modifier les paramètres ».

 


Sélectionner le disque puis augmenter sa taille à l’aide du champ « Taille Prévue » enfin cliquer sur « OK ».

 


Dans la taskbar, on peut voir que l’extension est terminée.

Il faut maintenant ouvrir une session avec droits administrateurs sur le serveur (TS, ILO, ou Vmrc).

 


Sur le serveur, ouvrir une fenêtre « cmd ».

 


Taper la commande « Diskpart ».

 


« List volume » pour déterminer la partition à étendre.

 


« Select volume n » (n est l’id du volume à étendre).


« Extend ».
 
La partition est étendue.

 

Nous verrons dans un prochain article comment étendre le disque contenant la partition de swap à l’aide d’un WINPE.

Catégories :Virtualisation, vSphere Étiquettes : , ,

Commenter son code powershell avec des tags

Sous Linux, les administrateurs peuvent compter sur plusieurs langages de scripts : Bash, Perl, KSH, … Powershell est une véritable évolution pour les administrateurs Windows. On dispose dorénavant d’un langage de script riche (utilisation du framework .net) et concis (enchainement des commandes avec des pipe). Cette richesse augmente la complexité au code.

Les développeurs vous le diront un code maintenable est un code documenté. En java, il existe la javadoc (documentation en html) qui peut être générée à partir de balises insérés dans le code. Pour les administrateurs systèmes, la documentation consiste à insérer des commentaires au dessus commandes (ex: @REM pour le batch). PowerShell (surtout la v2) permet de normaliser les commentaires.

  1. La syntaxe des commentaires
  2. Il existe 2 types de commentaires :

    • Commentaire monoligne :  le début de la  ligne doit commencer par le caractère # .
    • Commentaire multilignes :  le bloc de commentaires est ouvert par les caractères  <# et refermer par les caractères #> .
  3. Entête d’un fichier ps1 ou psm1
  4. Il est important que dés le début d’un fichier, on sache un certain nombre d’infos : traitements réalisés, l’auteur, la date, …. Pour cela, il faut définir un header.  Les balises sont libres. Voici celles recommandées dans les bonnes pratiques PowerShell:


    # =======================================================
    # NAME: XXXXXX.ps1
    # AUTHOR: Nom Prénom, Entreprise
    # DATE: DD/MM/YYYY
    #
    # KEYWORDS: YYY, XXXXXXXXX , AAAAAA
    # VERSION 1.X
    # DD/MM/YYYY added help to the functions
    # COMMENTS: Desription des traitements
    #
    #Requires -Version 2.0
    # =======================================================


  5. Commenter les fonctions
  6. <#
    .SYNOPSIS
    Description brève de la function
    .DESCRIPTION
    .PARAMETER
    .EXAMPLE
    Exemple d’appel de la fonction
    .INPUTS
    .OUTPUTS
    .NOTES
    NAME:  Nom de la note
    AUTHOR: Nom Prénom
    LASTEDIT: DD/MM/YYYY
    VERSION:1.0.0 Création de la fonction
    1.X.X Ajout d’une fonctionnalité
    .LINK
    http://www.xxxxx.com
    file.ps1
    #>

    Balise Description
    .SYNOPSIS Brève description commençant par un verbe
    .DESCRIPTION Description sur plusieurs lignes commençant par « La fonction xxxx  » .
    .PARAMETER Description des paramètres. Un balise .Parameter par paramètres.
    .EXAMPLE Exemple d’appel de la fonction avec un exemple de retour. Plusieurs exemples peuvent être cités.
    .INPUTS Description des objets acceptés en entrée. (??)
    .OUTPUTS Description des objets acceptés en sortie. (??)
    .NOTES Commentaires permettant de versionner le fonction.
    .LINK Lien vers des sites Web ou des fichiers
  7. Commenter le code
  8. Les commentaires dans le code sont libres. Il faut néanmoins essayer de les cadrer au maximum afin de dépersonnaliser le code dans le but de le rendre maintenable par n’importe qui.

    Exemple de balises :
    #TODO: Description du/des améliorations à apporter à une partie de code

    #INPROGRESS: Description du/des opérations en cours de développement

     

  9. Exemple de code

function Test-Port{
<#
 .SYNOPSIS
     Verifie d’un port tcp distant
 .DESCRIPTION
     La fonction TEST-Port retourne $true si le port est ouvert sinon $false
 .PARAMETER Host
        Nom du volume ex: c:
 .PARAMETER Port
        Numéro de port TCP (inférieure  à 65535)
 .PARAMETER Timeout
        Durée du timeout en ms (par défaut 300ms)
 .NOTES
     Author : Romain Bachimont
     Requires : PowerShell V2
 .EXAMPLE
     [ps] c:\foo> Test-Port « 10.17.215.50 »  8080
     true
  #>
param(
[Parameter(Mandatory=$true,Position=0)][String[]]$Host ,
[Parameter(Mandatory=$true,Position=1)][ValidateRange(0,65535)] [Long]$Port,
[Parameter(Mandatory=$false,Position=2)][Long]$Timeout=300
)
$tcpclient = new-Object system.Net.Sockets.TcpClient
$iar = $tcpclient.BeginConnect($Host,$Port,$null,$null)

# Set the wait time
$wait = $iar.AsyncWaitHandle.WaitOne($Timeout,$false)

# Check to see if the connection is done
if(!$wait)
{
# Close the connection and report timeout
$tcpclient.Close()
Return $false
}
else
{
# Close the connection and report the error if there is one
$error.Clear()
$tcpclient.EndConnect($iar) | out-Null
if(!$?){$failed = $true}
$tcpclient.Close()
}

# Return $true if connection Establish else $False
if($failed){return $false}else{return $true}
}


En complément de ce billet, je vous recommande le livre suivant:
http://blogs.msdn.com/b/microsoft_press/archive/2009/12/16/new-book-windows-powershell-2-0-best-practices.aspx
Il vous permettra de partir sur des bases solides et de rendre vos scripts maintenables et évolutifs.

Catégories :PowerShell, Scripting Étiquettes : , ,