Sep 152016
 

Pré-requis :

Un share réseau sur lequel l’objet COMPUTER de la machine VEEAM a les droits en écriture.
Le soft ignore les paramètres de credentials créés pour l’occasion, alors, autant s’en passer complètement 🙂
Le script doit être lancé en tant qu’administrateur !!

J’ai préféré créer un script qui fait tout plutôt que de faire de la config dans l’application et dans le script.

Le script :

# Author: Vladimir Eremin
# Created Date: 3/24/2015
# http://forums.veeam.com/member31097.html
#
# Adapted by Myself
# Must be run as administrator !
# backup everything except VMs defined

##################################################################
#                   User Defined Variables
##################################################################

$ExceptionVMNames = @('DSVA-VM01','VM-VEEAM-01')           # Theses VMs will NOT be backuped.
$HostName = "ESXNAME01"
$Directory = "\\NAS01.DOMAIN.COM\VEEAM"
$CompressionLevel = "5"              # Desired compression level (Optional; Possible values: 0 - None, 4 - Dedupe-friendly, 5 - Optimal, 6 - High, 9 - Extreme)
$EnableQuiescence = $True            # Quiesce VM when taking snapshot (Optional; VMware Tools are required; Possible values: $True/$False)
$Retention = "In3days"               # Possible values: Never , Tonight, TomorrowNight, In3days, In1Week, In2Weeks, In1Month)

$EnableNotification = $True          # Send an eMail about the backup when completed.
$SMTPServer = "smtp.domain.com"
$EmailFrom = "veeam.site1@domain.com"
$EmailTo = "myself@domain.com"
$EmailSubject = "VM backup of SITE 1"




# Pour la création des objets nécessaires au backup. Il n'est pas nécessaire de les créer dans l'interface graphique.
$ESX_name='ESXNAME01.domain.com'
$ESX_User='root'
$ESX_password='MemePasEnReve:-)'
$NAS_name='NAS01'

# Get-Command -Module VeeamPSSnapIn           # pour lister les commandes possibles...

##################################################################
#                   End User Defined Variables
##################################################################

Add-PSSnapin VeeamPSSnapin

Connect-VBRServer -server localhost

if ( Find-VBRViEntity -name $ESX_name -HostsAndClusters ) {
  Write-Host "ESX exist" -foregroundcolor GREEN
} else {
  Write-Host "ESX does not exist. Create it" -foregroundcolor CYAN
  Add-VBRESXi -Name $ESX_name -User $ESX_User -Password $ESX_password
}

$Server = Get-VBRServer -name $HostName

# Création du repository.
# Attention, les droits NTFS du share doivent autoriser l'objet COMPUTER a modifier les fichiers sur le NAS.
if (Get-VBRBackupRepository -name $NAS_name ) {
  Write-Host "Repository exist" -foregroundcolor GREEN
} else {
  Write-Host "Repository does not exist. Create it"  -foregroundcolor CYAN
  Add-VBRBackupRepository -Name $NAS_name -Type CifsShare -RotatedDrive -Description "Synology NAS" -Server $server -Folder $Directory
}

# Creation du proxy pour backup local
if ( ( Get-VBRViProxy | measure).count -ne 1  ) {
  Write-Host "Proxy does not exist. Create it" -foregroundcolor CYAN
  Get-VBRServer | ? { $_.type -eq "Local" } | Add-VBRViProxy -Description "Local Backup Proxy" -MaxTasks 2
} else {
  Write-Host "Proxy exist"  -foregroundcolor GREEN
}

#################### Main program ################

$MesssagyBody = @()

