Después de instalar Microsoft iSCSI Software Target, quedan muchas cosas por configurar (Targets, Discos Virtuales, Snapshots, Backups, etc.).
Antes de continuar, quiero admitir que de esto del iSCSI y del Almacenamiento SAN, y demás, más bien conozco poco. El caso, es que algo me atrae, así que, leyendo por aquí y por allá, googleando y probando, he aprovechado para aprender algunas cosillas, que quiero ir colgando por aquí, en espera de que os pueda ser de interés a todos (y a mí también, que tengo memoria de pez ;-). Allá vamos.
Consideraciones Básicas de Diseño
Partimos de un entorno formado por un servidor de almacenamiento Windows Storage Server 2008 con Microsoft iSCSI Target instalado. Los equipos clientes de este almacenamiento, en nuestro caso serán servidores Windows que utilizan el software Microsoft iSCSI initiator, disponible en el Panel de Control de Windows. Aprovechamos para recordar, que este software cliente (el Microsoft iSCSI initiator) viene incorporado en las versiones más recientes de Windows (ej: Windows Server 2008) pero en aquellas que no lo traen (ej: Windows Server 2003), puede descargarse desde la Web de Microsoft e instalarse, de forma gratuita.
Para el tráfico de red iSCSI, utilizaremos un segmento de red Ethernet (es decir, una VLAN) exclusivo e independiente de los segmentos de red utilizados para el tráfico de red normal. Es deseable utilizar adaptadores de red exclusivos para iSCSI, tanto en las máquinas físicas como en las máquinas virtuales. Recordemos que es posible configurar múltiples Redes Virtuales y VLANs con Hyper-V, igual que ocurre con VMWare.
Lo primero que tendremos que configurar en nuestro entorno, son los Targets. Para empezar, debemos tener claro, que en un servidor iSCSI, podemos (y debemos) crear múltiples Target (de hecho, a un servidor iSCSI podríamos denominarlo Portal Target). Esta es una de las primeras confusiones, pues en algunos casos, se piensa que sólo se puede tener un único Target. Pero ¿Qué es un Target?
Un Target es un elemento de configuración, a través del cual asignamos los Discos Virtuales (LUNs) a los equipos clientes (iSCSI initiators). Sin embargo, ¿Cuántos Targets deberemos crear? ¿Qué criterios deberemos seguir para crear los Targets?
Como regla general, deberemos crear un Target para cada equipo Cliente, con las siguientes excepciones:
- Con el objetivo de optimizar el rendimiento, es posible crear un Target para cada Disco Virtual (LUN) que se desea presentar/asignar a cada equipo cliente (iSCSI initiator). Esta recomendación, es debida a que cada Target tiene su propia cola de peticiones, de tal modo que utilizando un único Target para múltiples Discos Virtuales (LUNs) se podrían tener problemas de encolamiento de peticiones (y en consecuencia, problemas de rendimiento). De este modo, si tenemos dos equipos clientes, al primero le deseamos presentar 2 discos (LUNs) y al segundo le deseamos presentar tres discos (LUNs), siguiendo esta recomendación deberíamos utilizar cinco Targets. Téngase en cuenta, que la creación de un número elevado de Targets en el mismo sistema de Almacenamiento, también puede penalizar a dicho sistema, por lo que como en todo en la vida, será necesario buscar un equilibrio (el presente artículo, se basa en la pruebas realizadas en el Laboratorio de GuilleSQL, no habiendo realizado pruebas y optimizaciones en entornos productivos).
- Para utilizar Discos Virtuales (LUNs) compartidos en un Cluster, es necesario crear un Target y asignar los diferentes nodos del Cluster como clientes (iSCSI initiators) del mismo Target. En consecuencia, y dado lo comentado en el punto anterior, podemos crear un único Target para el Cluster, dónde asignar todos los Discos Virtuales (LUNs) y clientes (iSCSI initiators), o bien podemos crear un Target para cada Disco Virtual (LUN) asignando en cada Target a cada equipo cliente (iSCSI initiators). Ambos enfoques, serían apropiados.
Téngase en cuenta, que el escenario de discos compartidos de un Cluster es el único caso (al menos, habitualmente) en que un Target es compartido por múltiples clientes (iSCSI initiators), ya que si no se tratase de los discos compartidos de un Cluster (shared LUNs), existe un riesgo potencial de conflicto y/o corrupción en el acceso a un mismo Disco Virtual (LUN) por múltiples equipos clientes simultáneamente. Así, si tuviésemos que configurar un Microsoft Cluster (MSCS) con Windows Server 2003, esta sería la opción preferida.
Los equipos clientes de nuestro Storage, denominados iniciadores iSCSI (iSCSI initiators), pueden identificarse en el Target utilizando cuatro métodos diferentes:
- iQN (iSCSI Qualified Name). Es el método preferido y el método por defecto para identificar a un iniciador iSCSI. En el caso de utilizar el software Microsoft iSCSI Initiator, se trata de una cadena que contiene el nombre DNS del equipo prefijado del siguiente texto "iqn.1991-05.com.microsoft:".
- Nombre DNS.
- Dirección IP.
- Dirección MAC.
Los Discos Virtuales toman forma de ficheros VHD, parecidos a los Discos Virtuales de Hyper-V, Virtual Server y Virtual PC, aunque con alguna peculiaridad. Por ejemplo, con Microsoft iSCSI Target, sólo pueden crearse Discos Virtuales de tamaño fijo, que podremos posteriormente extender y realizar Snapshot (si fuera necesario) de los mismos (similar a los Snapshots de Hyper-V, pero en este caso, sobre los discos o LUNs iSCSI).
De este modo, el procedimiento de configuración consiste en:
- En el servidor de almacenamiento (Microsoft iSCSI Target), configurar los Targets necesarios especificando los clientes (iSCSI initiators) que deben poder conectarse a cada Target. Este proceso de asignar los clientes (iSCSI initiators) a los Targets, es equivalente al concepto de LUN Masking en los sistemas de Almacenamiento SAN convencionales. Seguidamente, crear los correspondientes Discos Virtuales (LUNs), asignando cada Disco Virtual (LUN) al Target que le corresponda.
- En los equipos clientes (iSCSI initiators) es necesario especificar el servidor de almacenamiento (Portal Target), ya sea indicando su dirección IP o un nombre DNS (y por supuesto el puerto TCP, por defecto el 3260). Bueno, el servidor o los servidores, ya que podríamos tener múltiples servidores de almacenamiento iSCSI (será por pasta!!, jeje ;-) Seguidamente, nos deberemos logar (Log on) en cada Target, especificando opcionalmente (y recomendablemente también) volver a restaurar la conexión cada vez que el equipo se vuelva a iniciar (Automatically restore this connection when the system boots), para así mantener sus unidades (LUNs) persistentemente.
Recordemos, que deberemos crear particiones y formatearlas en los Discos Virtuales (LUNs), ya sea montándolos en el servidor de almacenamiento, o bien formateándolos desde los clientes (iSCSI initiators). Finalmente, los Discos Virtuales (LUNs) deben quedar asignados a los correspondientes equipos clientes (iSCSI initiators) y montados correctamente (ya sea utilizando una letra de unidad o un punto de montaje).
Este es el procedimiento general a seguir. A continuación, vamos a verlo de forma gráfica, paso a paso y pantalla a pantalla. Debe tenerse en cuenta, que no se tratarán configuraciones avanzadas (ej: MPIO, autenticación, etc.).
Configuración de un Target iSCSI
A continuación se muestra el procedimiento a seguir para crear un Target iSCSI en Microsoft iSCSI Software Target. Como comentamos previamente, lo más probable es que necesitemos crear varios Targets.
Cara crear un nuevo Target, deberemos abrir la herramienta administrativa Microsoft iSCSI Software Target, y seleccionar la opción Create iSCSI Target desde el menú contextual del nodo iSCSI Targets, como se muestra en la siguiente pantalla capturada.
En el diálogo de bienvenida, click Next para continuar.
Especificaremos un nombre y una descripción para el nuevo Target que estamos creando. El nombre del Target debe seguir ciertas normas, por lo que deberemos elegir un nombre de forma similar a como se elegiría un nombre de máquina. Una vez especificados el nombre y descripción del Target, click Next para continuar.
Deberemos especificar un cliente (iSCSI initiator) para el Target. Es interesante tener en cuenta, que habitualmente cada Target tendrá un único cliente (iSCSI initiator), por lo que siguiendo el asistente será suficiente. Sin embargo, en algunos escenarios como es el caso de los discos compartidos de un Cluster, será necesario especificar varios clientes (iSCSI initiators) para el Target, en cuyo caso seleccionaremos uno cualquiera en este diálogo (el que más rabia nos dé), y especificaremos los demás más adelante editando las propiedades del Target creado.
Además, como hablamos existen diferentes métodos de especificar un cliente (iSCSI initiator), siendo el método preferido utilizar el iQN. Como consecuencia de todo esto, especificaremos el iQN del cliente (iSCSI initiator), y click Next para continuar.
En la pantalla de finalización del asistente de creación del nuevo Target, click Finish.
Realizado esto, habremos creado con éxito nuestro primer Target iSCSI, como se puede observar en la siguiente pantalla capturada. Si necesitásemos crear nuevos Targets iSCSI adicionales, sería suficiente con seguir el mismo procedimiento.
Vamos a aprovechar para visualizar las propiedades del Target iSCSI que acabamos de crear. Para ello, lo seleccionamos, y seguidamente click en la opción Properties del menú contextual.
La pestaña general tentrá un aspecto similar al siguiente.
La pestaña iSCSI Initiator tendrá un aspecto similar al siguiente. En caso de tratarse de un Target para utilizar con los Discos Compartidos (LUNs) de un Cluster, podemos utilizar el botón Add para añadir el resto de clientes (iSCSI initiators), es decir, el resto de Nodos del Cluster.
En este caso, deberemos especificar el método deseado para identificar al cliente (iSCSI initiator), y el valor correspondiente, como se muestra en el siguiente ejemplo para un servidor de pruebas denominado vsql06.guillesql.local.
De este modo, podremos asignar múltiples clientes (iSCSI initiators) a un mismo Target.
En la pestaña Authentication, es posible configurar CHAP, de forma opcional.
En la pestaña Virtual Disks se muestras los Discos Virtuales asignados al Target. Inicialmente, no tendremos ninguno, pudiendo crear nuevos Discos Virtuales, y añadirlos Target.
En la pestaña Advanced, pueden encontrarse algunas configuraciones avanzadas, que habitualmente no suelen modificarse.
Crear los Discos Virtuales VHD (LUNs) del Target iSCSI
Una vez que tenemos creado nuestro Target iSCSI (o nuestros Targets, si fueran varios), es posible crear nuevos Discos Virtuales (LUNs). A continuación, vamos a crear un nuevo Disco Virtual (LUN), asociándolo directamente con un Target existente (el recién creado en el paso anterior). Para ello, desde la herramienta administrativa Microsoft iSCSI Software Target, seleccionaremos el Target iSCSI deseado, y seguidamente click sobre la opción Create Virtual Disk for iSCSI Target del menú contextual.
En la pantalla de bienvenida, click Next para continuar.
Deberemos especificar la ruta y nombre de fichero deseado para el disco virtual, con extensión VHD, como se muestra en el siguiente ejemplo. Click Next para continuar.
Deberemos especificar el tamaño del Disco Virtual en MB. Téngase en cuenta que se va a proceder a crear un Disco Virtual de tamaño fijo, por lo que en función del tamaño, el tiempo de creación será mayor o menor. Click Next para continuar.
Especificaremos una descripción para el nuevo Disco Virtual. Click Next para continuar.
En la pantalla de finalización del asistente, click Finish.
Una vez realizado esto, ya tendremos creado nuestro nuevo Disco Virtual, con el nombre especificado y el tamaño indicado. En consecuencia, podremos visualizar desde el Explorador de Windows, dos nuevos ficheros (VHD y CBM), como se muestra en la siguiente pantalla capturada.
Si deseásemos crear Discos Virtuales (LUNs) adicionales, sería suficiente con seguir el mismo procedimiento.
Particionar y Formatear el nuevo Disco Virtual (LUN)
A continuación, vamos a proceder a particionar y formatear el nuevo Disco Virtual (LUN). Esta tarea puede realizarse de varias formas. En nuestro caso, vamos a montar el nuevo Disco Virtual sobre el propio servidor de almacenamiento (Windows Storage Server) para particionarlo y formatearlo. Sin embargo, esta tarea también podría realizarse desde un equipo cliente (iSCSI initiator). Para gustos hay colores.
En nuestro caso, desde la herramienta administrativa Microsoft iSCSI Software Target, seleccionaremos el Disco Virtual deseado, y seguidamente seleccionaremos la opción Mount Read/Write del menú contextual, como se muestra en la siguiente pantalla captuda.
Se mostrará un mensaje indicando que el Disco Virtual ha sido montado satisfactoriamente.
Seguidamente, accederemos a la herramienta administrativa Disk Management, en la que se mostrará el diálogo Initialize Disk para el Disco Virtual que acabamos de montar. Seleccionaremos el estilo de partición, y click OK para continuar.
Seguidamente, seleccionaremos el nuevo disco, y seguidamente, click en la opción New Simple Volume del menú contextual, como se muestra en la siguiente pantalla capturada.
Se mostrará el asistente para la creación de un nuevo volumen. En la pantalla de bienvenida, click Next para continuar.
Seleccionaremos el tamaño de la nueva partición en MB. Click Next para continuar.
Podemos seleccionar una letra de unidad o punto de montaje para la nueva partición. En nuestro caso no es necesario. Click Next para continuar.
Seleccionaremos las opciones de Formato, principalmente, nos interesará utilizar NTFS. Click Next para continuar.
En pantalla de finalización del asistente, click Finish.
Se iniciará la creación y formateo de la nueva partición/volumen, como se muestra en la siguiente pantalla capturada.
Finalmente, el disco ya estará disponible para su uso.
Con esto, ya podremos desmontar el disco. Para ello, desde la herramienta administrativa Microsoft iSCSI Software Target, seleccionaremos la opción Dismount, como se muestra en la siguiente pantalla capturada.
Se mostrará un diálogo de confirmación. Click Yes para continuar.
Finalmente, se mostrará un diálogo indicando que el nuevo Disco Virtual, ha sido desmontado satisfactoriamente. Click OK para continuar.
Realizado todo esto, ya tendremos el Disco Virtual (LUN) particionado y formateado, completamente preparado para su uso.
Configuración del cliente iSCSI (iSCSI Initiator)
Llegados a este punto, ya sólo queda configurar el cliente (iSCSI initiator) para accecder al Disco Virtual (LUN). Para ello, desde el correspondiente equipo cliente (ya sea conectado por RDP, iLO, o la propia consola local), en el Panel de Control, seleccionaremos la opcción iSCSI Initiator.
Si es la primera vez que lo utilizamos, puede mostrarse un diálogo indicándonos que el servicio de Windows Microsoft iSCSI Initiator Service está detenido, por lo que será necesario iniciarlo y configurarlo con inicio Automático. Click Yes para continuar.
Por curiosidad, este era es aspecto antes de iniciarlo.
Se mostrará la pestaña general del iSCSI initiator. Aquí podemos ver el nombre iQN del cliente, entre otras cosas.
Seleccionaremos la pestaña Discovery, y seguidamente click en el botón Add Portal, para agregar nuestro servidor de almacenamiento.
Deberemos especificar el nombre DNS o dirección IP, y el puerto TCP de nuestro servidor iSCSI. Click OK para continuar.
Con esto, habremos configurado nuestro servidor iSCSI, aunque todavía queda algún pasito más.
Seleccionaremos la pestaña Targets. En esta pestaña, se mostrarán los diferentes Targets accesibles desde el cliente, así como su estado. En esta ocasión, sólo tenemos accesible un único Target (el creado anteriormente), en estado Inactive. Para poder acceder a un Target, es necesario hacer Logon en el mismo. Para ello, seleccionaremos el Target deseado, y seguidamente click en Logon.
Se mostrará el diálogo Log on to Target. Si lo deseamos, seleccionaremos la opción Automatically restore this connection when the computer starts, de tal modo que en los próximos reinicios de la máquina, se realice Logon sobre el Target de forma automática, y se mantenga el acceso a los Discos. Click OK para continuar.
Desde la herramienta administrativa Disk Management, seleccionaremos el nuevo disco, y seguidamente click sobre la opción Online del menú contextual, como se muestra en la siguiente pantalla capturada.
Con esto, el cliente ya puede acceder al disco deseado.