Il restore di singole mail in Exchange 2010/2013 usando Windows Server Backup

Facebooktwittergoogle_plusredditlinkedin

Non è facilissimo eseguire il restore di singole mail o singole mailbox, senza usare un software di backup di terze parti, o Data Protection Manager di Microsoft.

Ipotizzando che un certo utente abbia eseguito un “hard-delete” di alcune mail, e quindi non sia più in grado di recuperarle “autonomamente”, dovrà intervenire un amministratore per il recupero delle mail da un backup precedente.

Se non si dispone di software di backup professionali, l’unica alternativa è utilizzare Windows Server Backup (2008 R2 o 2012) del server Exchange.  Purtroppo il suo limite principale è quello di saper restorare solo interi database, e non direttamente singole mailbox o singole mail.

Quindi la strategia generale da seguire è la seguente :

  1. Identificare il backup da utilizzare per il recupero delle mail
  2. Eseguire il restore completo del/dei database su posizione alternativa
  3. Creare il Recovery Database in Exchange
  4. Eseguire il controllo di “corretto stato” del database restorato con Eseutil
  5. Montare il database restorato nel Recovery Database
  6. Utilizzare il comando Restore-Mailbox per ripristinare le mail cancellate
  7. Smontare ed eliminare il Recovery Database

Ecco ora i dettagli delle singole fasi.

Fase 1

Dovremo utilizzare un backup che siamo certi contenga le mail da recuperare.  In molti casi andrà bene quello del giorno prima, in altri casi bisogna opportunamente scegliere backup più vecchi.   Identificare il supporto corretto, ed “agganciarlo” (se già non lo è) al server Exchange (per esempio, potrebbe essere un disco USB o un disco su NAS mappato tramite iSCSI).

Fase 2

Windows Server Backup (quello presente in Windows Server 2008 R2 o Windows Server 2012), esegue il backup di Exchange a livello applicativo e a livello di volume, utilizzando il servizio VSS (Volume Shadow-Copy Service).  Questo significa che il backup sarà perfettamente consistente, grazie alla collaborazione tra Windows Server Backup e l’Exchange VSS Writer.  Però, non è possibile indicare a Windows Server Backup di backuppare solo un certo database o certe mailbox : in fase di backup, andranno selezionati tutti i volumi (interi) dove risiedono i database (.edb) e i logs di Exchange.

Questo si riflette anche nella fase di restore : non è possibile indicare di restorare solo un singolo database, ma verranno restorati tutti i DB contenuti nel backup.   Per le aziende che utilizzano un solo DB, questo non è un problema, ma per quelle che utilizzano più database, questo può rappresentare una grossa perdita di tempo.

Aprire Windows Server backup, e lanciare la procedura di restore.  Selezionare poi la data precisa del backup prescelto, utilizzando il calendario proposto dalla procedura : in grassetto sono evidenziate tutte le date per le quali esiste un backup da restorare (Fig. 1) :

exrest1.JPG      Fig. 1

Quindi si indica come elemento di restore le “Applicazioni” (se non dovesse essere disponibile la selezione, sicuramente il backup non è stato eseguito a regola d’arte e non è disponibile il restore applicativo con consistenza garantita dei database).  Fig. 2 :

exrest2.JPG      Fig. 2

Alla schermata successiva il wizard si accorge della presenza dei database (consistenti) di Exchange, e con il tasto “Visualizza Dettagli” è possibile visualizzarli.  Non è possibile restorare uno solo dei database (questo è uno svantaggio di Windows Server Backup rispetto ai software professionali). Fig. 3 :

exrest3.JPG      Fig. 3

Si devono restorare i database in un percorso alternativo (Fig. 4).  Si consiglia di utilizzare altri dischi interni del server Exchange (oppure provenienti da mappature iSCSI su NAS/SAN), sui quali ci sia sufficiente spazio per ospitare il restore di tutti i database.  Nel percorso utilizzato, dovrà essere successivamente creato il Database di Recupero (vedi passaggi successivi).

exrest4.JPG      Fig. 4

Fase 3

Si deve ora creare il Recovery Database, utilizzando il percorso indicato nella procedura di restore.  Nel Recovery Database verrà montato il database restorato (contenente le mail da recuperare), e da questo verranno estratte le mail necessarie con re-inserimento nel database di produzione (merge).

Per creare il Recovery Database è necessario utilizzare una linea di comando Powershell :

New-MailboxDatabase  -Name “RecoveryDB”  -Server FQDN_server_exchange  -EDBFilePath “X:RecoveryDBpercorso_originale_file_edb”  -LogFolderPath “X:Recoverydbpercorso_originale_logs”  -Recovery