foreach ($VM in Find-VBRViEntity -Server $Server | ? {$_.type -eq "vm" -and $_.name -notin $ExceptionVMNames -and $_.name -notlike "*_clone_*" }){

  Write-Host "Starting backup of " $VM.name -nonewline -foregroundcolor cyan
  $ZIPSession = Start-VBRZip -Entity $VM -Folder $Directory -Compression $CompressionLevel -DisableQuiesce:(!$EnableQuiescence) -AutoDelete $Retention
  if ( $ZIPSession.Result -eq 'Failed' ) {
    Write-Host ". statut : " $ZIPSession.Result -foregroundcolor RED
  } else {
    Write-Host ". statut : " $ZIPSession.Result -foregroundcolor GREEN
  }


  If ($EnableNotification){
    $TaskSessions = $ZIPSession.GetTaskSessions().logger.getlog().updatedrecords
    $FailedSessions =  $TaskSessions | where {$_.status -ne "ESucceeded"}

    if ($FailedSessions -ne $Null){
      $MesssagyBody = $MesssagyBody + ($ZIPSession | Select-Object @{n="Name";e={($_.name).Substring(0, $_.name.LastIndexOf("("))}} ,@{n="Start Time";e={$_.CreationTime}},@{n="End Time";e={$_.EndTime}},Result,@{n="Details";e={$FailedSessions.Title}})
    }Else{
      $MesssagyBody = $MesssagyBody + ($ZIPSession | Select-Object @{n="Name";e={($_.name).Substring(0, $_.name.LastIndexOf("("))}} ,@{n="Start Time";e={$_.CreationTime}},@{n="End Time";e={$_.EndTime}},Result,@{n="Details";e={($TaskSessions | sort creationtime -Descending | select -first 1).Title}})
    }
  }
}

If ($EnableNotification){
  #                   Email formatting
  $style = "<style>BODY{font-family: Arial; font-size: 10pt;}"
  $style+=   "TABLE{border: 1px solid black; border-collapse: collapse;}"
  $style+=   "TH{border: 1px solid black; background: #ddddff; padding: 5px; }"
  $style+=   "TD{border: 1px solid black; padding: 5px; }"
  $style+= "</style>"

  $Message = New-Object System.Net.Mail.MailMessage $EmailFrom, $EmailTo
  $Message.Subject = $EmailSubject
  $Message.IsBodyHTML = $True
  $message.Body = $MesssagyBody | ConvertTo-Html -head $style | Out-String
  $SMTP = New-Object Net.Mail.SmtpClient($SMTPServer)
  $SMTP.Send($Message)
}
La commande pour la tache planifiée :
schtasks /create /SC daily /TN Daily_VM_backup /TR "C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -file C:\Script\Veeam_Zip_SITE1.ps1" /ST 23:00 /RU system
Et voila…
Fév 012016
 

Dans mon environnement, se trouvent des « vieux » ESX(i)s 4.1 qui se font régulièrement jeter par le vCenter.
Après avoir fait les vérifications de base (firewall, heartbeat,…), nous avons constaté que le problème venait de la vérification des certificats SSL.
Windows vérifie régulièrement que les certificats utilisés ne sont pas sur une liste de certificats révoqués. Pour ce faire, le PC (dans ce cas ci, le vCenter) se connecte chez Microsoft pour obtenir cette liste.
Or, nous n’avons pas autorisé cette connexion réseau, et donc, timeout, et le vcenter continue sa vie sans probleme.

MAIS, dernièrement, notre équipe réseau préférée a fait un changement dans la topologie et maintenant, les paquets ne sont plus justes droppés, mais rebondissent entre 2 routeurs jusqu’à la fin de leur TTL. Et donc, le timeout dure plus longtemps que prévu… et vCenter (et les ESX(i)s 4.1) n’aiment pas ça du tout.

Nous avons donc désactivé la Policy qui vérifie cette liste de certificats révoqués, et… plus AUCUN problème.

La Policy :
Local Computer Policy
-> Computer configuration
–> Windows Settings
—> Security Settings
—-> Public key Policies
====> Certificate Path Validation Settings
=====> Network retrieval
======> Define these Policy settings : aucune case cochée.

Bon, c’est moins sécurisé, mais… ça fonctionne.

Juin 262015
 

