viernes, 1 de junio de 2012

Eseutil - Ese gran desconocido ... o no tanto.

Hoy hablaremos sobre una herramienta que ha sobrevivido al tiempo y a las versiones de Exchange, Eseutil. Esta herramienta inicialmente se concibió para realizar defragmentaciones offline de la base de datos pero hoy en dia nos aporta una mayor información de las bases de datos y los logs.

Hago una explicación rápida y básica sobre el funcionamiento de las bases de datos de Exchange 2010:
  • Por defecto, la ubicación de las bases de datos y los logs es c:\Program Files\Microsoft\Exchange Server\V14\Mailbox\<Nombre de la Base de datos>. Es altamente recomendable trasladar tanto las bases de datos como los ficheros de transacciones a otros discos.
  • Los tipos de ficheros que se utilizan son los siguientes:
    • Mailbox Database 0242942819.edb.- es la base de datos (ddbb) de buzones que contiene todos los mensajes.
    • E00.log.- Este es el fichero log actualmente en uso por el motor de la base de datos.
    • E00000003A.log, E00000003B.log ....- Son los ficheros log almacenados en disco y pueden ser utilizados con motivos de recuperación. La notación es hexadecimal y el tamaño es de 1 MB.
    • E00.chk.- Este fichero es un fichero checkpoint (de control) para mantener una correlación entre los logs y la base de datos.
    • E00res00001.log y E00res00002.log.- Ficheros que se crean para evitar problemas de espacio.
    • E00tmp.log.-Nuevo fichero log creado preparado para entrar en acción.
  • Nomenclatura.-  A nivel interno, independientemente del nombre que nosotros pongamos a la ddbb de datos, por ejemplo RRHH, Financiero, CAU, etc,, los ficheros logs de la primera ddbb empezarán con los siguientes caracteres, E00, denominado prefijo. La segunda utilizará el prefijo E01, la tercera E02 y así, sucesivamente.
  • Procesamiento de transacciones.- El motor de la ddbb procesa la información en "páginas". Para Exchange 2010 el tamaño de éstas es de 32KB, cuatro veces mas grande que en Exchange 2007 y 8 veces mas grande que en Exchange 2003. Un conjunto de páginas compone una transacción. Os lo explico utilizando un gráfico:
    1. Los datos de los correos son procesados incialmente en memoria, divididos en las denominadas "páginas".
    2.  Una vez actualizadas las páginas, forman una transacción, que es escrita en el fichero log.
    3. Si las paginas ya no son necesarias para el Exchange, se escriben en la base de datos.
    4. El fichero de control (checkpoint) se actualizará reflejando la nueva localización .
  • Consistencia.- Por lo tanto, el fichero de la ddbb (el .edb) es un fichero abierto y la información que falte, estará en los ficheros logs. Este es el caso habitual. Cuando desmontamos la ddbb, toda la información en memoria se vuelca a la ddbb y el fichero checkpoint se actualiza, cerrándo la misma, dejándola en un estado de "consistencia", también referido como "clean shutdown".
  • Inconsistencia.- En el caso de una incidencia, catástrofe o simplemente alguien apaga el servidor, la ddbb entra en un estado de inconsistencia (dirty shutdown). Exchange sabe que toda la información anterior al checkpoint está en la ddbb y la posteríor estará en los ficheros logs. Este proceso denominado "automatic recovery" lo realizará cuando se reinicie y monte las ddbb nuevamente. En el 99% de las ocasiones este proceso nos devolvera a la situación actual. Para ese 1% restante tenemos la herramienta  .... Eseutil Otros problemas añadidos pueden ser la corrupción de ddbb, de discos, apareciendo, normalmente el evento 1018. En estos casos también Eseutil nos echara una mano, y si no la utilizamos correctamente, también nos la podrá echar al cuello, ya que puede borrar nuestra ddbb.

ESEUTIL nos brinda las siguientes posibilidades:
  •  Eseutil /D.- Usado para defragmentación offline de ddbb.
  •  Eseutil /R.- Usado con propositos de recuperación de una ddbb.
  •  Eseutil /g.- Realiza un chequeo de integridad de una ddbb.
  •  Eseutil /k.- Realiza un testeo sobre el fichero checkpoint de la ddbb.
  •  Eseutil /p.- Repara una base de datos cuando esté corrupta.
  •  Eseutil /m.- Puede volcar la información del encabezado de una ddbb y los ficheros log.
  •  Eseutil /y.-  Puede copiar ficheros largos como las ddbb, eficientemente.
  •  Eseutil /c.- Es usado para un 'hard recover' de una ddbb durante el backup online.
Hoy trataremos las dos marcadas, defragmentación offline y encabezados.

Eseutil /M => Volcado de información sobre la Cabecera de la ddbb o de los logs. Hay que tener en cuenta que la base de datos necesita estar offline para poder obtener estos datos. En este caso veremos cada una de las opciones:

  • Eseutil /mh 'Mailbox Database 0872095299.edb'.- Nos muestra información de cuándo fue creada, últimos backups full, incrementales, etc., la firma y fecha de creación, si está en estado de "Clean o Dirty Shutdown":
  • Eseutil /ml 'E00.log'.- Podemos ver cuándo fue creado el log actual, el número de secuencia del log, la firma, etc.
  • Eseutil /ml 'E00'.- Nos realiza un chequeo de todos los logs de una base de datos, integridad, número de secuencia, si alguno de ellos está corrupto.
  • Eseutil /mk 'E00.chk'.-En este caso obtendremos la información del checkpoint, firma, circurlar logging, fecha de creación, etc.
  • Eseutil /ms 'Mailbox Database 0872095299.edb'.- Nos indica el espacio libre:

Eseutil /D => Defragmentación Offline de las bases de datos. Los pasos que sigue este proceso son los siguentes:
  • Se crea una ddbb temporal con un nombre aleatorio tal como TEMPDFRG6668.edb en la ruta donde estés ejecutando el comando Eseutil (Ten cuidado dónde lo hagas o te puedes quedar sin espacio).
  • Eseutil realiza una copia de la base de datos a defragmentar a la nueva anteriormente creada.
  • Cuando la copia termina en la nueva ddbb, la antigua es borrada del disco.
  • La ddbb temporal denominada TEMPDFRG6668.edb es renombrada con el nombre de la base de datos de producción, Mailbox Database 2536992651.edb.

Aunque parezca un ladrillo de Post, creo que es bastante util e interesante.

Bibliografia:
Nos vemos.

1 comentario: