martes, 29 de octubre de 2013

Introducción a la virtualización. ALMACENAMIENTO !!!

Después del éxito del primer artículo para la introducción al mundo de la virtualización, vamos a seguir con la segunda entrega, el almacenamiento.

Estos artículos son un poco teóricos, y aunque voy mencionando fabricantes y tecnologías, el propósito es ofrecer una visión global de los aspectos involucrados, antes de ponernos en materia con la creación/instalación/ configuración y uso de nuestro laboratorio de virtualización.

Dicho esto, voy a intentar definir con mis palabras o con otras, todos los conceptos que entran en juego con el almacenamiento:
  • SAN: STORAGE AREA NETWORK. Podemos definir este tipo de almacenamiento como un sistema de almacenamiento en red en el que tenemos acceso directo al disco a nivel de bloques. Suele tener una velocidad elevada, y podemos compartir elementos entre varios equipos. Podemos configurar seguridad mediante ZONING y MASKING, pudiendo configurar que equipos pueden ver qué discos. El sistema de ficheros que usemos es independiente, por lo que si montamos una unidad NTFS será Windows quien implementa las ACL.
  • NAS: NETWORK ATACHED STORAGE: Definimos NAS como el tipo de almacenamiento en red en el que tenemos acceso a un sistema de ficheros gestionado por un sistema operativo. Un ejemplo sería una carpeta NFS, en la cual las peticiones que hacemos de escritura/lectura las hacemos contra el S.O. que gestiona la carpeta, y este a su vez realiza los inputs/outputs sobre el disco. Rendimiento a priori más lento que un sistema SAN. El encargado de proporcionar la seguridad sería directamente el sistema operativo que comparte el almacenamiento.
  • DAS: DIRECT ATTACHED STORAGE: El almacenamiento clásico que conecta directamente discos y cabinas al equipo. Suele ser rápido ya que se conecta directamente por un HOST BUS ADAPTER (HBA) y no mediante una infraestructura de red.

Cada sistema de almacenamiento se puede conectar a los equipos mediante varios protocolos de acceso como son:
  • SCSI: Wikipedia. Tipo de almacenamiento DAS, conectado al equipo.
  • SAS: Wikipedia. Tipo de almacenamiento DAS, conectado al equipo.
  • FIBER CHANNELWikipedia Tipo de almacenamiento DAS, conectado al equipo. 
  • Infini Band: Wikipedia. Tipo de almacenamiento DAS, conectado al equipo.

  • CIFS: Wikipedia. Tipo de almacenamiento NAS conectado mediante Ethernet. Es el método de compartir carpetas/unidades de los sistemas operativos de la familia Windows.
  • FTP: Podemos conectar una cabina de almacenamiento NAS a nuestros sistemas mediante el protocolo FTP sobre la red Ethernet, por ejemplo para copias de seguridad.
  • NFS: Network File System es el protocolo usado por los sistemas Unix/Linux para compartir carpetas/unidades a través de la red Ethernet. Sería usado en almacenamiento de tipo NAS.
  • ISCSi: Protocolo empleado para almacenamiento SAN en el que se encapsula el protocolo SCSI para ser usado en capa red TCP/IP. Requiere de conexiones de 1Gb para garantizar cierto rendimiento. Funciona "pareando" un iniciador ISCSI, que es la petición que hace el cliente para conectarse a una cabina de discos, con un ISCSi Target que sería el servicio en la unidad de almacenamiento que escucha las petición. 
  • Fiber Channel Over Ethernet. Emplea el protocolo de comunicación FIBER CHANNEL encapsulado en tramas TCP/IP. Empleado habitualmente en tecnología SAN. 
ALMACENAMIENTO BASICO SOBRE VMWARE

Cuando hablamos de almacenamiento bajo entornos Vmware hablamos de DATASTORE. Es la unidad lógica con la que trabaja Vmware para almacenar los ficheros de las máquinas virtuales, discos duros virtuales, logs y demás. Pueden estar compuestos de discos con distintas tecnologías, aunque siempre es recomendable segmentar el almacenamiento con tecnologías similares, por la cuestión obvia de rendimiento. En un Datastore de discos de 7.2, 10 y 15k, la velocidad del datastore iría condicionada por su miembro más lento.

Los Datastores con los que vamos a trabajar pueden ser de dos tipos VMFS(Virtual Machine File System) y NFS. VMFS sería como el "NTFS" de los discos Win. NFS puede ser cualquier recurso publicado por un servidor (hablamos de NAS) por lo que tendrá el tipo de formato que el NFS comparta. Suele ser empleado para almacenar imágenes ISO para nuestros despliegues, ya que no proporciona la máxima velocidad.


