lunes, 2 de junio de 2008

Como crear un Disco Duro para acceso compartido en el mismo Host ESX

En muchas ocasiones nos puede venir muy bien que dos VMs compartan el acceso a un disco duro simultaneamente. Esta es la forma tipica de crear un cluster MSCS o un cluster GFS u OCFS o Linux HA, etc, etc.

Lo que se busca es que dichas VMs puedan acceder al mismo tiempo al disco, poniendo una capa por encima que arbitre (generalmente mediante locks) el acceso en lectura/escritura. Lo normal, es que usemos Raw Device Mapping y que dichas VM estén en diferentes Hosts ESX pero hay muchas veces que por diversas razones (no tenemos una SAN, estamos haciendo una maqueta de pruebas, etc,etc) necesitamos poner las VMs que conforman dicho cluster en el mismo Host ESX.

En estos casos, para que sea posible compartir un disco duro (un "virtual disk"), es necesario especificar en el driver SCSI de las máquinas virtuales en las cuales el disco va a ser compartido que su Bus SCSI va a ser compartido:





Una vez hecho esto, tendremos que crear el disco que va a ser compartido como "thick".

El comando para hacerlo es:

vmkfstools -c 10g ruta_del_disco_duro_a_crear -d thick

Una vez creado el disco, lo añadimos a las máquinas virtuales que lo tengan que utilizar a través de "Add Hard Drive", "Use an existing virtual disk". Lo normal es crear con el comando anteriror el vmdk que va a ser compartido en el primer nodo del cluster (es decir en el mismo direcorio que el vmx del primer nodo) y en los nodos simplemente añadir el disco usando Use an existing virtual disk y seleccionando el directorio donde esta el vmdk a compartir.

¿Porqué debemos crear el Virtual Disk como thick?
Esto ocurre porque, al tratarse de un disco que va a ser compartido, los nodos pueden estar escribiendo simultáneamente en posiciones del disco muy diferentes, por ejemplo uno podria escribir al principio mientras que otro podria escribir al final, por ello es necesario reservar y ocupar todo el espacio que ocupa el disco ya desde su creación.

3 comentarios:

Anónimo dijo...

Buen articulo, una pregunta, yo quiero montar dos maquinas virtuales opensuse con un disco compartido entre ellas en donde tenga toda la informacion de mi sitio web, tenemos una SAN Fiber Channel con Servidores ESX. Siguiendo el articulo que publicaste ya no seria necesario utilizar un sistema de archivos para cluster como ocfs2??.

saludos y gracias de antemano.

kurrin dijo...

Hola muy buenas, por lo que me dices tienes dos (o mas servidores ESX) contra una SAN con acceso por fibra.

En este caso lo logico es poner una maquina virtual en cada ESX(cluster accross boxes) y asignarles a ambas maquinas virtuales una LUN por RDM donde van a estar las webs.
De esta forma ambas maquinas virtuales verán el volumen donde vas a poner las webs(htdocs para entendernos, porque los ficheros de configuracion de apache etc no irian en el volumen compartidos puesto que son diferentes para cada maquina virtual: el nombre, ip , etc...).

Una vez tengas eso hecho, tendrás que montar encima algo como GFS u OCFS(te recomindo este ultimo por simplicidad y potencia).
Deberan formatear con ocfs2, establecer el cluster y meter los datos.

Debes tener un sistema de archivos de cluster porque si no se te corromperia. Si usases ext3 por ejemplo, si un nodo escribe y el otro también a la vez, los datos se corroperian. A no ser que sólo necesites acceso de escritura desde uno de los dos nodos. En tal caso podrias usar ext3 y montar en read only en el que no necesites escritura... pero no suele ser lo normal.

Mirate OCFS2 que son un par de rpms y se monta en nada y va muy muy bien.

Si tienes vmotion deberás evitar que las maquinas virtuales que forman el cluster estén en el mismo ESX, simplemente no se puede porque tiene la misma RDP ambas(si tienes DRS establece una regla para que dichas maquinas virtuales no esten en el mismo ESX juntas).

Yo tengo en produccion 3 VMs con ocfs2 para php y web y va muy bien.

¿Como balanceas la carga? Balanceadores Hw?

Saludos y para lo que sea dime,

Anónimo dijo...

Buen articulo, yo ya tengo montada dos vm sobre disintos host esx, en ambas vm monte un disco RDM formateado con ocfs2 y trabaja bien, solo que le he estado metiendo pruebas y en dos ocasiones se me congelaron las maquinas en momentos distintos, lo curioso es que ni por consola pude entrar a las vm cuando se congelaron. Deshabilite Selinux pensando que podria ser el problema ya que en los logs no encontre nada, tu tienes algun comentario o tip que me puedas comentar referente a este problema, aunque despues de esos dos incidentes ya llevo un dia con las maquinas arriba corriendole pruebas de lectura y escritura y han funcionado correctamente.Saludos.