Desfragmentación Online y Offline en Exchange Server

 

 

Que tal amigos,

 

Recientemente tuve la oportunidad de platicar sobre lo que son las desfragmentaciones online y offline en el trabajo y pensé que seria bueno compartir esta información con ustedes. Esto aplica para prácticamente todas las versiones de Exchange (coff coff también conocido como el poderoso Exchangiiiiiiiii)

 

Comenzaremos esta publicación con un poco de conocimiento general

 

 

¿Que es desfragmentar?

Es el proceso en el cual los datos se vuelven contiguos dentro de un disco/BD. Mejora el acceso a los datos y la velocidad para obtenerlos.

 

 

Podemos considerar las bases de datos de Exchange Server como contenedores. Dentro de estos contenedores se agregan objectos tales como buzones, dentro de los buzones tenemos mensajes  por ejemplo,.

 

Vamos a suponer que el siguiente recuadro es una base de datos.

defrag1

La información de la base de datos esta contigua, es decir sin fragmentos

 

Conforme mas información nuevos buzones son creados, la llegada/envió de mensajes, mas crece el contenedor (la base)

 

 

Eventualmente los usuarios comenzaran a borrar mensajes y los administradores comenzaran a eliminar buzones. Esto crea lo que se conoce como White Space.

 

 

¿Que es White space?

El espacio en blanco es un área dentro de las bases de datos de Exchange que no esta actualmente en uso. El information store automáticamente re-usa espacio en blanco para nuevos objectos antes de expandir el tamaño de una base de datos (el .edb). Sin embargo, aun siendo espacio vacío, es reflejado en el tamaño de la base de datos y en disco duro.

 

Como deciamos, eventualmente información sera movida o eliminada de la base de datos, pero esta no se contrae de forma automática y esos espacios en blanco  quedan dentro de la base de datos. Por ejemplo, si tenemos unas base de 10GB y movemos buzones a otra base de datos con un tamaño total de 3GB. La base (.edb) seguirá manteniendo el tamaño de 10GBs. No bajara automáticamente de tamaño a 7GB

defrag2

La información de la base de datos queda pues, fragmentada

 

 

Esta es la causa por la cual se realizan las desfragmentaciones, para compactar la información de forma contigua, nuevamente.

 

 

¿Por que nos afecta tener una base fragmentada?

  1. Al no estar los datos contiguos, la escritura/lectura del disco se vera impactada en muchos casos esto causara latencia lo cual provocara que los usuarios experimenten lentitud en el envío/recepción de correo
  2. Espacio en disco. Una base fragmentada esta requiriendo de espacio en disco que en teoría no esta utilizando

 

NOTA: La fragmentación de disco duro ocurre a un nivel distinto que la fragmentación de datos de Exchange. No debemos confundir ambos tipos de desfragmentaciones (Aunque comparten el mismo principio)

 

 

Exchange Server trabaja dos tipos de desfragmentaciones:

ONLINE

OFFLINE

 

Una desframentación Online se realiza durante el mantenimiento automático de la base de datos (de forma continua en versiones mas recientes). Se encarga de ordenar los datos de forma contigua, eliminar información no necesaria (por ejemplo, buzones que estaban en eliminados) y compactar la base de datos.

defrag6

:
A considerar:
1) No reduce el tamaño físico de una Base.
2) Se ejecuta al final de la ventana de mantenimiento de las bases en Exchange 2007 y de forma continua en versiones mas recientes
3) Compacta la información y mueve el white space al borde del .edb. Esto facilidata el I/O sobre la base de datos

 

 

La intención final de la desfragmentación online es lograr el siguiente resultado:

defrag4

 

Es decir, supongamos que tenemos una base de 15GBs que esta fragmentada, esto genera mayor trabajo de I/O en el disco. Al llevarse a cabo una desfragmentación online, la información es compactada y esto facilita la lectura y escritura de la información, sin embargo. El white space no es eliminado de la base, así que aunque la desfragmentación online es crucial para temas de rendimiento, no ayudara a recuperar espacio en disco. Esta es una de las principales confusiones que la gente tiene ¿Por que no baja de tamaño la base de datos si diario hay desfragmentaciones online?. Ahora ya lo saben 🙂

 

 

 

Una desfragmentación offline se lleva a cabo de forma manual, mediante el comando eseutil /d “base.edb“. Es considerado mas como una re-mediación que como un “mantenimiento”. Ya que para poder realizar una desfragmentación offline la base de datos debe estar desmontada

defrag8

 

La razón de esto es que al momento de realizar una desfragmentación offline se lee la información de la base original y se copian a un nuevo .edb, al terminar de copiarse, se elimina el .edb original y se renombra el nuevo .edb (al nombre del .edb original) para finalmente ser movido a la ruta de la base original. Lo que esto conlleva es que se renumera las paginas que son leídas de la BD para tener una nueva secuencia (y asi eliminar el whitespace), esto provoca que se cambie la firma de la base.

 