Quindi, ipotizzando che il database originale avesse database e logs nei seguenti percorsi :

  • Server : “EXC.Adatum.com”
  • DB : ”F:DB1db1.edb”
  • Logs : “G:LOGS1″

il precedente comando diventa :

New-MailboxDatabase  -Name “RecoveryDB”  -Server VAN-EX1.adatum.com  -EDBFilePath “X:RecoveryDBF_DB1db1.edb”  -LogFolderPath “X:RecoveryDBG_LOGS1”  -Recovery

Nella seguente Fig. 5, ecco un esempio di esecuzione del suddetto comando, ipotizzando di avere un database iniziale di nome “Accounting” su un Mailbox Server “VAN-EX1.adatum.com”, con database “Accounting.edb” posizionato in “D:AccountingDB” e i logs relativi posizionati in “C:AccountingLogs” :

ese1.JPG    Fig. 5  (clicca sulla foto per ingrandirla)

Nella Fig. 5 è chiaramente visibile il warning “This database must be brought into a clean shutdown state before it can be mounted”.  Lo stato di “Clean shutdown” è raggiungibile con la procedura della prossima Fase 4.

Fase 4

Il Database appena restorato potrebbe essere in uno stato “non corretto” (per esempio con alcuni logs non ancora applicati al database).  Questo stato “sporco” non consentirebbe il suo montaggio nel database di recupero.

Bisogna allora utilizzare l’utility “Eseutil” per controllare lo stato ed eventualmente riparare il database.

La sintassi Eseutil per il controllo del database è il seguente (posizionare il prompt dei comandi nel preciso percorso dove risiede il database) :

Eseutil /mh  nome_database.edb 

In Fig. 6 è riportata l’esecuzione del suddetto comando sul database “Accounting.edb” appena restorato, con l’indicazione di “Dirty Shutdown” (a causa del log 39 mancante, in questo esempio) :

ese2.JPG     Fig.6  (clicca sulla foto per ingrandirla)

La sintassi di Eseutil per la riparazione del database (Soft Recovery) in caso di “Dirty Shutdown” è il seguente (posizionare il prompt dei comandi nel preciso percorso dove risiede il database) :

Eseutil /R Exx /i /d /l:percorso_dove_risiedono_i_Logs (Exx può essere E00, E01, E02, E03….  prefisso dei logs del database interessato)

In Fig. 7 ecco l’esecuzione del suddetto comando, ipotizzando che i logs si trovino nel percorso “C:AccountingLogs”, e quindi indicando tale percorso al comando con il parametro “/l”.  In caso di database e logs nello stesso percorso, tale parametro poteva essere omesso :

ese3.JPG     Fig. 7  (clicca sulla foto per ingrandirla)

In Fig. 8 è stato rieseguito il comando “Eseutil /mh” per confermare la correzione dello stato in “Clean Shutdown” :

ese4.JPG     Fig. 8  (clicca sulla foto per ingrandirla)

Fase 5

Si monta ora il database restorato nel Database di Recupero.  Il comando powershell per l’operazione è il seguente :

Mount-Database “RecoveryDB   (usare il nome del vostro database di recupero)

Nella console grafica di Exchange di Fig. 9, si nota ora il database di recupero correttamente montato :

ese5.JPG     Fig. 9

Fase 6

Ora è necessario identificare, nel database di recupero,  le mail da restorare ed eseguirne il ripristino nel database di produzione.   Anche qui, non esiste un wizard grafico che possa eseguire la procedura, ma siamo costretti a ricorrere a comandi di powershell.

Se si utilizza Exchange 2010 RTM, l’unico comando disponibile sarebbe : Restore-Mailbox

Da Exchange 2010 SP1 in poi, diventa disponibile anche il comando New-MailboxRestoreRequest .   Ufficialmente, sarebbe quest’ultimo il comando da utilizzare, mentre Restore-Mailbox assumerebbe lo stato “deprecato”.

In realtà, Restore-Mailbox è sempre funzionante, ed è dotato della possibilità di estrarre mail dal Recovery Database in base ad intervalli di tempo (per esempio, estrarre e recuperare tutte le mail tra il 10 aprile 2014 e il 10 maggio 2014) : questa operazione non è (stranamente!) nelle capacità del comando New-MailboxRestoreRequest.

