...pero ... ¿para qué vale Multipath?

Llevo ya varios posts escribiendo sobre software Multipath y acabo de caer en la cuenta... vaaleee ... ¿qué es esto del software MultiPath?, ¿para qué sirve?, ¿por qué tanto interés en documentar todo esto?. Bien, habrá que empezar por el principio.

Desde los años setenta nos han machacado con el concepto de jerarquía de memoria: La memoria cuanto más cerca de la CPU más rápida y más cara, y cuanto más lejos, más barata y más lenta. Desde entonces hemos asistido a una desenfrenada evolución de las tecnologías de almacenamiento, para acercar a la CPU más cantidad de almacenamiento, a menor coste y a mayor velocidad ... pero ... ¿por qué?... porque la información es el recurso más valioso de cualquier organización, como siempre fue y será, y ya se sabe desde hace siglos que la información es poder. Si combinamos estas ideas aparece un mercado que vende almacenamiento masivo y rápido a un precio razonable, dirigido a cubrir las necesidades de almacenamiento de cualquier organización. Estas necesidades se suelen empaquetar y distribuir en forma de discos duros, relegando las cintas magenéticas a la copia de seguridad de los primeros en el siguiente escalón de la jerarquía de memoria... pero claro, la tecnología tiene sus limitaciones y no podemos empaquetar toda la información que requiere el poder en un único disco duro: necesitamos varios discos duros con la máxima capacidad, los metemos en una caja que los contenga todos y los conectamos entre sí, superando así las limitaciones que nos impone la tecnologia y sumando la capacidad de todos ellos, y los organizamos en cajones dentro de la caja, para poder ampliar con más discos en el futuro.

Confiar toda la información de nuestra organización y el poder a una única caja de discos duros, en la que el fallo de uno de ellos pondría en peligro el resto de la información, es bastante arriesgado: Sacrifiquemos algo de capacidad a cambio de seguridad de la información y nos encontraremos con lo que se conoce por RAID, y sus distintos tipos: RAID-0, RAID-1, RAID-5 etc. RAID viene del acrónimo conjunto redundante de discos independientes, pero en inglés (Redundant Array Independient Disks) y los distintos tipos se corresponden con distintas combinaciones para repartir la información entre los discos de la caja, y ganar velocidad y/o seguridad, pero claro... ¿quién implementará esto?, ¿quien se encargará de distribuir la información entre los discos de la caja? ... está claro que necesitamos un elemento nuevo en la caja que implemente esta lógica de acceso: Este elemento lo llamaremos controladora y no deja de ser un pequeño computador dedicado a implementar estas funcionalidades. Vale, ya tenemos solucionado el problema de que falle alguno de los discos... ¿pero qué pasa si falla la controladora? ... que lo perdemos todo, nada, nada, metemos una segunda controladora y un mecanismo para detectar que si una cae entre en funcionamiento la segunda.

Como no se puede acercar todo el almacenamiento que necesitemos a la CPU, había que buscar un método para llevarle la información y se usó lo que se conocía hasta entonces que era bueno: SCSI es un estándard para la transferencia de información hacia la CPU, que se implementó en las controladoras de la caja de discos... pero claro... ¿cómo hacemos llegar los bytes del poder hasta la CPU, desde las controladoras de la caja? ... mediantes cables de red (iSCSI) o de fibra óptica (FC-ALL): Pinchamos una tarjeta de expansión especial (que llamaremos HBA) al ordenador de la que salga un cable de fibra óptica y que se conecte a la controladora. Esta tarjeta se encargará de convertir los rayos de luz en señales eléctricas SCSI y a través del bus del sistema llevar los bytes hasta la CPU. Perfecto, todo solucionado, pero ¿qué pasará si se rompe esta HBA? ... que nos quedamos sin bytes ... la solución: Poner una segunda HBA en el equipo, o vender tarjetas de expansión con doble HBA, y conectamos cada HBA a una controladora.

¿Y si queremos conectar más de un ordenador a la caja de discos? ... en ese caso necesitaremos usar un elemento intermedio que realice labores de conmutación, igual que hacemos con los switches de red, y ya podremos conectar muchos equipos a nuestra caja de discos: todos conectados a este switch especial y las controladoras también, pero claro ... ¿y si se rompe ese switch?, pues lo de siempre: nos quedamos sin información; nada, nada pongamos dos switches, y conectemos una de las HBAs y una controladora a uno de los switches y la otra HBA y la otra controladora al otro switch.

