Il database della posta di un server Microsoft Exchange è destinato a crescere con il tempo e l’utilizzo. Quello che i non addetti ai lavori non sospettano è che cancellando dei contenuti questi non liberano spazio sul disco e non fanno diminuire la dimensione del file di database. Supponendo di avere un database di Exchange da 30GB e di eliminare o spostare dei contenuti per un complessivo di 5GB, lo spazio disco occupato rimarrà di 30GB. All’interno del file di database saranno disponibili 5GB di spazio bianco, dove verranno inseriti i futuri contenuti. Per esigere la liberazione dello spazio disco esistono due strade: creare un nuovo database e spostare tutte le mailbox dal DB esistente a quello appena creato, eliminando quindi il DB una volta conclusa la migrazione, oppure eseguire un defrag del DB esistente. In questo articolo vedremo come muoversi utilizzando l’opzione della deframmentazione, tenendo conto che l’operazione comporta la messa offline del DB e quindi la disconnessione di tutti gli utenti attivi su di esso.
Innanzitutto possiamo utilizzare un comando da shell che ci può indicare quanto spazio disco libereremmo eseguendo un defrag. Il comando è:
Get-MailboxDatabase -Status | ft name,databasesize,availablenewmailboxspace
In questo caso vediamo un database con un’occupazione di 81GB di cui 20GB circa disponibili e liberabili tramite defrag.
Durante il processo di defrag dobbiamo tenere conto che avremo bisogno di spazio disco in quanto il DB verrà momentaneamente creato in un file di appoggio e quindi, ad un certo punto, avremo entrambi i file di DB presenti sul disco. Per sapere quanto spazio disco temporaneo servirà dobbiamo considerare la dimensione prevista del nuovo DB moltiplicata per 1,1.
Nel nostro caso avremmo quindi 81,76GB – 20,28GB = 61,46GB x 1,1 = 67,63GB. Per sicurezza quindi sarebbe consigliato disporre di almeno 70GB per avere un minimo di margine. Qualora non avessimo sufficiente spazio disco dovremmo specificare un percorso alternativo per far transitare il file DB temporaneo.
Il comando da utilizzare per l’operazione di deframmentazione è, neanche a dirlo, ESEUTIL.
Come anticipato, il comando va eseguito con il DB offline. Provvedo a smontarlo, con il comando Dismount-Database:
Dismount-Database ‘Mailbox Database 1666379196’
ora con ESEUTIL eseguiamo la deframmentazione. Nel mio caso ho previsto un percorso alternativo per il DB temporaneo, non disponendo di sufficiente spazio disco dove dovrà risiedere il DB di produzione.
eseutil /d ‘Mailbox Database 1666379196.edb’ /tt:\tempDBExchange\temp.edb
Nel mio caso l’unità T: è una risorsa mappata su un NAS, quindi non è necessario che la locazione temporanea sia un disco connesso direttamente al server.
Armiamoci di tanta pazienza o andiamo a fare un giro quando parliamo di DB così grandi. Nello specifico l’operazione ha richiesto quasi un’ora e mezza, come si vede dal risultato esposto a fine lavori:
Ora non resta che rimontare il DB per fare in modo che l’operatività del server venga ristabilita, con il comando
Mount-Database ‘Mailbox Database 1666379196’
Ora verifichiamo, per scrupolo, che la dimensione del DB si sia davvero ridotta rilasciando quella ventina di GB di whitespace, utilizzando nuovamente il comando
Get-MailboxDatabase -Status | ft name,databasesize,availablenewmailboxspace
Circa 57GB di DB e un centinaio di MB di whitespace. Missione compiuta.
1 Comment