Entrambi i comandi hanno comunque parecchi parametri che permettono di localizzare mail all’interno del database di recupero, in base a diverse condizioni impostabili (es. per tipo di elemento, per data, per cartella, per parole contenute nelle mail, ecc.). Consiglio di analizzare tali parametri consultando l’help in linea dei due comandi ai seguenti link :

http://technet.microsoft.com/it-it/library/bb125218(v=exchg.141).aspx

http://technet.microsoft.com/it-it/library/ff829875(v=exchg.141).aspx

Ecco allora un esempio di linea di comando per recuperare mail in base ad intervalli di tempo :

Restore-Mailbox   -Identity nome_mailbox_da_recuperare   -RecoveryDatabase nome_recovery_database   -StartDate 04/10/2014   -EndDate 05/10/2014

Prima di eseguire in produzione il comando precedente, se ne possono testare gli esiti utilizzando il parametro “-ValidateOnly“.  Ecco l’esecuzione in Fig. 10, dove ipotizzo di voler ripristinare le mail tra il 10 aprile e il 10 maggio di un’utenza esemplificativa (tale “Michiyo”) :

ese6.JPG     Fig. 10 (clicca sulla foto per ingrandire)

Se gli esiti della simulazione sono soddisfacenti, si può eseguire il comando in produzione.  L’esempio delle Figg. 11 e 12 esegue il ripristino delle mail dell’utenza Michiyo, comprese tra il 10 aprile e il 10 maggio 2014.  Ricordo che le mail restorate vengono “unite” a quelle già presenti in produzione, che quindi non vengono perse.  E’ attivo per default anche il controllo dei duplicati, in modo che le mail già esistenti in produzione non vengano ripristinate.

ese7.JPG     Fig. 11 (clicca sulla foto per ingrandire)

ese8.JPG     Fig. 12 (clicca sulla foto per ingrandire)

Fase 7

Una volta terminata l’operazione di restore, è possibile smontare ed eliminare il database di recupero.

Smontaggio ed eliminazione possono essere eseguiti con l’unico comando :

Remove-MailboxDatabase   -Identity “RecoveryDB”

Ricordare di eliminare a mano logs e DB dalle cartelle del database di recupero : questo non viene eseguito in automatico.

Buon restore!!!  :-)

Share/Bookmark

Installare vCloud Automation Center 6 (vCAC 6) – parte 3 – vCAC Appliance

Facebooktwittergoogle_plusredditlinkedin

Questo appliance include la vCloud Automation Center console che fornisce un unico portale per il  provisioning self-service e la gestione dei servizi cloud ed anche per la creazione e l’amministrazione dei vari servizi. Deployment: Usando il vSphere web client, cliccate con il tasto destro sul vostro Datacenter e selezionate “Deploy OVF Template…” Selezionate il …

Continue reading

System Administrator Appreciation Day 2014

Facebooktwittergoogle_plusredditlinkedin

Questo venerdì è il 15° anno del “System Administrator Appreciation Day”, una ricorrenza (tutta americana, ma ultimamente importata anche in altri paesi). what exactly is SysAdmin Day? Oh, it’s only the single greatest 24 hours on the planet… and pretty much the most important holiday of the year. It’s also the perfect opportunity to pay […]

Pernixdata FVP: accellerare con semplicità

Facebooktwittergoogle_plusredditlinkedin

Pernixdata FVP permette di accellerare gli I/O di qualsiasi VM ututilizzando schede flash (SSD o PCIe) presenti nelgli host ESXi. Il prodotto  è stato pensato per essere semplice e ridurre al minimo le possibilità di scelta:

Innanzi tutto possiamo scegliere se accellerare una VM o un DATASTORE.

Una VM viene accellerata nella sua interezza, non c’è necessità/possibiltà di scegliere uno specifico VMDK, è sicuramente MEGLIO accellerare tutti gli I/O generati da una VM piuttosto che un sottoinsieme di I/O.

Basta selezionare la VM e scegliere la policy di accellerazione: questa può essere write-through o write-back, con quest’ultima devo specificare il livello di ridondanza (numero di repliche) e nient’altro. Appunto MOLTO SEMPLICE.

 

Da qui in poi, tutti gli I/O generati dalla VM vengono accellerati. Non c’è necessità di spostare la VM in un datastore più performante, o altre attività complesse.

Accellerare un DATASTORE permette di creare una policy d’accellerazione per quel datastore, seguendo la stessa metodologia usata per le singole VM: selezionare ADD DATASTORE nel flash cluster, selezionate il datastore e scegliete la write policy desiderata, la policy verrà assegnata a tutte le VM presenti in quel datastore.Di nuovo MOLTO SEMPLICE.