En otras palabras, después de hacer una desfragmentación offline, la base resultante es una totalmente nueva.

 

NOTA: Siempre se recomienda hacer un full backup después de realizar una desfragmentación offline. Ya que la base recibe una nueva firma (signature), en estricta teoría los logs apuntan a una nueva base de datos, si realizamos un restore de una copia vieja de la base de datos, los logs viejos no podrán hacer replay debido a que no detectara la base con la misma firma. Para los logs, se tratan de dos bases completamente distintas

 

A considerar:
1) Se debe desmontar la base de datos
2) Se ejecuta de forma manual mediante el comando: eseutil /d base.edb
3) Reduce el tamaño físico de la base de datos, reclamando de esta forma espacio en disco

4) No debe ser usado como una actividad rutinaria de mantenimiento, sino como re-mediación

5) Para realizar un desfragmentación offline, se debe contar con 1.2X el tamaño de la base en espacio libre en disco.

 

 

Espacio en disco necesario para realizar una desfragmentación offline

Se requiere contar con un espacio de 1.2 (en algunos sitios indican el dato como 110% de tamaño de la base) para poder realizar un offline defrag. Supongamos que tenemos un disco duro de 12GBs, dentro de este disco tenemos una base de datos de 7GBs la cual nos reporta lo siguiente en event viewer: Event ID 1221 The database “database” has 1024 megabytes of free space after online defragmentation has terminated. Esto significa que el tamaño físico de nuestra base es de 7GBs, pero su tamaño lógico es de 6GBS

Base tamaño físico = 7GB

White space=  1GB

Base tamaño lógico = 7GB1GB = 6GB

Ahora, el whitespace puede ser utilizado como “espacio libre” al momento de desfragmentar (offline). Dado que para poder realizar una desfragmentación offline necesitamos tener 1.2X el tamaño de la base (tamaño logico) de espacio libre. Esto significa que en un disco duro de 12GB donde tenemos una base lógica de 6GB, el requerimiento de espacio en disco es el siguiente:

Calculo para offline defrag= 6GB x 1.2

Espacio en disco requerido = 7.2GB

Espacio total=  6GB + 7.2GB = 13.2GB

 

En este escenario, no podremos realizar una desfragmentación offline, ya que el espacio libre en el disco es de 6GB, pero necesitamos tener al menos 7.2GB adicionales. Es muy importante tener este dato a consideración. Adicionalmente ese evento solo aparece en la versión 2007

 

La desfragmentación offline dará el siguiente resultado:

defrag5

Como podemos ver, la base vuelve a ser compactada y el espacio en blanco es reclamado por el disco. En otras palabras, el .edb de la base reduce su tamaño y recuperamos espacio en disco

 

 

 

¿Como ver el white space de una base de datos?

Podemos ver el espacio en blanco de una base de datos mediante el comando:

 

Get-MailboxDatabase -Status | ft name,databasesize,availablenewmailboxspace -auto

defrag3

 

 

 

¿Cuando se recomienda utilizar una desfragmentación Offline?

  1. Cuando el espacio en disco a reclamar es demasiado grande (mucho white space)
  2. Después de realizar una reparación del tipo hard recovery (/P)
  3. Cuando sea solución comprada para algún comportamiento de store (algún TechNet o KB)

 

 

¡Enhorabuena! Acaban de aprender un poco sobre una desfragmentación offline y online para Exchange Server. Coman una galleta y dense una palmada en la espalda, se lo han ganado.

 

 

Por Geovany Acevedo

 

Coman Frutas y verduras


Artículos relacionados

 Comentarios 6 comentarios

  • Francisco Alvarez dice:

    Excelente publicación y gran conocimiento que adquirí……Saludos Geo….

  • Bruno Lopez dice:

    Good article! Congrats, man.

  • Lidesh dice:

    Awesome article Geovany.. you are the master.. 🙂

  • Miguel Morales dice:

    Como siempre, muy buen artìculo

  • Eduardo Hernandez dice:

    Buenas tardes;

    Mi ambiente de Exchane esta en DAG, 2 servidores de Base de Datos y 2 de Cliente, este procedimiento se puede realizar en este ambiente?

    • Hola Eduardo,

      Dado que un Offline Defrag reconstruye la DB, si tienes una DAG digamos: 1 base activa con 2 bases pasivas.

      El procedimiento a seguir es el siguiente:
      1) Desmontar base activa
      2) Desfragmentar la base desmontada de forma offline
      3) Volver a montar la base de datos para restaurar servicios
      4) Al terminar la desfragmentación terminaras con bases distintas, asi que debes hacer un re-seed hacia las copias pasivas de la base mediante el comando:
      Update-MailboxDatabaseCopy –DeleteExistingFiles –Identity “Servidor\base_pasiva”

      El comando anterior, debe ser ejecutado contra todas las bases pasivas, eliminara arhivos existentes y volvera a hacer el seeding

      Saludos

  • Deja un comentario

    Tu dirección de correo no será publicada. Los campos con * son obligatorios.