Deframmentare il database delle cassette postali di Exchange con Eseutil /d PowerShell
Riassunto: La deframmentazione del database di Exchange rimuove i frammenti e dispone i dati o le informazioni in ordine continuo, contribuendo a garantire la salute del database e a migliorare le prestazioni di lettura. Inoltre, riduce il database eliminando lo "spazio bianco", il che aiuta a ridurre le dimensioni del database e a risparmiare spazio sull'unità. In questo blog abbiamo condiviso i passaggi per deframmentare e ottimizzare il database della cassetta postale di Exchange utilizzando le cmdlet di PowerShell.
In Microsoft Exchange Server, le dimensioni del database aumentano con la creazione di un maggior numero di caselle di posta elettronica e con la generazione di dati da parte degli utenti che inviano/ricevono e-mail.
Quando alcuni elementi di posta vengono eliminati dalle caselle postali o le caselle postali vengono rimosse dai database di Exchange, lo spazio libero lasciato dagli elementi eliminati non viene recuperato.
Ad esempio, se la dimensione del database è di 10 GB e si rimuove una casella di posta elettronica di ~2 GB, il database rimarrà di 10 GB. Lo spazio di 2 GB lasciato dalla casella di posta eliminata è chiamato “spazio bianco“.
Pertanto, è importante e una best practice recuperare lo spazio bianco deframmentando il database di Exchange. Ciò ridurrà le dimensioni del database e aiuterà a prevenire i problemi di corruzione del database causati da uno spazio di archiviazione ridotto o assente.
Perché deframmentare il database della cassetta postale di Exchange?
La deframmentazione è un processo di pulizia di tutto lo spazio di archiviazione inutilizzato o di recupero dello spazio bianco del database, di rimozione dei frammenti di dati e di disposizione delle informazioni in regioni contigue per un accesso rapido.
Dal punto di vista delle prestazioni, la deframmentazione (Eseutil /d) rende più veloce l’accesso al database in quanto Exchange Server non deve elaborare un file di grandi dimensioni in memoria o aprire e cercare il file, il che può comportare un gran numero di input/output dallo storage per nulla.
Un altro aspetto è il funzionamento del server. Come forse sapete, Exchange Server è sensibile allo stato di salute del database in caso di assenza o carenza di spazio di archiviazione.
I database tendono a riempire il disco rigido di spazio inutilizzato o di file di registro. Se lo spazio di archiviazione non viene aumentato o i registri non vengono eliminati, il database può subire danni e corrompersi. Di conseguenza, il database di Exchange si smonta, interrompendo la connettività client-server e impedendo agli utenti di inviare o ricevere e-mail.
Pertanto, sarebbe opportuno impostare una pianificazione per controllare periodicamente lo stato del database, a seconda delle dimensioni e del numero di utenti. Un database danneggiato può causare la perdita di dati, servizi e attività.
Cose da ricordare prima di deframmentare il database delle caselle di posta di Exchange con Eseutil /d
Prima di eseguire il comando Eseutil /d per deframmentare il database di Exchange, verificare quanto segue:
- Per deframmentare un database di Exchange Server, il database deve essere smontato. Purtroppo, questo significa che gli utenti non potranno accedere alle loro caselle di posta elettronica durante questa operazione.
- La deframmentazione del database di Exchange deve essere eseguita solo dopo l’orario di ufficio, poiché potrebbe richiedere del tempo per essere completata (a seconda delle dimensioni del database e del server/storage).
- Si consiglia vivamente di eseguire il backup del database prima della deframmentazione, in caso di necessità.
- Assicurarsi che l’unità in cui è memorizzato il database disponga di spazio libero sufficiente, equivalente o superiore alle dimensioni del database (preferibilmente 1,1x o 1,2x delle dimensioni del database). Se la capacità di archiviazione è insufficiente, questo potrebbe causare un problema.
Per calcolare lo spazio necessario, è necessario verificare le dimensioni del database di Exchange Server che richiede la deframmentazione. A tale scopo, è possibile utilizzare il cmdlet PowerShell Get-MailboxDatabase, come indicato di seguito.
Get-MailboxDatabase -Status | ft nome, dimensione del database, spazio disponibile per la casella di posta elettronica -auto
L’output mostrerà il nome del database, DatabaseSize e AvailableNewMailboxSpace.
Come si può vedere dall’esempio precedente, il database della cassetta postale 0954395982 ha una dimensione di 247,9 MB.
D’altra parte, ha anche 74,34 MB di spazio bianco. Naturalmente si tratta di un piccolo database con poche caselle di posta. Ma su database più grandi, la deframmentazione (Eseutil /d) migliorerà notevolmente le prestazioni dei dischi e il funzionamento del server.
È possibile utilizzare le seguenti formule per calcolare lo spazio libero totale necessario per la deframmentazione del database delle cassette postali di Exchange.
- (DatabaseSize) – (AvailableNewMailboxSpace) = (Dimensione effettiva del database).
- (Dimensione effettiva del database) X 1,1= (Spazio necessario per la deframmentazione).
250MB – 75MB = 175MB
175MB X 1,1 = 192,5MB – è lo spazio libero minimo richiesto per deframmentare il database delle cassette postali di Exchange.
NOTA: nei calcoli sopra riportati abbiamo arrotondato 247,9 MB come 250 MB.
Passi per deframmentare il database delle caselle di posta elettronica di Exchange utilizzando Eseutil /d cmdlet
Per deframmentare e ottimizzare un database di cassette postali di Exchange, procedere come segue:
Passo 1: avviare Exchange Management Shell (EMS).
Fase 2: Andare alla cartella in cui si trova il database da deframmentare usando il comando cd. Ad esempio,
cd "C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\Mailbox Database 0954395982"
Fase 3: Eseguire il seguente comando per smontare il database della cassetta postale di Exchange.
Smontare il database <nome database>
Fase 4: Una volta smontato il database, utilizzare il seguente comando EseUtil comando per avviare il processo di deframmentazione.
Eseutil /d "Database mailbox 0954395982.edb" /t "temp_0954395982.edb"
Fase 5: Dopo la deframmentazione (che può richiedere tempo a seconda delle prestazioni del server/storage e delle dimensioni del database), montare nuovamente il database utilizzando il cmdlet PowerShell Mount-Database.
Monta il database "Database mailbox 0954395982".
Fase 6: Dopo aver montato il database e testato la connettività degli utenti interessati, è possibile verificare la deframmentazione del database ricontrollando le dimensioni del database con il cmdlet PowerShell Get-MaiboxDatabase.
Get-MailboxDatabase -Status | ft nome, databasesize, availablenewmailboxspace -auto
Qui si può vedere che il database si è ridotto da 247,9 MB a 56 MB con solo 512 KB di spazio bianco.
Per concludere
L’operazione di deframmentazione è andata a buon fine se non si sono verificati problemi o messaggi di errore durante l’operazione. Tuttavia, ci sono diversi fattori che possono danneggiare il database prima e durante il processo di deframmentazione (Eseutil /d). Ad esempio, se non è stato calcolato lo spazio libero o se è stato lasciato abbastanza spazio per l’esecuzione del processo, questo potrebbe portare a uno spazio di archiviazione basso o pieno che arresta il server e danneggia il database.
In queste situazioni, per qualsiasi amministratore di Exchange, uno strumento di recupero di Exchange di terze parti come Stellar Repair for Exchange è utile per salvare il database quando si verifica un disastro. Con Stellar Repair for Exchange, è possibile riparare qualsiasi database di Exchange corrotto o danneggiato di qualsiasi versione e recuperare i dati in PST o altri formati. Con questo software, è anche possibile esportare direttamente le caselle di posta elettronica dal database Exchange riparato a un database live nel server Exchange e in un tenant Microsoft 365.