Pernixdata FVP lo si installa semplicemente (è un VIB da importare con update manager), non richiede reboot degli host, dopo l’installazione basta aggiungere le VM (o I datastore ) al FLASH CLUSTER ed iniziare a beneficiare dell’aumento di performances.

Pernixdata FVP: accellerare con semplicità

Facebooktwittergoogle_plusredditlinkedin

Pernixdata FVP permette di accellerare gli I/O di qualsiasi VM ututilizzando schede flash (SSD o PCIe) presenti nelgli host ESXi. Il prodotto  è stato pensato per essere semplice e ridurre al minimo le possibilità di scelta:

Innanzi tutto possiamo scegliere se accellerare una VM o un DATASTORE.

Una VM viene accellerata nella sua interezza, non c’è necessità/possibiltà di scegliere uno specifico VMDK, è sicuramente MEGLIO accellerare tutti gli I/O generati da una VM piuttosto che un sottoinsieme di I/O.

Basta selezionare la VM e scegliere la policy di accellerazione: questa può essere write-through o write-back, con quest’ultima devo specificare il livello di ridondanza (numero di repliche) e nient’altro. Appunto MOLTO SEMPLICE.

 

Da qui in poi, tutti gli I/O generati dalla VM vengono accellerati. Non c’è necessità di spostare la VM in un datastore più performante, o altre attività complesse.

Accellerare un DATASTORE permette di creare una policy d’accellerazione per quel datastore, seguendo la stessa metodologia usata per le singole VM: selezionare ADD DATASTORE nel flash cluster, selezionate il datastore e scegliete la write policy desiderata, la policy verrà assegnata a tutte le VM presenti in quel datastore.Di nuovo MOLTO SEMPLICE.

Pernixdata FVP lo si installa semplicemente (è un VIB da importare con update manager), non richiede reboot degli host, dopo l’installazione basta aggiungere le VM (o I datastore ) al FLASH CLUSTER ed iniziare a beneficiare dell’aumento di performances.

Import-Export VM notes with PowerCLI

Facebooktwittergoogle_plusredditlinkedin

In a previous post I blogged about exporting and importing custom attributes, but sometimes you need to do the same also for notes.

A little PowerCLI and all is done quickly.

Export

Just connect to our source vCenter, export all notes and disconnect:

Connect-VIserver -server VCsource.vlab.local
$vmList = Get-VM
$noteList = @()
foreach ($vm in $vmList) {
$row = “” | Select Name, Notes
$row.name = $vm.Name
$row.Notes = $vm | select Notes
$notelist += $row
}
$noteList | Export-Csv “.exported-notes.csv” –NoTypeInformation

Disconnect-VIServer “*” -Confirm:$False

 

Import

And now lets import all notes:

Connect-VIserver -server VCdest.vlab.local

$noteList = Import-Csv “.exported-notes.csv”
foreach($nLine in $noteList){
if ( $nLine.Notes -ne “”){
Set-VM -VM $nLine.Name -Notes $nLine.Notes -Confirm:$false
}
}

Disconnect-VIServer “*” -Confirm:$False

Tagged: powerCLI, script

Import-Export delle note delle VM tramite PowerCLI

Facebooktwittergoogle_plusredditlinkedin

Nel precedente post ho presentato un paio di script per importare e esportare i custom attributes, ma capita di aver bisogno di fare la stessa cosa anche per le note delle vm.

Anche in questo caso, con pochissime righe in PowerCLI il tutto si risolve velocemente.

Export

Per esportare è sufficiente connettersi al vCenter, esportare tutte le note e disconnettersi:

Connect-VIserver -server VCsource.vlab.local
$vmList = Get-VM
$noteList = @()
foreach ($vm in $vmList) {
    $row = "" | Select Name, Notes
    $row.name = $vm.Name
    $row.Notes = $vm | select Notes
    $notelist += $row
}
$noteList | Export-Csv ".exported-notes.csv" –NoTypeInformation

Disconnect-VIServer "*" -Confirm:$False

 

Import

E ora reimportiamo il tutto:

Connect-VIserver -server VCdest.vlab.local

$noteList = Import-Csv ".exported-notes.csv"
foreach($nLine in $noteList){
    if ( $nLine.Notes -ne ""){
        Set-VM -VM $nLine.Name -Notes $nLine.Notes -Confirm:$false
    }
}

Disconnect-VIServer "*" -Confirm:$False

Tagged: powerCLI, script

Blog italiani (e in italiano) nel mondo IT/ICT