Cela fait un moment que j’essaye de trouver le juste ?quilibre entre l’allocation de ressource et ce que les utilisateurs demandent.
Tr?s souvent, c’est TRES largement sur-?valu?. Bien sur, VMware ESXi s’en sort tr?s bien et optimise ? la vol?e, mais… j’aime pas.
J’ai donc cherch? comment mesurer les ressources r?ellement utilis?es et j’en suis arriv? ? ces conclusions:

  • VMware montre ce que les VMs utilisent REELLEMENT.
    • Si vous d?marrez un Windows et le laissez ? ne rien faire pendant des jours, VMware vous montrera une utilisation de quelques centaines de Mo, pas plus. Or, si vous regardez le Gestionnaire des taches, vous constaterez une utilisation de 2 Go… Comment Est-ce possible?
    • VMware note ce qui est r?ellement utilis?. Or, Windows ne fout rien… Donc, VMware montre qu’il n’utilise rien..
  • Windows r?serve ses ressources pour le cas o?. Typiquement, un SQL Server va manger la quasi totalit? de RAM disponible pour lui tout seul (gourmand) alors que potentiellement, il n’en utilise que quelques Mo… Gourmand !
    • Un bon DBA pourra limiter l’utilisation de la RAM par SQL Server pour ?viter qu’il ne vampirise toute la RAM.

Mais comment trouver la « v?rit? » dans ce merdier? Ben… En mesurant les 2 et en r?fl?chissant.

Les 3 sont :

  1. Utilisation r?elle (VMware side)
  2. Utilisation Windows
  3. Le croisement des deux

Allons-y :

1. Ressources sur les 5 derniers jours

(au del?, il agr?ge les donn?es, et ca ne veux plus rien dire)

Function Get-TrueUsage {
? param ($Name, $Start=((get-date).adddays(-5)), $End=(get-date))
# Usage : Get-TrueUsage -Name VM01 -Start ((get-date).addMonths(-2)) -End (get-date)

? $MyVM=Get-VM -Name $name
? $MyVMView=$MyVM | get-view

? $obj=New-Object PSObject
? $obj | add-Member Noteproperty -name Name -value $Name
? $obj | add-Member Noteproperty -name Datacenter -value $MyVM | Get-Datacenter

? $StatsESX= $MyVM | select Name, @{n="AssignedMemory";e={$_.MemoryGB*1024*1024}}, @{n="HostMemoryUsage";e={$_.ExtensionData.Summary.QuickStats.HostMemoryUsage*1024}} 
? $StatsMemGuest=? Get-Stat -Entity ($MyVM ) -Start $Start -Finish $End -Stat mem.active.average | measure -max -min -Average Value
? $StatsCpuGuest=? Get-Stat -Entity ($MyVM ) -Start $Start -Finish $End -Stat cpu.usage.average? | measure -max -min -Average Value

? $obj | add-Member -MemberType Noteproperty -name AssignedMem?? -value $StatsESX.AssignedMemory
? $obj | add-Member -MemberType Noteproperty -name HostUsedMem?? -value $StatsESX.HostMemoryUsage

? $obj | Add-Member -MemberType NoteProperty -Name CPUSocket???? -Value ($MyVMView.config.hardware.NumCPU/(@{$true=$MyVMView.config.hardware.NumCoresPerSocket;$False=1}[$MyVMView.config.hardware.NumCoresPerSocket -gt 0 ]))
? $obj | Add-Member -MemberType NoteProperty -Name Corepersocket -Value @{$true=$MyVMView.config.hardware.NumCoresPerSocket;$False=1}[$MyVMView.config.hardware.NumCoresPerSocket -gt 0 ]

? $obj | add-Member -MemberType Noteproperty -name GuestMaxMem?? -value (($StatsMemGuest.Maximum) )
? $obj | add-Member -MemberType Noteproperty -name GuestMinMem?? -value (($StatsMemGuest.Minimum) )
? $obj | add-Member -MemberType Noteproperty -name GuestAvgMem?? -value ([math]::round($StatsMemGuest.Average) )

? $obj | add-Member -MemberType Noteproperty -name MemPrivShar?? -value ($MyVM.ExtensionData.Summary.QuickStats.PrivateMemory + $MyVM.ExtensionData.Summary.QuickStats.SharedMemory)

? $obj | add-Member -MemberType Noteproperty -name GaspillageMem -value (([Math]::round((1-($StatsMemGuest.Maximum/$StatsESX.AssignedMemory)) *10000 ))/10000 )

? $obj | Add-Member -MemberType NoteProperty -Name GuestMaxCpu?? -value ([Math]::round(($StatsCpuGuest.Maximum)*100 )/10000)
? $obj | Add-Member -MemberType NoteProperty -Name GuestMinCpu?? -value ([Math]::round(($StatsCpuGuest.Minimum)*100 )/10000)
? $obj | Add-Member -MemberType NoteProperty -Name GuestAvgCpu?? -value ([math]::round(($StatsCpuGuest.Average)*100 )/10000)

? $obj | add-Member -MemberType Noteproperty -name GaspillageCpu -value ([Math]::truncate($MyVMView.config.hardware.NumCPU - ($MyVMView.config.hardware.NumCPU*($StatsCpuGuest.Maximum/100))))

## WMI
? try{
??? $WMIPageFile=Get-WmiObject Win32_PageFileUsage -ComputerName $MyVM | select Name,CurrentUsage,AllocatedBaseSize,PeakUsage,TempPageFile
? } catch {
??? $WMIPageFile=''|select Name,CurrentUsage,AllocatedBaseSize,PeakUsage,TempPageFile 
? }

? $obj | Add-Member -MemberType NoteProperty -Name SwapFile????????? -value ($WMIPageFile.Name)
? $obj | Add-Member -MemberType NoteProperty -Name SwapCurrentUsage? -value ($WMIPageFile.CurrentUsage)
? $obj | Add-Member -MemberType NoteProperty -Name SwapAllocatedSize -value ($WMIPageFile.AllocatedBaseSize)
? $obj | Add-Member -MemberType NoteProperty -Name SwapPeak????????? -value ($WMIPageFile.PeakUsage)

? # Calculs recommandations

? # Pic m?moire + 20% et ensuite par blocks rond
? $NewMem=$obj.GuestMaxMem *1.2 /1024
? switch ($true) {
??? ( $NewMem -gt 4096) {$NewMem=([Math]::Truncate($NewMem / 2048)+1)*2048;break}
??? ( $NewMem -gt 3072) {$NewMem=4096;break}
??? ( $NewMem -gt 2048) {$NewMem=3072;break}
??? ( $NewMem -gt 1024) {$NewMem=2048;break}
??? ( $NewMem -gt 512)? {$NewMem=1024;break}
??? default???????????? {$NewMem=512;break}
? }

? # Pic CPU 
? $NewCpu=[System.Math]::Round($obj.GuestMaxCpu * $obj.CPUSocket * $obj.Corepersocket ,0)
? if (($obj.CPUSocket + $obj.Corepersocket) -gt 2 -and $NewCpu -le 1 ) {$NewCpu=2}
? if ($NewCpu -le 1 ) {$NewCpu=1}

? $obj | Add-Member -MemberType NoteProperty -Name RecommendedMemory -value $NewMem
? $obj | Add-Member -MemberType NoteProperty -Name RecommendedCpu??? -value $NewCpu

? $obj
}

Le Performance Monitor

Ce truc peux sauver tout un tas de compteur de votre machine. Les ressources sont quasiment illimit?es, une vrai mine d’or.

REM Delete the counter if it allready exist.
logman STOP VMWARE_AUDIT_MEMORY
logman DELETE VMWARE_AUDIT_MEMORY 
REM Create the counter
logman CREATE counter VMWARE_AUDIT_MEMORY -f bincirc -max 500 -si 2 --v -o "C:\perflogs\VMWARE_AUDIT_MEMORY" -c "\Memory\Available MBytes"

REM We need to delete the old file as the DataCollector does not support an existing file.
del C:\perflogs\VMWARE_AUDIT_MEMORY.blg
logman START VMWARE_AUDIT_MEMORY

Le m?lange des 2

Bon, ben… J’en suis pas encore l?…

On va comparer l’utilisation r?elle VMware (get-stat), les ressources utilis?es par la VM (perfmon), la swap (wmi),…

 

Fév 082015
 

Comme certains l’ignorent peut ?tre, mais les performances sont fortement impact?es en cas de snapshot. Lorsque l’hyperviseur doit rechercher le contenu d’un secteur disque, il va voir dans le? snapshot courant s’il le trouve. S’il ne le trouve pas, alors, il va voir dans le snapshot pr?c?dent, et ainsi de suite jusqu’? revenir au fichier VMDK original? (s’il doit revenir jusque l?, sinon, il s’arr?te d?s qu’il a trouv? ce qu’il cherche.. Ca peux se traduire par un volume de donn?e fort important pour pas grand chose…

Capture

Voici un exemple sous VMware Workstation d’un exemple de copie de fichiers Dans ce cas pr?cis, les donn?es sont sur le snapshot, peu d’impact sur le VMDK original except? les binaires pour la copie elle-m?me et des infos de l’OS sur les secteurs libres… Par contre, si je copie un fichier qui n’?tait pas dans le snapshot, l’impact est diff?rent:

Capture2

Bref… Evitez les snapshot autant que possible.. Et surtout, les snapshot en cascade a chaque click (Hein Olivier 😉 ) Le Olivier en question avait une VM sur disque USB3 avec des performances catastrophiques. Effectivement, une bonne dizaine de snapshot, ca impacte FORTEMENT. (Je ne vous raconte pas les temps de consolidation qui a ?t? n?cessaire) A+ les jeunes !

Mar 102013
 

C’est un point que tout d?butant a du mal ? maitriser. Aussi, je vais essayer de « vulgariser » un peu quelques points.

Graphiques de l’utilisation de la m?moire

Consummed

M?moire r?ellement utilis? par la VM.? Equivalent ? ce que le task manager montre. (+ Overhead!!)

Granted

M?moire qu’on a pr?vu de donner ? la VM. Ce qu’on a configur? dans les parametres de la VM.

Active

??? Si vous savez… expliquez moi 🙂

Balloon

M?moire forc?e dans la VM afin de forcer l’OS ? swapper sur disque (et donc, lib?rer de la RAM que VMWare pourra utiliser ? autre chose.)

Active

M?moire utilis?e r?ellement par VMWare pour la VM.
Si des m?canismes de ZIP de m?moire, et/ou de copie identique sont en place, alors, la quantit? indiqu?e sera inf?rieure ? « Consummed ».

Exemple :

Voici la m?moire utilis?e par VMWare pour la VM. Les valeurs sont ien diff?rentes...

Voici la m?moire utilis?e par VMWare pour la VM. Les valeurs sont ien diff?rentes…

Voici ce que la VM utilise au moment T

Voici ce que la VM utilise au moment T

Fév 032013
 

J’utilise beaucoup mon PC, il me sert ? ?norm?ment de choses, et je lui en demande de plus en plus.
J’ai r?cemment remarqu? qu’il n’utilisait pas tous les cores disponibles. Dans le TaskManager, je voyais un CPU travailler, un idle, un qui travaille, un idle,…
Donc, il n’utilisait que 4 de mes 8 cores … Pas glop.

Capture1

Un petit coup de Google, et voici comment d?bloquer l’?conomie d’?nergie de Windows 7(car c’est bien de ?a dont il s’agit! Afin d’?conomiser du courant, il bride le CPU, et ne le d?bride qu’en cas de gros besoin..)

Comme je n’ai pas envie de rendre mon fournisseur d’?lectricit? encore plus riche, on va faire en sorte que ce soit customisable facilement. (Via les profils de gestion d’?nergie de Windows par exemple..)

1* ?diter la base de registre en tant qu’administrateur afin d’afficher l’option dans la gestion d’?nergie. (Ce ne sera a faire qu’une seule fois)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583]
"Attributes"=dword:00000000