En esta pequeña historia, nos encontramos que los actores reales que fabrican cajas de discos son muchos, aunque es habitual encontrarnos:

  • EMC, que fabrica Clariion, Cellerra, Symmetrix, por nombrar alguno,
  • IBM, que fabrica DS4xxx, DS5xxx, EXPxx, v7000, etc...
  • HP, que fabrica EVA 4xxx, EVA 5xxx, EVA 6xxx, XP P9xxx, MSA, etc...

Las diferencias entre los fabricantes radican principalmente en el precio, los servicios postventa que ofrecen, y el funcionamiento técnico interno de estas cajas de discos: Unas permiten que las dos controladoras trabajen simultáneamente sobre los mismos discos, otras trabajan las dos controladoras pero no sobre los mismos discos, en otras, el almacenamiento global se gestiona como un todo sobre el que vamos haciendo particiones y asignando a los servidores, en otras solo vemos como un todo el espacio de los discos del mismo cajón, etc...

Recordemos que el objetivo de todo esto al final, se hace para conseguir ofrecer más cantidad de almacenamiento a los equipos de nuestra infraestructura, un cachito de espacio, que el sistema operativo verá como un nuevo disco duro SCSI, pero claro, se llega al mismo disco por diferentes caminos:
  1. Desde la HBA-1, al Switch-1, a la controladora-1 y de ahí al disco
  2. Desde la HBA-1, al Switch-1, a la controladora-2 y de ahí al disco
  3. Desde la HBA-2, al Switch-2, a la controladora-1 y de ahí al disco
  4. Desde la HBA-2, al Switch-2, a la controladora-2 y de ahí al disco


Esto hace que el sistema operativo vea cuatro discos, en vez de uno que en realidad son el mismo, y además, que algunos elementos están por si falla el análogo, y por tanto y dependiendo de la tecnología que use el fabricante, no se podrá acceder al disco. ¿Qué sucede entonces? ... que necesitaremos de un software especial en el sistema operativo, capaz de hablar correctamente con las controladoras y las HBAs, que sepa en qué estado están los diferentes caminos, y elija el más óptimo para acceder al disco, y si en un momento falla alguno de los elementos, dirija el tráfico de bytes por otro camino que sí que funcione correctamente.

Hace unos años, este software que llamamos de Multipath (por aquello de trabajar con múltiples caminos) lo proporcionaba el propio fabricante de cajas de discos, pero nos lo cobraba aparte, aunque eso sí, funcionaba perfecto: Si luego queríamos conectar a los switches otra caja de discos de otro fabricante, el software del primero era incompatible con el del segundo, y por supuesto, también los cobraba aparte.

Esta pequeña dictadura de los fabricantes la rompe la comunidad del software libre, desarrollando DeviceMapper Multipath, que permite controlar caminos hacia diferentes discos de diferentes cajas de discos y además evitarnos pagar una licencia extra por el uso del software: Ya pagamos por la caja, los cajones, los discos y el soporte ... ¿por qué no nos regalan ese software?, ¿por qué tenemos que pagar encima, para poder usar todos los cacharros que ya hemos tenido que pagar a la misma empresa?...

La actitud de estas empresas entonces, es dificultar el acceso a las configuraciones y a la documentación de cómo configurar correctamente DeviceMapper MultiPath con sus productos, y la comunidad del Software Libre no tiene acceso a todos estos modelos para elaborar guías de configuración.

Es gente anónima y blogs como este, que tenemos acceso a estas cajas de discos, los que nos peleamos con las cabinas de almacenamientos y las configuraciones de multipath, comprobamos que todo funciona como debe y los publicamos para que otros usuarios se encuentren este trabajo hecho y lo tengan más fácil.

4 comentarios:

bersuit.vera dijo...

Wow Ignacio!!. Se echaban de menos estos post didácticos y divertidos. Gracias por compartir y enseñar.

Anónimo dijo...

Vamos, porque me dedico a temas de almacenamiento y no sé si la información que expones es comprensible para gente profana, pero bajo mi criterio más claro agua.
Muy bueno Ignacio, he topado con este documento realizando una buscada de un problema como solemos hacer la mitad de la veces cuando no recibimos soporte y como suele pasar muchas veces (por lo menos a mi) alguna vez me distraigo en la navegación, por lo que admiro la facilidad de exponer estos temas que algunos somos incapaces de hacer.
Pon también Hitachi usp-v, usp-100, ams2 …, … ;). No xq me den algo solo problemas.

Anónimo dijo...

Me ha perecido magistral la forma de que has planteado y explicado el multipath, también te doy las gracias por explicar y compartir con todos nosotros

Gonzalo Barcia Sesar dijo...

5 años más tarde... muchas gracias por la explicación. Me ha ayudado mucho. Un saludo.