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.
- Principe
- 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
- 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.
- Habilitation de l’utilisateur ESX_VCB_SVC à accéder au VCenter.
- 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 ».
- Désactivation de l’automount de Windows
- Ouvrir l’utilitaire diskpart
- Désactiver l’auomount
- Vérification de la désactivation
- Quitter diskpart
- Présentation des LUNs
- Installation de VCB
- Configuration
- 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
- Exécution
Voici les étapes d’une sauvegarde VCB :
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.
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 :
Diskpart
Automount disable
Automount
Exit
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.
Il est possible de l’automatiser. Dans notre cas, l’installation est manuelle.
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 :
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.
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.
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.
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.
Il existe 2 types de commentaires :
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
# =======================================================
<#
.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
#>
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
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.