Una de
las tareas más habituales a lo largo de los años en Exchange, es tener que
realizar cambios en el almacenamiento de las Bases de Datos y los Logs.
Los
motivos pueden ser varios, desde un cambio por rendimiento, por necesidad de
más tamaño o simplemente porque el tiempo de vida del almacenamiento actual se
está acortando.
Los últimos 6 años, he tenido que
realizar varias veces este trabajo y hoy comparto con vosotros el procedimiento
para ello.
El
objetivo principal, es realizar el cambio sin sufrir parada de servicio alguna.
Pues Exchange nos proporciona los mecanismos para ello, aunque las guías
disponibles por Microsoft en este caso contemplan el cambio fácil de las rutas
y los datos con parada, eliminación de replicación, copia de datos… y vuelta a
iniciar el servicio.
El
cambio fácil, para mí no es el camino a seguir. No es que sea más complicado
hacerlo sin parada, pero hay que tener claros los pasos y depende de la
infraestructura que tengamos.
INFRAESTRUCTURA ORIGEN:
Partimos
de 1 DAG Exchange de 2 o 4 Nodos.
4 bases de datos replicadas a 1 o dos nodos según el caso (1ª y 2ª Copia)
2 LUN por Servidor, 1 BBDD y 1 LOGS, con Puntos de Montaje o Nombre de Unidades (Indistintamente). Si hay más LUNS el procedimiento es similar.
Almacenamiento en Bloques en 1 Cabina, presentados por Fiber Channel. Pudiendo ser similar con otro tipo de almacenamiento (Local, iSCSI).
4 bases de datos replicadas a 1 o dos nodos según el caso (1ª y 2ª Copia)
2 LUN por Servidor, 1 BBDD y 1 LOGS, con Puntos de Montaje o Nombre de Unidades (Indistintamente). Si hay más LUNS el procedimiento es similar.
Almacenamiento en Bloques en 1 Cabina, presentados por Fiber Channel. Pudiendo ser similar con otro tipo de almacenamiento (Local, iSCSI).
INFRAESTRUCTURA
DESTINO:
Infraestructura en este caso similar, distinto fabricante de
cabina y por ello drivers nuevos.
1 Nueva cabina de almacenamiento por bloques
2 LUN por Servidor, con Puntos de Montaje o Nombre de Unidades
2 LUN por Servidor, con Puntos de Montaje o Nombre de Unidades
Como
decía en el anterior POST, un momento como éste puede ser bueno replantearse
cambios en la infraestructura, al nivel que nos importa, esto puede ser:
- Crear unidades de más tamaño.
- Asignar más LUNS o menos, según nuevos requisitos de la organización (Seguridad, velocidad, reducción puntos de fallo, etc)
- Cambiar rutas de BBDD y LOGS, cambiar nombres o letras de unidad, puntos de montaje, etc.
UNIDADES LOCALES, LUNS Y PUNTOS DE MONTAJE
La
consecución del objetivo (hacer el cambio sin corte), viene dada principalmente
por el dinamismo o no de la infraestructura de disco actual, según la manera en
que hagamos la gestión de las LUNS, las carpetas locales o tengamos o no puntos
de montaje.
Tendremos diferentes formas de actuar, pero el principal juego viene en cómo hacer éstos movimientos, según como tengamos el almacenamiento en nuestra infraestructura, existen las siguientes posibilidades:
Tendremos diferentes formas de actuar, pero el principal juego viene en cómo hacer éstos movimientos, según como tengamos el almacenamiento en nuestra infraestructura, existen las siguientes posibilidades:
1) LUNS con nombre unidad asociada:
Cada LUN tiene una letra de unidad de disco asociada.
LUN10 ---- Unidad D
LUN 11 ---- Unidad E
LUN XX ---- Unidad X
LUN 11 ---- Unidad E
LUN XX ---- Unidad X
Haríamos el movimiento de los datos a las
nuevas luns y una vez realizado intercambiaríamos las letras de unidades.
2) LUNS asociadas a puntos de
montaje:
LUN10 ---- D:\BBDDEXCH1\
LUN11 ---- D:\LOGSEXCH1\
LUN12 ---- D:\BBDDEXCH2\
LUN13 ---- D:\LOGSEXCH2\
LUNXX ---- D:\........\
Haríamos el movimiento de los datos y una vez realizado, renombraremos
los puntos de montaje. La opción de Puntos de Montaje, da más juego, pues si
tienes actualmente configurado así el sistema, puedes hacer una configuración
que sea diferente de 1 a 1 como en las
anteriores habitualmente:
LUN 10 ---- D:\BBDDEXCH1\
LUN 10 ---- D:\BBDDEXCH2\
LUN 10 ---- D:\BBDDEXCH3\
LUN 11 ---- D:\LOGSEXCH1\
LUN 11 ---- D:\LOGSEXCH2\
LUN 11 ---- D:\LOGSEXCH3\
Hay varios puntos de montaje diferentes, pero la unidad o LUN destino
es la misma. Esto nos viene bien cuando partimos de múltiples LUN para
almacenamiento de BBDD y LOGS y queremos reducir el número de las mismas,
cambiar posteriormente su nomenclatura y hacerlo de manera independiente al
límite de letras de unidad que puedan existir.
MANOS A LA OBRA
Definido la infraestructura actual y controlado como están
configurados los Paths de Exchange, vamos paso a paso con el procedimiento.
1º Poner el primer servidor de Exchange en MODO MANTENIMIENTO.
Para ello, movemos las Bases de Datos activas a otro servidor con el powershell siguiente, donde %ServerName%, es el servidor Origen.
Para ello, movemos las Bases de Datos activas a otro servidor con el powershell siguiente, donde %ServerName%, es el servidor Origen.
Move-activemailboxdatabase –server
%ServerName%
Acto seguir ejecutamos el script siguiente, indicando en %ServerName%
el servidor a poner en Mantenimiento.
C:\Program Files\Microsoft\Exchange Server\V14\Scripts>
.\StartDagServerMaintenance.ps1
%ServerName% -OverrideMinimumTwoCopies:$TRUE
Comprobamos el estado de los servidores y
si hay alguno en mantenimiento
Get-DatabaseAvailabilityGroup
-Status |fl server*
Servers : {EXCHANGE1,
EXCHANGE2, EXCHANGE3, EXCHANGE4}
ServersInMaintenance : {EXCHANGE1}
2º Instalar Driver Multipath y presentar
las nuevas LUN (aquí ya depende del fabricante y compatibilidad, presentar a
veces por 1 canal, y al finalizar el resto, o si es por iSCSI la cosa es
diferente)
3º Asignar a las LUN´s letra de unidad o
Punto de montaje.
Según la configuración del ejemplo que propongo, creamos primero las carpetas para los puntos de montaje y después éstos hacia las LUN
Según la configuración del ejemplo que propongo, creamos primero las carpetas para los puntos de montaje y después éstos hacia las LUN
4º Paramos los Servicios de Exchange en el
nodo. Mejor si los configuramos a modo manual. (Requerirá algún reinicio de más
pero nos aseguramos terminar correctamente las tareas sin fallos).
5º Copiamos los datos entre las LUN´s viejas
y nuevas, tantos cmd como sean necesarios por LUN, Unidad o Carpeta.
En este punto, la herramienta es robocopy.exe
En este punto, la herramienta es robocopy.exe
ROBOCOPY E:\PATHBBDD\ E:\PATHBBDDNUEVA\
/E /COPY:DATSOU /R:3 /W:5 /V /NP /LOG:C:\TEMP\1LOG-BBDD.TXT
ROBOCOPY E:\PATHLOG\ E:\PATHLOGNUEVA\
/E /COPY:DATSOU /R:3 /W:5 /V /NP /LOG:C:\TEMP\1LOG-LOG.TXT
Esperamos que termine, revisamos el log de robocopy
para comprobar que no hay ningún fallo en la copia o ficheros que no haya sido
capaz de copiar.
6º Renombramos los puntos de montaje
Con esto dejamos la estructura original pero los datos en la nueva cabina
De PATHBBDD a PATHBBDDORIGEN
De PATHBBDDNUEVA a PATHBBDD
De PATHLOG a PATHLOGORIGEN
De PATHLOGNUEVA a PATHLOG
7º Configuramos los servicios a modo
automático.
8º Reiniciamos el nodo de Exchange
9º Comprobamos el estado de las réplicas y
verificamos el sistema
get-mailboxdatabasecopystatus *
Dejamos tiempo para que se actualicen el
estado de las bases de datos, y que pasen de failed a healthy, las colas
CopyQueueLength y ReplayQueueLeng se reduzcan al mínimo.
For($i=0; $i -le 100 ; $i++){Get-MailboxDatabaseCopyStatus * | % {$total
+= $_.ReplayQueueLength;$total2 += $_.CopyQueueLength}; Write-Host
"ReplayQueueLength = "$total ; Write-Host "CopyQueueLength
="$total2; Write-host " "; $total2 =0; $total = 0; Sleep 10}
10º Eliminamos los puntos de montaje
viejos, borramos las carpetas Viejas (Origen) de la unidad E.
En el caso de letras de unidad, eliminamos las letras de unidad de las LUN viejas.
En el caso de letras de unidad, eliminamos las letras de unidad de las LUN viejas.
11º Ponemos de nuevo los servicios de
Exchange en Modo Manual y los paramos
12º Pasamos las LUNs viejas a Offline, y
desconectamos las LUN´s desde la cabina
13º Desinstalamos el driver de la cabina
(si es diferente) e instalamos el de la nueva, asignando todos los caminos
necesarios para las nuevas LUN. (Si es necesario).
14º Reiniciamos
15º Comprobamos el estado de las nuevas LUN
y que estén en Online.
16º Configuramos los servicios de Exchange
en Automáticos
17º Reiniciamos
18º Comprobamos de nuevo el estado de las
Bases de Datos y las colas. Si todo está bien, empezamos a activar
definitivamente el servidor tras tanto reinicio y cambio.
19º Sacamos el Servidor del modo de
Mantenimiento
C:\Program Files\Microsoft\Exchange Server\V14\Scripts
.\StopDagServerMaintenance.ps1
%ServerName%
20º Redistribuimos la carga de las Bases de
Datos
C:\Program Files\Microsoft\Exchange Server\V14\scripts
.\RedistributeActiveDatabases.ps1 –DagName CENTEXDAG01
-BalanceDbsByActivationPreference -ShowFinalDatabaseDistribution
-Confirm:$false
Llegado hasta aquí, tenemos el primer
servidor corriendo sobre el nuevo almacenamiento, sin sorpresas ni errores, de manera controlada y manteniendo la infraestructura en alta disponibilidad.
Los usuarios no han debido notar ningún
cambio, y nos hemos podido permitir hacerlo todo en horas de trabajo, siempre y
cuando hayamos atado cada paso.
Según el entorno y la experiencia, es
posible hacer el cambio en 1 solo día o alargarlo a varios.
Conviene si
desconocemos el nuevo hardware, aprovechar la ventaja de disponer del DAG de
Exchange, el poder hacer pruebas de rendimiento o estabilidad con el nuevo almacenamiento.
El procedimiento presentado puede diferir algún paso según el entorno y dependiendo del riesgo que personalmente se quiera correr, digo
esto, pues en menos pasos es posible ejecutarlo, ahora bien hagas lo que hagas no te la jueges por querer terminar pronto.
A poco de terminar el año, os deseo unas buenas fiestas, esperando poder compartir con vosotros más artículos técnicos.
Gracias como siempre por llegar hasta aquí.
Alvaro Velasco Miguel
No hay comentarios:
Publicar un comentario