2* Modifiez le profil « performances ?lev?es » (par exemple) afin de lui faire faire ce que dit son nom:

Capture3

Et voil?!

Capture2

Maintenant, quand vous voulez tirer le maximum de votre jouet, vous passez en mode « Performances ?lev?es » et c’est partit.
Ensuite, si vous faites de la bureautique/du surf/ ou toute autre activit? ne n?cessitant pas autant de jus, vous repassez en mode « normal » ou « ?conomie d’?nergie »

Vous avez aim?? Remarqu? un gain de performance? Laissez moi un petit commentaire 🙂 merci

Sep 152012
 

Pour info, le VAAI est une API qui permet d’am?liorer sensiblement les performances entre un ESX et son SAN.
Pour plus d’infos –>; google

Comment voir si c’est activ?? Demandez ? votre ESX 🙂

Activer SSH

Dans VCenter, cliquez sur votre HOST, allez dans l’onglet Configuration, et choisissez la rubrique « Security Profiles »
Au niveau des « services » allez dans « propri?t?s »
Choisissez SSH, options, et cliquez sur « start » (au prochain red?marrage, ce sera d?sactiv?)

Interrogez votre ESX

Connectez vous en SSH (putty.exe) sur l’adresse IP de votre ESX
Authentifiez-vous (login : root et mot de passe de l’ESX)
Entrez la commande suivante :
esxcli storage core device vaai status get
Si cette commande ne vous renvois pas grand chose, v?rifiez dans VCenter que votre HOST vois tous ses datastore (ou au moins qu’il voit son SAN (ou NAS))