Existe una modalidad de almacenamiento denominada RAW DEVICE MAPPING para conectar una LUN existente en una cabina de almacenamiento ya formateada ( por ejemplo un disco de datos NTFS) y que queremos usar para una máquina virtual. En este caso hace un mapeo directo del almacenamiento sin gestionar nada. Imaginaros el caso de un servidor de ficheros grande ubicado en una SAN, pero con el sistema operativo ( y todas las ACL´s) instalado en un entorno físico. Podríamos migrar solo el disco del sistema físico hacia nuestros sistemas de almacenamiento, y usar el disco existente formateado en NTFS a través de la SAN. 


En el momento de escribir este artículo, la limitación de tamaño máximo de fichero de disco duro virtual alojado en un sistema VMFS es de 2 TB, algo a tener muy en cuenta a la hora de vuestros despliegues. El tamaño de escritura en bloque por defecto en Vmware es en bloques de 1 MB que internamente fracciona en sub-bloques de 8kb...

El formato de los discos duros de máquinas virtuales en Vmware es *.vmdk.

ALMACENAMIENTO BASICO SOBRE HYPER-V

El almacenamiento de nuestra infraestructura de máquinas virtuales bajo entornos Hyper-V por supuesto que se efectúa sobre particiones NTFS, o sistemas NFS compatibles como SMB y CIFS. No íbamos a esperar grandes novedades.
Esto quiere decir que puedes instalar sus máquinas virtuales, y sus ficheros de configuración, disco, etc. en cualquier partición que tengas en tu sistema. Si empleas tecnologías de almacenamiento en red, tendrás tu LUN conectada a tu sistema Windows mediante fibra o ISCSi.  Siempre bajo el administrador de discos clásico de Windows Server, no bajo un entorno especial para Hyper-V.

Cuando hablamos de discos duros virtuales en formato Hyper-V hablamos de *.vhdx.


En ambos sistemas en necesaria la correcta configuración del fichero de paginación. Hyper-V empleará como fichero de paginación el propio del sistema Windows (Pagefile) y Vmware empleará *.vswp. Debemos implementar una estrategia de rendimiento al respecto. Yo siempre recomiendo ubicar estos ficheros en una unidad independiente a la del arranque, y a ser posible rápida como SSD.

Esa es la paginación que va a necesitar el Hypervisor para su trabajo, pero las máquinas virtuales internamente emplearán paginación para ellas mismas. 
Si queremos configurar una segunda unidad de disco para el fichero PAGEFILE de nuestro Windows 7 virtual por ejemplo, debemos añadir un segundo disco duro a esa máquina virtual, el típico E:. Recordamos que a nivel de Hyper-V esto es un fichero Vhd. Si ese fichero Vhd está en una carpeta, en un almacenamiento con la misma velocidad que el disco que almacena el fichero del disco virtual c:, no estaremos ganando nada. Es como cuando en un disco hacemos una partición, y movemos el PAGEFILE a esa partición, si no hay más cabezas lectoras de disco, o mas rápidas, no hay más rendimiento.

Esta cuestión es peliaguda, y los fabricantes no recomiendan implementar este tipo de medidas para el SWAP de los sistemas operativos de las máquinas virtuales. Ellos argumentan que con la gestión avanzada de memoria RAM que emplean, reducen significativamente la escritura a paginación por falta de recursos RAM... Esto como todo es relativo...
Cuanto espacio Swap reserva ESXi para la paginación de sus máquinas virtuales?.



Cual sería el problema de implementar una solución de este tipo? Vamos a adelantar conceptos y a consolidar otros.

Imaginaros un entorno con dos Hyper-V físicos, o dos ESXi físicos. Usamos un almacenamiento tipo SAN, en red, para que los dos Hyper-V o ESXi  compartan los ficheros de las máquinas virtuales. En caso de que uno se rompa súbitamente, el restante al tener acceso a los ficheros gracias a la SAN podría ejecutar esa máquina virtual... si pero... Una vez iniciada esa máquina virtual, cuando el Windows se inicie y no encuentre el disco SSD ( disco local instalado en un servidor físico) porque recordamos que hemos "migrado" esas máquinas de un HOST  a otro, va a fallar.

Lo mismo ocurre si tenemos configurado un disco CD-ROM virtual, con una imagen ISO, pero que está ubicado en un almacenamiento local. 

Creo que esto es lo básico en cuanto al almacenamiento destinado a la virtualización.

En siguientes episodios :-) crearemos todos estos ejemplos detalladamente, por lo que si tienes dudas ahora mismo, no te preocupes, cuando lo pongamos en marcha seguro que conseguimos explicarlo mejor.

Recordar que el propósito de esta serie de post no es el profundizar bajo un fabricante, ni tan siquiera es muy útil si ya tienes algún sistema de virtualización. Simplemente quiero que sea un punto de inicio a la hora de decirse por un tipo de soluciones u otras, antes de "depender" del fabricante.

Como siempre, gracias por leerme.