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 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 !

Fév 212013
 

# Créer une VM linux (Debian de préférence) avec 3 disques :
* 50Go <- OS
* 100Go <- NFS
* 100Go <- ISCSI

#VMWare Tools

apt-get install build-essential
apt-get install iscsitarget iscsitarget-dkms nfs-kernel-server

# NFS

cfdisk /dev/sdb
mke2fs /dev/sdb1
mkdir /nfs
echo /dev/sdb1 /nfs auto rw,user,auto 0 0 >> /etc/fstab
mount /nfs
echo /nfs *\(rw,sync,no_subtree_check\) >> /etc/exports
exportfs -a

#ISCSI

cfdisk /dev/sdc
mke2fs /dev/sdc1

mkdir /iscsi
echo /dev/sdc1 /iscsi auto rw,user,auto 0 0 >> /etc/fstab
mount /iscsi

echo ISCSITARGET_ENABLE=true>/etc/default/iscsitarget
echo Target iqn.2011-04.Stockage.SNAKENET:partage1 >>/etc/iet/ietd.conf
echo Lun 0 Path=/iscsi/partage0,Type=fileio >>/etc/iet/ietd.conf
echo Lun 1 Path=/iscsi/partage1,Type=fileio >>/etc/iet/ietd.conf

# Lun 4Go
dd if=/dev/zero of=/iscsi/partage0 seek=1M bs=4096 count=1
# Lun 10Go
dd if=/dev/zero of=/iscsi/partage1 count=0 obs=1 seek=10G

# expand lun of 1000Mo
dd oflag=append conv=notrunc if=/dev/zero of=/iscsi/partage0 bs=1MB count=1000

/etc/init.d/iscsitarget restart

That’s it 🙂

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 082012
 

Bon, vous voulez jouer avec VMWare VMotion, mais vous avez besoin d’un datastore partag? entre vos serveurs ESX(i), et vous vous tournez vers NFS pour ?a… (pas cher, toussa,…)

Si vous d?sirez mettre en place un serveur iSCSI, attendez ma prochaine parution..

VMWare ? besoin exclusivement de NFSv3 over TCP.

installez Linux de base
apt-get install nfs-kernel-server
Cr?ez/utilisez un filesystem d?di? (dans mon cas, je cr?e un r?pertoire ? la racine (c’est du lab, hein!)
mkdir /nfs
Indiquez ? NFS ce que vous autorisez ? partager: /etc/exports
/nfs *(rw,sync,no_subtree_check)
–> Dans ce cas-ci, je partage le dossier /nfs avec la plan?te enti?re.
V?rifiez la config:
exportfs -a

Voil?, votre « SAN » est cr??. Il faut maintenant l’attacher ? votre/vos ESX(i).
Tout se passe dans la partie
Page d'accueil-->Inventaire-->H?tes et clusters Onglet: Configuration
Pr?-requis: un « vmKernel » dans le m?me r?seau que le serveur NFS:

    Mat?riel–> Mise en r?seau
    Ajouter gestion r?seau
    VMKernel
    Choisissez la bonne carte r?seau/vSwitch (?a, c’est ? vous de savoir…)
    Donnez lui un nom parlant (dans mon cas, NFS). Adaptez pour les vLans, mais ne cochez pas d’autres fonctionnalit?s, sauf si vous en avez/aurez besoin…
    Donnez lui une adresse IP. (c’est cette adresse qu’il faut indiquer ? la place de l’asterisque dans le fichier /etc/exports

Maintenant que vous avez un vmKernel, utilisez-le.

    Mat?riel–> stockage
    Ajouter un stockage
    Syst?me de fichiers r?seau

      serveur: indiquez le nom/ip fixe de votre serveur NFS
      Dossier: indiquez le dossier partag?(le nom local du serveur NFS)

Voil?, vous avez normalement un datastore sur NFS!