R?ponse du SAN

mpx.vmhba1:C0:T0:L0 <;-- Mon CDROM VAAI Plugin Name: ATS Status: unsupported Clone Status: unsupported Zero Status: unsupported Delete Status: unsupported mpx.vmhba32:C0:T0:L0 <;-- Mon Disque local VAAI Plugin Name: ATS Status: unsupported Clone Status: unsupported Zero Status: unsupported Delete Status: unsupported naa.60014053b36838dd4538d373fdbcf3d0 VAAI Plugin Name: ATS Status: supported Clone Status: unsupported Zero Status: supported
Delete Status: unsupported

t10.SYNOLOGYRAMDISK2DDR:1234567890:0_000
VAAI Plugin Name:
ATS Status: unsupported
Clone Status: unsupported
Zero Status: supported
Delete Status: unsupported

Dans ce cas-ci, on voit bien que mon NAS ne supporte que le Zero Status (bah! c’est d?j? ca!, il a 4 ans mon NAS)

Août 242012
 

Diagnostique:

    Votre VM utilise r?ellement 400Mo de RAM (tasklist)
    Dans le taskmanager, l’utilisation m?moire est de presque la totalit? de la RAM allou?e (et en plus, il n’indique pas RAM, mais Page File)

Que se passe t’il?

    Votre machine est en train de swapper ? mort

Pourquoi?

    Parce que VMWare lui demande!!
    ESX se trouve ? court de RAM pour faire tourner ses VMs, il demande alors ? chaque VM de mettre la RAM dans le pagefile

Impact:

  • votre VM est lente (elle swap ? mort)
  • Votre ESX est lent (il fait beaucoup d’I/O et n’a pas assez de RAM pour fonctionner normalement)
  • Votre SAN rame (ben oui, le pagefile se trouve dans la VM, et donc, dans le SAN)

Ce qu’il ne faut PAS faire (mais que tout le monde fait)

  • Je n’ai pas assez de RAM dans ma VM? Je vais en rajouter.
    NON!! Au contraire, enlevez en!

Ce que vous pouvez faire:

  • Si vous r?duisez la m?moire de toutes les VMs, votre ESX aura plus de RAM disponible et ira beaucoup mieux! De m?me que le SAN, etc…
  • Si vous d?placez une VM vers un autre ESX, vous all?gerez sa charge
  • Une r?gle que j’applique tout le temps: un VM n’est pas une machine physique! Si je dois ajouter 20Mo de RAM, je sais le faire, pas avec une physique!
    Une physique avec 2Go de RAM ne doit pas se retrouver, une fois virtuelle, avec 2Go de RAM!
  • Regroupez les VMs avec le m?me OS (m?me version) sur le m?me ESX. VMWare se rendra compte que vos VMs utilisent les m?mes espaces m?moires, et « fusionnera » les espaces m?moires identiques…

Mais…. Comment je le sais moi?!?!?

    Et bien malheureusement, VMWare ne fournit pas d’alerte ? ce sujet. Il consid?re ?a comme normal, et m?me comme une fonctionnalit?.
    MAIS, dans l’onglet « performance » de l’ESX, vous aurez acc?s ? un graphique sur la m?moire avec une courbe nomm?e « ballooning »
    Si vous voulez des performances, vous veillerez ? ne JAMAIS avoir la moindre valeur sup?rieure ? z?ro. Sous peine de voir les performances se d?grader ? vitesse grand V.

Amusez vous!