Download diseño de un clúster con computadoras dadas de baja, como
Document related concepts
Transcript
DISEÑO DE UN CLÚSTER CON COMPUTADORAS DADAS DE BAJA, COMO ALTERNATIVA DE BAJO COSTO FRENTE A ORDENADORES DE ALTO RENDIMIENTO, PARA EMPRESAS DEL EJE CAFETERO GERMÁN ANDRÉS OLANO TREJOS UNIVERSIDAD TECNOLÓGICA DE PEREIRA FACULTAD DE INGENIERÍAS PROGRAMA DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN PEREIRA 2010 DISEÑO DE UN CLÚSTER CON COMPUTADORAS DADAS DE BAJA, COMO ALTERNATIVA DE BAJO COSTO FRENTE A ORDENADORES DE ALTO RENDIMIENTO, PARA EMPRESAS DEL EJE CAFETERO Trabajo de Grado para optar el titulo de Ingeniero de Sistemas y Computación GERMÁN ANDRÉS OLANO TREJOS Asesor: Ingeniero Cesar Cabrera UNIVERSIDAD TECNOLÓGICA DE PEREIRA FACULTAD DE INGENIERÍAS PROGRAMA DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN PEREIRA 2010 Nota de Aceptación ______________________________ ______________________________ ______________________________ ______________________________ ______________________________ ______________________________ _____________________________ Presidente del Jurado _____________________________ Jurado _____________________________ Jurado _____________________________ Asesor Pereira, 25 de Febrero de 2010 DEDICATORIA A Dios que me ha brindado las oportunidades para crecer como persona, como profesional, como hijo, hermano y pareja, que siempre me ha acompañado y me ha otorgado los más grandes tesoros de la vida. A mi madre y mi hermana, cuyos grandes esfuerzos, paciencia, consejos y cuidado me han permitido llegar tan lejos. A Marcela, la mujer que en los últimos años se ha convertido en mi gran apoyo, y me ha enseñado mucho. AGRADECIMIENTOS Quiero agradecer a Dios por permitirme vivir estos momentos, acompañado de las personas que quiero y tienen un gran significado en mi vida. Agradezco a mi familia, quienes con su esfuerzo y dedicación me ayudaron a cumplir mis metas y a iniciar mi camino como profesional. Mi agradecimiento a Marcela, quien me ha acompañado y apoyado en muchos momentos de mi vida, especialmente en mi etapa universitaria, que me ha brindado su amor, sus consejos, sus opiniones, que me ha acompañado en este camino, que me ha enseñado a como ser mejor persona, hijo, hermano, profesional, pareja, etc. Deseo también agradecer a mis compañeros y amigos, a quienes han creído en mí, y me han ayudado de diversas formas, no solo en la realización de este proyecto, también en otros en los que he tenido la oportunidad de participar durante mi carrera. Y al Ingeniero Cesar Cabrera, quien me brindo su apoyo, asesoría y buenos consejos para la culminación de este proyecto. CONTENIDO pág. RESUMEN 15 INTRODUCCIÓN 16 1 PLANTEAMIENTO DEL PROBLEMA 20 1.1 DESECHOS TECNOLÓGICOS 21 1.2 REQUERIMIENTOS EN CAPACIDAD DE PROCESAMIENTO 22 2 ANÁLISIS DEL ENTORNO 24 2.1 DISEÑO DE LA ENCUESTA 24 2.2 RESULTADOS OBTENIDOS 31 2.2.1 Cantidad de computadores en la empresa 31 2.2.2 Clasificación de los equipos 32 2.2.3 Servidores 32 2.2.4 Nivel de rotación de los computadores en la empresa 33 2.2.5 Motivos para la rotación de los equipos 34 2.2.6 Convenios o preferencias con marcas 35 2.2.7 Manejo de residuos tecnológicos y políticas de reciclaje de residuos tecnológicos. 36 2.2.8 Estado de los equipos dados de baja 37 3 JUSTIFICACIÓN 44 4 ESTADO DEL ARTE 46 4.1 CONCEPTOS BÁSICOS 46 4.1.1 Supercomputación 46 4.1.2 Computación paralela 46 4.1.3 Ley de Amdahl 47 4.1.4 Ley de Gustafson 48 4.1.5 Speedup 48 4.1.6 Sistemas distribuidos 49 4.2 CLÚSTER 51 4.2.1 Tipos de clúster 52 4.3 SOFTWARE PARA CLÚSTER 58 4.3.1 Sistema operativo 58 4.3.2 Middleware 67 4.4 SSI 83 4.4.1 Pilares 84 4.4.2 Ventajas 85 4.4.3 Desventajas 86 4.4.4 Características ofrecidas por SSI 87 4.4.5 Niveles en SSI 89 4.5 KERRIGHED 91 4.5.1 Objetivos e historia del proyecto 91 4.5.2 Características de kerrighed 92 4.5.3 Requisitos para la implementación 93 4.5.4 Otra información sobre kerrighed 94 5 CARACTERÍSTICAS DEL PROYECTO 97 5.1 CONSIDERACIONES GENERALES 97 5.2 TIPO DE INVESTIGACIÓN 97 5.3 DISEÑO DE LA INVESTIGACIÓN 98 5.4 POBLACIÓN 98 5.5 SELECCIÓN DE LA SOLUCIÓN CLÚSTER 99 5.6 ANÁLISIS DE DATOS 99 5.7 VARIABLES 100 5.8 FACTIBILIDAD DEL PROYECTO 100 5.9 CONSIDERACIONES ÉTICAS 101 6 DISEÑO DE UN CLÚSTER CON EQUIPOS NO USADOS 102 6.1 EQUIPOS 102 6.1.1 Elementos básicos 102 6.2 REDES 116 6.2.1 Clasificación 117 6.2.2 Diseño de la red 119 6.3 SELECCIÓN DE HARDWARE Y DISEÑO FÍSICO DEL CLÚSTER 120 6.4 SISTEMA OPERATIVO 123 6.4.1 Instalación del sistema operativo 123 6.5 INSTALACIÓN DE KERRIGHED 155 6.5.1 Instalación en un nodo 155 6.5.2 Instalación de otros nodos 158 6.6 CONFIGURACIÓN 158 6.7 ADMINISTRACIÓN 159 7 RESULTADOS OBTENIDOS 161 7.1 DISEÑO DE UN CLÚSTER CON EQUIPOS DADOS DE BAJA 161 7.2 INSTALACIÓN Y CONFIGURACIÓN DEL SISTEMA OPERATIVO 162 7.3 INSTALACIÓN DE KERRIGHED 163 7.4 ADMINISTRACIÓN DE KERRIGHED 165 7.5 RENDIMIENTO 167 7.5.1 Enfoque lineal 168 7.5.2 Enfoque mediante benchmarking 169 7.6 COSTOS GENERADOS POR LA IMPLEMENTACIÓN DEL CLÚSTER 172 7.6.1 Adquisición de equipos 172 7.6.2 Espacio físico y adecuación 174 7.6.3 Instalación, configuración y administración 175 7.6.4 Consumo de energía 177 7.6.5 Resumen 177 8 RECOMENDACIONES 179 9 CONCLUSIONES 181 BIBLIOGRAFÍA 184 LISTADO DE FIGURAS pág. Figura 1. Ventas de Computadores 20 Figura 2. Desechos tecnológicos 21 Figura 3. Cantidad de computadores en la empresa 31 Figura 4. Clasificación de los equipos de computo 32 Figura 5. Existencia de servidores 33 Figura 6. Nivel de rotación y reemplazo de equipos 34 Figura 7. Motivos para rotación o reemplazo de equipos. 35 Figura 8. Preferencia por marca o convenio 36 Figura 9. Manejo de residuos tecnológicos 37 Figura 10. Políticas de reciclaje y programas de donación 37 Figura 11. Equipos que pueden ser usados 38 Figura 12. Procesadores promedio 38 Figura 13. Capacidad de memoria RAM 39 Figura 14. Capacidad en disco duro 39 Figura 15. Existencia de tarjetas de red 40 Figura 16. Sistemas operativos 40 Figura 17. Clúster Beowulf 72 Figura 18. Logo de Rocks Cluster 75 Figura 19. Cantidad de nodos por clúster con Kerrighed 95 Figura 20. Cantidad de núcleos o cores por clúster con Kerrighed 95 Figura 21. Tipo de redes usados en clúster con Kerrighed 95 Figura 22. MSI K8 Master3-133-FA4R 103 Figura 23. Memoria Kingston KVR533D2E4/1G 103 Figura 24. Procesador Thurion 105 Figura 25. Disco Duro 105 Figura 26. Raid Nivel 0 110 Figura 27. Raid Nivel 1 111 Figura 28. Raid Nivel 2 111 Figura 29. Raid Nivel 3. 112 Figura 30. Raid Nivel 4. 113 Figura 31. Raid Nivel 5. 114 Figura 32. Raid Nivel 6 114 Figura 33. Tarjeta de Red. 116 Figura 34. Estructura física sin redundancia de red ni nodo maestro 122 Figura 35. Estructura física sin redundancia de red con nodo maestro 122 Figura 36. Estructura física con redundancia de red sin nodo maestro 123 Figura 37. Estructura física con redundancia de red sin nodo maestro 123 Figura 38. Pantalla de bienvenida instalación de Debian Gnu/Linux. 129 Figura 39. Selección de Idioma. 130 Figura 40. Selección de País. 130 Figura 41. Selección de localización. 131 Figura 42. Soporte para otros idiomas. 131 Figura 43. Selección de teclado 132 Figura 44. Seleccionar interfaz de red 133 Figura 45. Selección de método de configuración de red 134 Figura 46. Dar nombre a la máquina. 135 Figura 47. Determinar nombre de dominio 135 Figura 48.Selección del método de particionado. 137 Figura 40. Particionado de discos (Ejemplo para un Disco Duro de 160 GBytes). 137 Figura 50. Particionado de discos (Resumen y confirmación) 138 Figura 51. Asignar clave al superusuario 139 Figura 52. Nombre para el nuevo usuario 139 Figura 53. Configuración de usuario y clave 140 Figura 54. Selección de opción de replica. 141 Figura 55. Selección de país de replica 141 Figura 56. Selección del servidor replica de Debian Gnu/Linux 142 Figura 57. Configuración de proxy 142 Figura 58. Selección de paquetes 143 Figura 59. Instalación de grub 144 Figura 60. Finalización de la instalación 144 Figura 61. Modificar el sources.list 145 Figura 62. Configuración de SSH 148 Figura 63. Diseño físico del clúster 162 Figura 64. Comparativa entre sistemas 170 Figura 65. Comparativa entre sistemas (sin supercomputador) 171 LISTADO DE TABLAS pág. Tabla 1. Cuadro de ponderación de calificación para el middleware 81 Tabla 2. Calificaciones para los sistemas evaluados 82 Tabla 3. Ejemplos de clúster implementados con Kerrighed 96 Tabla 4. Variables 100 Tabla 5. Características básicas de los nodos 121 Tabla 6. Motivos de selección 124 Tabla 7. Distribución de particiones recomendada 125 Tabla 8. Tabla de particiones de ejemplo para un sistema de Gnu\Linux 136 Tabla 9. Diseño del sistema clúster 161 Tabla 10. Costos de adquisición para nodos de clúster 173 Tabla 11. Costos de adquisición para servidor 173 Tabla 12. Comparativa de espacio físico 174 Tabla 13. Comparativa en instalación y configuración 175 Tabla 14. Comparativa en administración de los sistemas 175 Tabla 15. Parafiscales 176 Tabla 16. Prestaciones Sociales 176 Tabla 17. Comparativa consumo de energía 177 Tabla 18. Resumen de comparaciones entre clúster y servidor 178 RESUMEN El aporte a las empresas de la región se puede realizar en diferentes formas, pero cuando se pueden reunir diferentes aspectos como la reutilización de elementos que han sido descartados, el alivio en los gastos de la organización, el apoyo al medio ambiente mediante la disminución de desechos de equipos tecnológicos y la posibilidad de contar con un sistema fruto de la unión de hardware y software que pueda generar unas capacidades aceptables, la propuesta es más atractiva, no solo desde el punto de vista empresarial, sino también desde el ambiental y social. En el presente documento se presenta una propuesta basada en el diseño de un clúster con equipos no activos en la empresa y se estudia su viabilidad, de tal forma que se tenga un sistema que pueda brindar beneficios como: • Ayudar a reducir la contaminación generada por los desechos tecnológicos. • Hacer uso eficiente de los recursos tecnológicos que puede poseer una empresa. • Contar con un sistema de buenas prestaciones para la ejecución de aplicaciones que necesitan ordenadores de medio o alto rendimiento. En la metodología para el desarrollo del proyecto se encuentran el estudio teórico en lo relacionado a sistemas de clúster, conocer a partir de un grupo de empresas el escenario en el cual se puede desarrollar un proyecto como el propuesto, el diseño de un sistema clúster y los resultados obtenidos de la investigación que permita conocer la viabilidad de un proyecto de esta naturaleza. Palabras Claves: sistemas distribuidos, clústers, tecnológicos, infraestructura tecnológica, kerrighed, operativos, SSI. 15 residuos sistemas INTRODUCCIÓN Los sistemas clúster son actualmente una de las alternativas en busca de emular lo que los supercomputadores pueden realizar usando ordenadores comunes, organizados de forma tal que brinden capacidades muy altas. Algunos proyectos previos ya han tratado este problema con éxito y han generado aplicativos en busca de facilitar la implantación de estas soluciones de la forma más rápida y simple posible. Una de esas soluciones son los sistemas clúster, base de este proyecto; este enfoque que ya ha dado sus resultados en proyectos, como el Beowulf, ha demostrado ser muy exitosos, y aún cuando otros sistemas han nacido y crecido en los últimos años, sigue estando vigente y aplicable a los problemas de hoy. En los clúster tipo Beowulf1 se busca que programas cuyo código ha sido paralelizado de forma óptima puedan aprovechar los recursos disponibles en todos los nodos del sistema, es decir que cada sección de código pueda ser ejecutado por cada máquina del clúster, procesando la información de forma más ágil y efectiva. Otro enfoque, precisamente el que se trata en este proyecto, busca que todas las máquinas se vean como una sola para las aplicaciones que se ejecutan, sin importar si estas últimas han sido modificadas en su código de forma que sean consideradas como paralelas o no. Esto se conoce como SSI (Imagen Única del Sistema) y al respecto se encuentran trabajos o sistemas clúster ya desarrollados y disponibles como2: • Mosix • OpenMosix • OpenSSI • Kerrighed. 1 BEOWULF.ORG What makes a cluster a Beowulf?. http://www.beowulf.org/overview/index.html 2 COLABORADORES DE WIKIPEDIA. Clúster(Informática) http://es.wikipedia.org/wiki/Cluster_(inform %C3%A1tica) 16 La importancia del trabajo actual no se basa en desarrollar un nuevo sistema para clúster, lo cual ya ha sido tratado por otras personas y grupos, sino en diseñar un sistema tipo cluster mediante alguna de las soluciones ya existentes y disponibles, con equipos que ya no estan activos en las empresas de la región, ofreciendo una alternativa de bajo costo para las organizaciones frente a equipos de alto rendimiento, de tal forma que tendrán un sistema de alta capacidad, con máquinas que ya tienen en sus instalaciones, y que además ya no están en uso activo en la empresa, permitiendo su reciclaje, reuso, y disminuir los costos por el manejo de desechos tecnológicos y el desperdicio de recursos que se pueden aprovechar de distintas formas en la organización y por último, pero no menos importante, la contaminación ambiental que puede conllevar el tener políticas y/o prácticas erradas para el manejo de la basura que se genera de los computadores que ya no se usan. Lo que se busca entonces es desarrollar un clúster de la naturaleza como el propuesto en este proyecto, aprovechando las diferentes situaciones que se pueden encontrar alrededor de los centros de computo de las empresas, como son: • Dado que la tecnología se renueva con una frecuencia alta, la cantidad de partes y equipos que han dejado de ser usados son altos, a los cuales se les ha considerado que han cumplido con su ciclo de vida útil, pero que aún pueden funcionar o reemplazar componentes defectuosos de otros. • En la mayoría de empresas con departamentos de sistemas se cuenta con redes locales o extensas que pueden ser aprovechadas de múltiples maneras. • Existen aplicativos para el manejo de información que requieren de características o rendimientos especiales de hardware y software (servicios web, bases de datos, correo electrónico). Sin embargo es importante tener en cuenta que las empresas en las cuales se podrían aplicar los resultados obtenidos de este proyecto son de naturaleza muy diversa (incluyendo además la posibilidad del aprovechamiento por partes de centros educativos), y que en su mayoría no necesitan de este tipo de tecnología para aplicaciones netamente científicas como ha sucedido con los proyectos de clúster 17 desarrollados por universidades o centros como la NASA, o rendimientos de magnitudes tan grandes como Google. Lo que se busca es un sistema de alto rendimiento capaz de ejecutar aplicativos comunes a empresas de la región (como bases de datos, servicios web, etcétera). Para lograrlo también es importante poder responder a los siguientes interrogantes: ¿Cual es el nivel de renovación de equipos de computo en las empresas? ¿Si existe renovación, cual es la cantidad de equipos operativos que sobran en las empresas? ¿Cuales son las características de dichos equipos? ¿Cuales son las capacidades que ofrecen dichos equipos al trabajar en un clúster? ¿Que impacto genera cambiar un equipo dentro de un clúster? ¿Cual es el nivel de conocimientos necesarios para administrar un clúster?, entre otras. Al final del proyecto se espera entonces conseguir como objetivo general diseñar un sistema clúster con computadores dados de baja que sirva como alternativa de bajo costo en comparación a equipos de altas prestaciones para las empresas de la región. Lo anterior se consigue teniendo en cuenta los siguientes objetivos específicos, que además constituyen las tareas que permitirán conseguir el objetivo general del proyecto: • Analizar los sistemas clúster, sus características y condiciones y comparativas con otros sistemas distribuidos. 18 • Estudiar la situación actual de las organizaciones y empresas en cuanto los equipos de computo dados de baja y sus condiciones. • Analizar las diferentes opciones de software para administración y funcionamiento de un sistema clúster. • Diseñar un sistema tipo clúster con equipos que no se encuentran activos en una organzación y que pueda ser presentado a las empresas como una alternativa de bajo costo en comparación con ordenadores de alto rendimiento, de tal forma que se pueda acceder a recursos de hardware y software (como servidores web, correo, etcétera), con un bajo costo para la organización y facilidad de administración. • Analizar las capacidades que un clúster de equipos no usados puede brindar según el diseño realizado. • Desarrollar un documento en el cual se refleje la experiencia adquirida durante el desarrollo del proyecto. la Es importante tener en cuenta que un proyecto de esta naturaleza presenta las limitantes propias en cuanto a la disponibilidad de recursos técnicos y económicos relacionados con proyectos que incluyen una cantidad importante de ordenadores, infraestructura en redes de datos, entre otros. Es por ello que el alcance del proyecto llega hasta el diseño del clúster y la determinación de la viabilidad del mismo3. 3 Para el desarrollo del presente proyecto y para poder contar con datos que permitan evaluar sobre la viabilidad del clúster propuesto se trabaja sobre un prototipo muy básico, constituido por un número límitado de ordenadores. 19 1. PLANTEAMIENTO DEL PROBLEMA Durante los últimos años la venta de computadores en el país se ha disparado de forma significativa, pasando de las casi 200.000 unidades registradas en 1996 a los casi 2'000.000 en 2007, cifra que siguió incrementándose para el año 2008 y 20094, los cuales según las tasas de crecimiento pudieron aumentar en 5% cada año según la siguiente gráfica: Figura 1. Ventas de computadores Fuente: http://raee.org.co/ventas Si el comportamiento se mantuvo, lo anterior implicaría que para el año 2008 la venta aproximada de computadores fue de 2'100.000 unidades, y para 2009 se podría esperar un número cercano a los 2'205.000 ordenadores. Estas cifras muestran el increíble crecimiento en la adquisición de computadores en el país, que aunque puede traer importantes ventajas, como el acceso de la población a la tecnología, también trae serios problemas como el de la generación de desechos tecnológicos. 4 RESIDUOS DE APARATOS ELÉCTRICOS Y ELECTRÓNICOS. Ventas de Computadores en Colombia. http://raee.org.co/ventas Cifras según datos públicados en el sitio web raee.org.co (Residuos de aparatos eléctricos y electrónicos), excepto para el año 2008 y 2009 de los cuales no se tienen cifras concretas. 20 1.1. DESECHOS TECNOLÓGICOS Según la misma organización, raee.org.co, para el año 2007 se tenia que aproximadamente se habían vendido unos 5'000.000 de computadores, sin embargo tan solo 3.2 millones están en uso, dejando 1.8 millones fuera de servicio5. Esos 1.8 millones de computadores dados de baja implican una cantidad importante de desechos tecnológicos que en su mayoría no son tratados de forma adecuada y crean mayor nivel de contaminación en el medio ambiente. La figura 26 deja ver como el crecimiento de la cantidad de desechos generados crece con el tiempo, llegando en el 2007 a las casi 9000 toneladas de desperdicios, y se estima que para el 2013 se llegará a tener casi unas 19000 toneladas. Figura 2. Desechos tecnológicos Fuente: http://raee.org.co/residuos-pc Aunque no es el objetivo de este trabajo, es importante tener en cuenta que la mayoría de los componentes de un ordenador están fabricados de materiales no biodegradables, que pueden permanecer 5 Ibid 6 RESIDUOS DE APARATOS ELÉCTRICOS Y ELECTRÓNICOS. Residuos de computadores, monitores y componentes. http://raee.org.co/residuos-pc 21 muchos años en el ambiente contaminando suelos, aguas y aire, desde el plástico con el cual es hecho el monitor, hasta la soldadura utilizada en las tarjetas. Adicionalmente, la existencia de desechos tecnológicos también representa una perdida económica para la empresa, que aunque pueda parecer mínima dados los movimientos contables que se tienen en una organización, existe y se ve reflejada en la imposibilidad de seguir usando los mismos ordenadores que se compraron años atrás para los procesos que lleva actualmente la empresa. Incluso, para aquellas entidades que son responsables con el medio ambiente, el manejo adecuado de los desechos tecnológicos también implica un gasto adicional para sus finanzas. Incluso, dentro de estos desechos existen elementos que podrían ser recuperados y con unos costos importantes, como el cobre, del cual se calcula que por cada 45000 toneladas de residuos se tienen unas 3000 toneladas de cobre7. 1.2. REQUERIMIENTOS EN CAPACIDAD DE PROCESAMIENTO Los cambios en cuanto a los requerimientos de hardware por parte del software también han sido significativos. Aunque no se tienen cifras concretas sobre este cambio, si se conoce que para el año 1997, con la entrada en funcionamiento de Microsoft Windows 98, se requería de una máquina con un procesador de unos 400 Mhz y 64 Mbytes de memoria RAM, mientras que en la actualidad se tiene que para la versión Vista del mismo sistema operativo se necesita un procesador de mas de 2000 Mhz (entre más potente mayores resultados, si es de 64 bits o doble núcleo, es todavía mejor) y una capacidad en memoria RAM que no puede ser menor a 1 Gbytes (incluso 1.5 Gbytes de memoria RAM serian lo recomendable). Lo anterior da una imagen clara de los cambios en los requerimientos de hardware actuales, en los cuales no se han contado las aplicaciones adicionales al sistema operativo como son: • Motores de bases de datos, que generan un incremento importante no solo por la manipulación de los datos, también por la necesidad de atención a múltiples clientes que desean conectarse a las bases de datos. 7 Ibid 22 • Aplicaciones gráficas (juegos, sistemas CAD, etcétera) que exigen cuando menos tarjetas aceleradores de gráficos con características respetables. • La necesidad de estar conectado que implica la visita de cientos de usuarios a paginas web, sistemas de correo electrónico, sistemas de transferencia de archivos, entre otros, exigiendo todavía más recursos. Las empresas que hacen uso de alguna de las aplicaciones anteriormente mencionadas o cuyas funciones dependan de los computadores por diversas razones (uso de hojas de calculo, Internet, etcétera) se ven en la necesidad de estar actualizando su infraestructura tecnológica, a nivel tanto lógico (programas) como físico (partes o máquinas completas). 23 2. ANÁLISIS DE ENTORNO Para el desarrollo del proyecto se propone construir un escenario base tomando la información de 5 caso, 5 empresas que han permitido conocer en mayor o menor medida su parte de su capacidad tecnica, ya sea por medio de visitas de forma personal o conversaciones por medio telefónico o electrónico. Las encuestas realizadas con este fin, débido a la limitada cantidad de empresas a las cuales fueron dirigidas, no constituyen una muestra suficiente para análisis estadisticos. Dichas empresas, de las cuales no se publican sus nombres o ubicación, respetando la privacidad de su información y su infraestructura tecnológica8, han sido seleccionadas debido a relaciones de diferente naturaleza en el pasado y aprovechando que se encuentran en diferentes sectores económicos. Para conseguir la información se uso como parte fundamental, además del método de observación, una encuesta o cuestionario, con 16 preguntas ,que permitían tener datos exactos y fundamentales para el proyecto, y adicionalmente, en conversaciones con las personas encargadas de las áreas de informática de cada empresa, se complementaba y aclaraban las dudas que se presentaban sobre lo recopilado para el proyecto. 2.1. DISEÑO DE LA ENCUESTA La encuesta que se realizó a las empresas se compone de 169 preguntas, de las cuales no existe ninguna relacionada con su identificación o ubicación con el fin de evitar divulgar datos que para las empresas puede ser sensible, respetando sus políticas internas y la reserva de información de su estructura tecnológica. 8 Es importante señalar que muchas empresas en la región consideran como una información sensible dar a conocer su infraestructura tecnológica, convenios o preferencias, políticas internas, entre otras, por lo cual se encontraban bastantes negativas a la hora de solicitar información relacionada con lo mencionado anteriormente. Las 5 empresas que de las cuales se presentan los datos han dado su voto de confianza en el presente proyecto teniendo en cuenta el deseo de respetar su privacidad manteniendo sus nombres y otros datos de identificación al margen del presente documento. 9 Las dos primeras preguntas hacen referencia a características de la empresa relacionadas con el sector económico en el cual se desempeñan y la cantidad de empleados. Débido a que no son relevantes para los fines de este proyecto no se incluyen las respuesta dentro de este capítulo. 24 El objetivo de esta encuesta es conocer caracteristicas relacionadas con el desarrollo de este proyecto, de tal forma que se pueda construir un escenario base para el diseño del clúster, poder conocer el tipo de nodos basicos con los cuales se puede contar y además información que permita identificar posibles problemas en cuanto a la forma en la cual se manejan los equipos que ya no estan activos en la organización. Es una encuesta dirigida a los directores o jefes de sistema de las empresas encuestadas y ha sido realizada como un cuestionario electrónico que puede ser consultado a través del sitio web encuesta facil.com10. Las siguientes son las preguntas que componen la encuesta: • Tercera Pregunta: Cual es, aproximadamente, la cantidad de computadores existentes en su empresa u organización? La tercera pregunta pretende conocer aproximadamente la cantidad de computadores que se pueden encontrar en la empresa, lo cual también puede influir en la cantidad de computadores que pueden estar inactivos, la rotación de los equipos, etcétera. La tercera pregunta ofrece las siguientes opciones: • • Entre 1 y 5 computadores. • Entre 6 y 10 computadores. • Entre 11 y 20 computadores. • Entre 21 y 50 computadores. • Entre 51 y 100 computadores. • Entre 100 y 500 computadores. • Mayor a 500 computadores. Cuarta pregunta: En su empresa la mayoría de los equipos de computo se pueden clasificar como. Se busca conocer u obtener más detalles sobre el tipo de equipos con los cuales cuenta la empresa. Es importante tener 10 http://www.encuestafacil.com/RespWeb/Cuestionarios.aspx?EID=582953&MSJ=NO#Inicio 25 en cuenta que el diseño de un clúster con equipos portatiles puede generar inconvenientes, por ejemplo la configuración o cambio de hardware. La cuarta pregunta ofrece dos opciones: • • Equipos de Escritorio o Desktop. • Portátiles. Quinta pregunta: Existen en su empresa computadores que puedan ser clasificados como servidores (con Hardware de alto desempeño, múltiples procesadores, alta capacidad en memoria primaria y secundaria, etcétera) La quinta pregunta es de falso o verdadero (ofrece las opciones Si y No) y permite conocer si en la empresa actualmente se usan servidores como parte de su infraestructura tecnológica. La razón es que en el momento de ofrecer la implementación de un clúster los servidores se podrían convertir en un punto de comparación de rendimiento con el clúster, o también podrían ser parte del clúster y aumentar su capacidad. • Sexta pregunta: ¿Cual es el nivel de rotación o reemplazo de equipos de computo en su empresa? La sexta pregunta presenta las siguientes opciones: • No existe rotación o reemplazo de equipos • Rotación en un período de tiempo menor a 6 meses • Rotación cada 6 meses aproximadamente • Rotación cada 12 meses (1 año) aproximadamente • Rotación cada 2 años aproximadamente • Rotación cada 3 años aproximadamente • Rotación cada 5 años aproximadamente • Rotación en un período de tiempo mayor a 5 años • Rotación dada según necesidades de la empresa • Otro (Por favor especifique) 26 Esta pregunta permite conocer con que frecuencia se reemplazan los computadores en la empresa brindando información sobre la clase de ordenadores que no se encuentran activos y que se pueden encontrar en la organización, el tiempo aproximado de uso, etcétera. • Séptima pregunta: De los siguientes, cuales son los motivos que pueden provocar la rotación o reemplazo de equipos en su empresa La séptima pregunta permite conocer el estado aproximado de los computadores que han sido dados de baja en las empresas. Las opciones son las siguientes: • • Bajas prestaciones de los equipos actuales • Daño en componentes no fundamentales • Daño en componentes fundamentales • Políticas de actualización de tecnología • Acuerdos con empresas de tecnología (Leasing) • Otro (Por favor especifique) Octava pregunta: ¿Tienen en su empresa preferencia o convenio con una marca especifica al momento de adquirir sus computadores y equipos similares? Nuevamente se presenta una pregunta que permite tener una idea más clara de la sobre el tiempo de computadores que se tienen en la empresa. • Novena pregunta: El manejo de residuos tecnológicos es realizado por? Uno de los mayores problemas en las empresas es el manejo de residuos tecnológicos, teniendo en cuenta que una gran cantidad de organizaciones no cuentan con unas políticas claras en cuanto al manejo de dichos residuos, lo cual conlleva a problemas no solo al departamento encargado de almacenarlos o eliminarlos, también al medio ambiente que se ve afectado por sustancias que son contaminantes y cuya degradación es a muy largo plazo. 27 El proyecto que se presenta podría ofrecer una solución a dicho problema de manejo de residuos, razón por la cual es importante la novena pregunta. Las opciones son: • Por un departamento interno especializado en el manejo de residuos tecnológicos • Por una entidad externa especializada en el manejo de residuos tecnológicos • No existe un manejo diferente (Se procede como con los otros tipos de residuos) Otro (Por favor especifique) • • Décima pregunta: En su empresa existen políticas de reciclaje de residuos tecnológicos o participan en programas de donación de equipos de computo (p.e. computadores para educar) Esta pregunta complemente la anterior, teniendo dos opciones para responder: • Si • No Esta pregunta se ha agregado con el fin de conocer el manejo que se da en las empresas a los equipos que ya no son usados en la empresa, de tal forma que se puede identificar posibles problemas relacionados con la forma como se procede con los desechos tecnológicos. Tambien es posible saber si en la empresa se pueden encontrar recursos para el diseño de un clúster con equipos que no se usen, o si por el contrario los computadores que pueden ser usados para este tipo de proyecto ya son destinados a otros fines como Computadores para Educar u otros similares. Entre la décimo primera y décimo sexta pregunta se busca información específica sobre los computadores dados de baja de la empresa, su características, lo cual permite generar una idea aproximada del tipo de equipos disponibles para el montaje de un clúster como el que se propone en el presente proyecto. • Décimo primera pregunta: ¿Considera que todos o algunos 28 de los equipos dados de baja aún pueden ser utilizados, es decir, aún encienden y cumplen funciones básicas? Presenta dos opciones al ser una pregunta de falso y verdadero. A partir de esta información se puede conocer si existen recursos (ordenadores) con los que se pueda contar para el desarrollo de un proyecto como el que se propone en este documento. • Décimo segunda pregunta: En promedio, los equipos dados de baja cuentan con procesadores de velocidades entre... Se busca clasificar los procesadores según sus velocidades que van en rangos de la siguiente manera: • • Menor a 400 Mhz • Entre 400 Mhz y 799 Mhz • Entre 800 Mhz y 1.19 Ghz • Entre 1.20 Ghz y 1.50 Ghz • Mayores a 1.5 Ghz Décimo tercera pregunta: En promedio, los equipos dados de baja cuentan con memoria RAM … Se busca clasificar la memoria principal según su capacidad, que va en rangos de la siguiente manera: • Menor a 64 Mb • Entre 64 Mb y127 Mb • Entre 128 Mb y 255 Mb • Entre 256 Mb y 511 Mb • Entre 512 Mb y 1023 Mb • Entre 1024 Mb/1 Gb y 2048 Mb/2 Gb • Mayor a 2048 Mb/2 Gb 29 • Décimo cuarta pregunta: En promedio11, los equipos dados de baja cuentan con discos duros de capacidades … Aunque en algunos casos el disco duro puede no ser tenido en cuenta en los nodos de un clúster, resulta importante conocer la capacidad de almacenamiento que tienen los computadores para la planificación de las funciones del clúster, capacidades para algunas tareas, etcétera. Las opciones son: • • Menores a 20 Gb • Entre 20 Gb y 39 Gb • Entre 40 Gb y 79 Gb • Entre 80 Gb y 119 Gb • Entre 120 Gb y 150 Gb • Mayores a 150 Gb Décimo quinta pregunta: ¿La mayoría o todos los equipos dados de baja cuentan con tarjeta de Red? La existencia de tarjeta de red en los equipos es importante al momento de integrarlos a un clúster. Al ser una pregunta tipo falso-verdadero las opciones son dos: Si o No. • Décimo sexta pregunta: En general, los equipos de su empresa, tanto los activos como los dados de baja, cuentan con sistemas operativos … Aunque el hecho de implementar un proyecto clúster con Kerrighed implica la necesidad de trabajar con un sistema operativo Gnu\Linux, es importante conocer con que S.O cuentan los equipos dados de baja actualmente para saber entre otras cosas el nivel de conocimientos que se pueda tener en la empresa acerca de un sistema especifico, además los posibles cambios y adecuaciones para que interactuen en la red los equipos que se usan normalmente y el clúster. Las opciones son las siguientes: 11 La palabra promedio en esta pregunta no se refiere a la suma de las capacidades de los discos en los computadores, sino a la capacidad de disco que más se repite o más se encuentra en los ordenadores. 30 • Microsoft (Windows Vista, XP, 98, etcétera). • GNU/Linux (Debian, Red Hat, etcétera). • BSD (Free, Open) • MacOS • Otro 2.2. RESULTADOS OBTENIDOS Los resultados que se muestran a continuación se han obtenido de 5 empresas de la región (se encuentran en las ciudades de Pereira y Dosquebradas), y en algunos casos son organizaciones con presencia nacional o sedes en otras regiones del país. A partir de estos resultados se propone crear un escenario base que se pueda usar en el proceso de diseño del clúster. 2.2.1. Cantidad de computadores en la empresa Las empresas tenidas en cuenta en este proyecto hacen uso de diferentes recursos tecnológicos para sus actividades, algunos restringidos a la parte administrativa, mientras que otros están presentes en todas las áreas de la organización. Los resultados arrojados son los siguientes: Figura 3. Cantidad de computadores en la empresa Fuente: Propia 31 Es de notar que de las 5 empresas, 3 cuentan con mas de 20 computadores, lo que representa el 60%. Si esta información se aplicara como representación aproximada del conjunto total de las organizaciones en la región, dicho 60% representaría la población objetivo a la cual se le podría presentar un proyecto de esta naturaleza, ya que el porcentaje restante presenta un número de ordenadores bajo como para pensar en una rotación de equipos muy baja como para contar con los recursos suficientes para la construcción de un clúster. 2.2.2. Clasificación de los equipos Para esta pregunta se obtuvo que todas clasifican la mayoría de sus equipos como de escritorio, por lo tanto estos son los equipos que en la gran mayoría de los casos se podrán encontrar para la implementación de un clúster. Figura 4. Clasificación de los equipos de computo Fuente: Propia 2.2.3. Servidores Tal y como se ve en el gráfico tan solo 3 de las empresas tienen servidores, lo cual puede indicar que además estas 3 entidades son las únicas que han detectado la necesidad de ejecutar servicios de alto consumo y que además hagan uso de equipos de 32 altas prestaciones relacionada. para el procesamiento de la información Estas son las además el tipo de organizaciones que identifican con mayor facilidad necesidades relacionadas con las prestaciones que puede ofrecer un clúster, pero también las más problemáticas para ofrecer este tipo de proyectos si se tiene en cuenta que ya cuentan con hardware especializado para proceso de alto consumo, estabilidad y disponibilidad. Figura 5. Existencia de servidores Existen en su empresa computadores que puedan ser clasificados como servidores (con Hardware de alto desempeño, múltiples procesadores, alta capacidad en memoraia prinpipal y secundaria, etcétera) 3,5 3 2,5 2 1,5 1 0,5 0 Si No Fuente: Propia 2.2.4. Nivel de rotación de los computadores en la empresa Es esta una de las preguntas más importantes para el proyecto toda vez que se puede conocer cual es la cantidad de equipos que se podrían esperar como dados de baja según la rotación de los mismos en la empresa. Una rotación alta podría indicar un importante cantidad de ordenadores que podrían ser usados para el proyecto, mientras que lo contrario podría indicar que no se contará con una cantidad interesante de recursos para el clúster. 33 Aunque lo anterior no implica necesariamente la viabilidad del proyecto si puede guiar la forma como un clúster con computadores dados de bajo puede ser presentado e implementado para las empresas, el tamaño que puede tener, etcétera. Figura 6. Nivel de rotación y reemplazo de equipos Fuente: Propia De la anterior gráfica se puede encontrar que en general el proyecto se puede enfrentar a una rotación baja toda vez que dicha acción se realiza según las necesidades de la empresa. Esto podría llevar a que el uso de un computador se extienda por años, los suficientes como para que el equipo sea dado de baja cuando el ordenador ya no brinde ningún servicio para la empresa e incluso para el clúster, ya sea por capacidades o por daño en componentes importantes. 2.2.5. Motivos para la rotación de los equipos La séptima pregunta sirve como complemento de la anterior ya que se puede determinar las razones que provocan la baja de un computador en las empresas estudiadas. 34 El hecho que en el 40% de los casos se realice debido a bajas prestaciones de los equipos permite pensar en que se pueden contar con recursos apropiados para el desarrollo de un clúster. Lo anterior sumado a que existe un 30% restante que se ve reflejado en políticas de renovación y acuerdos con empresas de tecnología, lo cual da un resultado total del 70% permite una visión más optimista de este aspecto. Figura 7. Motivos para rotación o reemplazo de equipos. Fuente: Propia 2.2.6. Convenios o preferencias con marcas Los resultados permiten identificar que que existe una marcada preferencia en estas 5 empresas estudiadas por una marca comercial específica (40%) pero también por una combinación de diferentes fabricantes y equipos clónicos o clónes (40%). Encontrar equipos de marca dados de baja para la construcción de un clúster puede generar problemas derivados de la obtención de repuestos o partes necesarias por el computador, elevando costos, o imposibilitando la recuperación completa del ordenador. Encontrar equipos clónes puede por el contrario facilitar este aspecto para la implementación de un clúster con estos ordenadores. 35 Figura 8. Preferencia por marca o convenio Fuente: Propia 2.2.7. Manejo de Residuos tecnológicos y políticas de reciclaje de residuos tecnológicos Estas dos preguntas han permitido identificar una importante falencia en las empresas observadas al encontrar que de las 5 empresas, 4 no tienen un manejo diferente de los desechos tecnológicos y solo 1 tiene alguna política de reciclaje de este tipo de residuos. Si este mismo indicador se extiende al grupo general de empresas en la región el panorama es preocupante, especialmente si se tiene en cuenta el alto impacto que este tipo de basura puede provocar en el medio ambiente, sin contar la perdida de dinero para una empresa que podría estar desechando componentes que todavía podrían ser útiles o podrían ser solución a problemas en la estructura tecnológica de la empresa. 36 Figura 9. Manejo de residuos tecnológicos Fuente: Propia Figura 10. Políticas de reciclaje y programas de donación Fuente: Propia 2.2.8. Estado de los equipos dados de baja Las siguientes respuestas permiten conocer el estado y las características promedio de los equipos dados de baja en las empresas: 37 Figura 11. Equipos que pueden ser usados Fuente: Propia Figura 12. Procesadores promedio Fuente: Propia 38 Figura 13. Capacidad de memoria RAM Fuente: Propia Figura 14. Capacidad en disco duro Fuente: Propia 39 Figura 15. Existencia de tarjetas de red Fuente: Propia Figura 16. Sistemas operativos Fuente: Propia Lo anterior permite construir una idea de la forma en que se maneja el tema de desechos tecnológicos en una empresa, en las cuales, para los casos observados, no se tienen políticas o metodologías claras en cuanto al tema de los desperdicios de esta naturaleza. En 40 algunos casos ni siquiera se tiene un lineamiento claro relacionado con el cambio o baja del inventario de los ordenadores existentes, más allá de la simple necesidad creada por el daño de una máquina o la necesidad de actualizarla o cambiarla. Es importante tener en cuenta, que esta observación ha permitido tener un conocimiento sobre lo que se puede esperar en cuanto a equipos dados de baja y construir un escenario base para el desarrollo de un proyecto de la naturaleza que se plantea en este documento. En general las expectativas en relación a los equipos dados de baja son buenas, si se tiene en cuenta que 3 de las 5 empresas consideran que dichos computadores aún pueden ser usados o cumplen con funciones básicas. De las otras dos empresas se puede decir que , aunque consideran lo contrario, después de tener contacto con ellas se podría considerar que dichos ordenadores podrían ser recuperados (algunos de ellos) mediante repuestos de bajo costo, incluso algunas partes pueden ser reemplazadas por los de otros ordenadores (fuentes de poder, memorias, discos, etcétera). En relación a las características la mayoría de los equipos cuentan con procesadores con velocidades entre los 400 y los 1200 MHz, velocidades apropiadas e incluso superiores a lo que se esperaba. Un dato importante obtenido de visitas a las empresas ha sido identificar el uso de los dos tipos de procesadores representativos del mercado: AMD e Intel, especialmente los Athlon XP y los Pentium IV respectivamente. En cuanto a la memoria RAM son pocos los equipos que cuentan con memorias inferiores a 64 Mbytes, la mayoría se podrían encontrar con memorias entre 256 y 511 (en base a las charlas con las empresas se podría determinar que casi el 90% cuentan con memoria de 256 Mbytes). En algunos casos se ha encontrado memorias DDR2 y DDR3, tipos de memoria bastante nuevas para equipos que han sido dados de baja. En el caso de los discos duros sucede algo similar, y es que aún cuando la tecnología SATA puede considerarse reciente, algunos equipos dados de baja cuentan con esta interfaz de disco duro. En cuanto a capacidades la mayoría de los discos están entre 20 y 80 Gbytes, siendo los de 40 Gbytes los más comunes. Para el proyecto de un clúster con equipos dados de baja constituye un elemento primordial la red de datos, y por ende las tarjetas de red 41 constituyen un elemento importante en todos los equipos. En el caso de las NIC12 ,2 de cada 5 equipos no cuentan con este dispositivo, lo cual podría llevar a pensar que para implementar un proyecto de esta naturaleza sería necesario una inversión adicional en hardware para que cada ordenador este en capacidad de hacer parte del clúster. Un dato interesante es el hecho que en todas las empresas se tiene como sistema operativo más usado cualquiera de las versiones de Microsoft Windows. En las conversaciones con las empresas se ha identificado a Microsoft Windows XP como la versión más usada en los ordenadores de las organizaciones, algunas apenas si han hecho uso de la versión Vista (en cualquiera de sus subversiones) argumentando diferentes problemas de rendimiento. En cuanto a sistemas operativos libres el uso es poco frecuente y se encuentra en pocos equipos destinados a tareas específicas como un servidor o un proxy. En el caso de servidores se encuentran dos tipos de Sistemas Operativos: • Microsoft Windows • • Server 2003 Gnu\Linux • Debian • Red Hat Dichos servidores ofrecen en su gran mayoría servicios relacionados con bases de datos (MySQL, SQL Server), y en algunos casos servicios web (Apache generalmente). Además los servidores, en relación al hardware, son en algunos casos equipos de escritorio de buenas características adaptados como servidores, aunque existen excepciones como los Power Dell 2800 o los IBM que se encontraron en algunos casos. La anterior información resulta altamente útil, puesto que permite conocer que en promedio los ordenadores dados de baja que se 12 Network Interface Card o Tarjeta de Interface de Red. 42 podrán encontrar en una empresa y que podrían ser usados para la implementación de un clúster como el que se propone en el presente proyecto son los siguientes: • La mayoria de equipos estan en capacidad de encender y cumplir con sus funciones básicas. • Computadores de marcas Acer, Hewllet-Packard y Clones (en la mayoría de los casos clones). • Los equipos cuentan con procesadores que no superan los 1200 Mhz, memoria RAM igual o menor a 256 MB y capacidad de disco duro de 40 GB. • Equipos con tarjeta de red (generalmente 10/100 mbps) • Los ordenadores cuentan con Sistema Operativo de la familia Microsoft Windows 43 3. JUSTIFICACIÓN Bajo la premisa del crecimiento de las empresas y sus necesidades de expandirse y mostrarse de diferentes formas, sumado a los requerimientos que suelen presentarse en cuanto a la administración de la información se refiere, se busca proponer una solución técnicamente viable y económicamente sostenible. Ya no es de extrañar que en la actualidad las organizaciones necesiten mostrar y vender sus productos a través de sitios web, llevar a cabo las comunicaciones entre sus empleados a través de sistemas de correo electrónico, escritorio remoto, conferencia remota, entre otros, administrar su información mediante motores de bases de datos, y muchas otras necesidades que día a día se presentan. Por otro lado existe la necesidad de dar solución al problema de los desechos tecnológicos que se encuentran en la empresa, de forma saludable para el ambiente, la empresa y la sociedad. Para ello se busca ofrecer una solución mediante sistemas tipo clúster que hagan uso de esos computadores dados de baja, de tal forma que puedan ser recuperados y puestos a trabajar para la empresa, teniendo en cuenta que: 1 A diferencia de los clúster que existen en las universidades y empresas de gran envergadura, lo que se busca es un sistema de aplicación general que pueda ser adaptado a las necesidades de una pequeña y mediana empresa y administrado de una forma más simple, en comparación con los requerimientos ingenieriles y científicos de organizaciones como la NASA, o de alcances tan elevados como Google, que requieren de un esfuerzo mayor en diferentes aspectos. 2 Hacer uso de los equipos que se encuentran comúnmente en las empresas de la región, específicamente los equipos que ya no están en uso, lo cual brindara las siguientes ventajas: 2.1 Se alargaría la vida útil de los computadores de la empresa, lo cual se notaria sobre el aspecto económico de la organización. 2.2 En cierto modo se mejoraría el manejo de los desechos 44 tecnológicos en las empresas, toda vez que estos no son descartados de forma inmediata sino que se aprovecharían. 2.3 Se dispondría de una solución de bajo costo, teniendo en cuenta que el tipo de dispositivos a usar. Por otro lado resulta de suma importancia analizar cuales son las capacidades que un clúster de este tipo puede aportar organización, estudiar sus capacidades de crecimiento y renovación, y plantear su viabilidad para convertirse en una solución que pueda ser realmente implementada. 45 4. ESTADO DEL ARTE 4.1. CONCEPTOS BÁSICOS 4.1.1. Supercomputación13 Cada vez la investigación llega a puntos más altos en búsqueda de respuestas a problemas más, retando no solo la mente humana, sino también los recursos técnicos disponibles. Al responder a esta necesidad nace la supercomputación, la cual da solución a muchos problemas de varias áreas como la matemática, física, etcétera. La supercomputación hace referencia al conjunto de los elementos de software y hardware utilizados para solucionar problemas complejos, simulaciones, e incluso procesos que son muy comunes para la gente como las predicciones meteorológicas, animación por computadora para películas; lo anterior convierte a la supercomputación en una herramienta que se utiliza cada vez más a menudo. Ahora bien, anteriormente los computadores se consideraban de alta gamma (supercomputadores) según las características de hardware y software que tuviesen, como la velocidad de los procesadores, la cantidad de memoria principal, capacidad de disco duro, etcétera, sin embargo, y aunque actualmente esa consideración es valida, la velocidad de los computadores de escritorio es lo suficientemente alta como la de los supercomputadores de hace ya varios años, lo que ha llevado a que la solución a problemas complejos se tenga que llevar de un solo ordenador a varios, es decir, al cálculo distribuido o computación paralela, teniendo como base el hecho de poner a trabajar varias máquinas juntas en un mismo problema. 4.1.2. Computación paralela Los computadores convencionales, tal como los de escritorio que se usan normalmente en hogares y empresas, procesan la información de forma secuencial, es decir, cada instrucción es resuelta de forma individual y una a la vez por el procesador del ordenador. Esta es la forma en que lo ha venido haciendo desde el comienzo de los computadores, sin embargo la velocidad actual de las unidades centrales de procesamiento permiten una ejecución tan rápida que aparenta que varios programas se están 13 MERAYA GARCIA, Félix. La supercomputación. Asociación ACTA. 17 pág. 46 ejecutando al mismo tiempo. Esa es la razón por la cual mientras se escribe un documento se puede escuchar música, entablar conversaciones, etcétera, lo cual se conoce como multitarea. En la computación paralela se busca dividir los problemas en segmentos más pequeños que pueden ser ejecutados simultáneamente por diferentes procesadores, cada uno encargado de una sección de código, razón por la cual la computación paralela es aplicable a muchos problemas complejos, sin embargo también se necesita de una programación paralela, un paradigma más complejo por las diferentes variables que se introducen, como la sincronización, el paso de mensajes, nuevos tipos de errores, entre otros. Los siguientes son los tipos de computación paralela que se pueden encontrar14: • Paralelismo a nivel de bit. • Paralelismo a nivel de instrucción. • Paralelismo a nivel de datos. • Paralelismo a nivel de tareas. 4.1.3. Ley de Amdahl 15 En el año de 1967, Eugene Amdahl estudió el comportamiento de los sistemas cuando hay cooperación entre tareas para la resolución de un problema, trabajo o proceso. Aun cuando se pueda creer que por ejemplo a mayor numero de procesadores, mayor será la velocidad de ejecución de un proceso específico, la realidad es distinta, y existen factores importantes a tener en cuenta. Del análisis realizado se desprende la ley de Amdahl, que indica que la mejora en rendimiento depende de la parte secuencial del proceso que se esta ejecutando, el cual, independiente de los elementos de procesamiento con los cuales se cuenta, solo puede ser ejecutado por uno solo de ellos, y cuya finalización permitirá la ejecución del resto 14 COLABORADORES DE WIKIPEDIA. Computación Paralela. http://es.wikipedia.org/wiki/Computaci %C3%B3n_paralela 15 COLABORADORES DE WAPEDIA. Ley de Amdahl. http://wapedia.mobi/es/Amdahl 47 del trabajo. Tomando como uno(1) el valor que tarda un procesador en la ejecución de una tarea, si el segmento secuencial se nombra como F, entonces la parte paralelizable del proceso es igual a : 1 – F (1) Ahora bien, si se tienen P elementos de procesamiento, entonces la mejora en el tiempo para la sección paralelizable es: (1 – F) / P Teniendo en cuenta la sección no paralelizable se tiene: F + ((1 – F) / P) Y finalmente la fórmula de incremento de velocidad máxima con P elementos de procesamiento (A) es : A= 1 1− F F P 4.1.4. Ley de Gustafson16 Esta ley de la ingeniería informática también se enfoca en el procesamiento paralelo, al igual que lo hacia la ley de Amdahl, estableciendo además que cualquier problema grande puede ser paralelizado de forma eficiente. A diferencia de lo concluido por Amdahl en 1967, que entregaba una visión pesimista sobre el procesamiento paralelo, Gustafson en 1988 entregaba una visión totalmente opuesta, expresada como: S P =P−α∗ P−1 Donde P es el número de procesadores, S el speedup y α la parte no paralelizable del proceso. 16 COLABORADORES DE WAPEDIA. Ley de Gustafson. http://wapedia.mobi/es/Ley_de_Gustafson 48 4.1.5. Speedup 17 En la computación paralela el speedup expresa que tan rápido es un algoritmo paralelo en comparación con un algoritmo secuencial. Dado p como el numero de procesadores, T1 como el tiempo de ejecución del algoritmo secuencial y Tp el tiempo de ejecución del algoritmo paralelo con p procesadores, entonces el SpeedUp se define como : S p= T1 Tp A partir del concepto de SpeedUp se desprende el de eficiencia, una medida de rendimiento, entre 0 y 1, que expresa que tan bien son usados los procesadores para la solución de un problema comparado con el esfuerzo usado en comunicación y sincronización Ep= Sp T1 = p pTp 4.1.6. Sistemas distribuidos18 Los sistemas distribuidos hacen parte de la supercomputación, trabajando en base al concepto de dividir los problemas en porciones menores. Este tipo de sistemas se constituyen por un grupo de nodos o computadores, comunicados mediante una red y que además cuentan con el software adecuado, de tal forma que todos se concentran en uno o varios programas de considerable complejidad, alto consumo de recursos o necesidades especificas, como si fueran una sola máquina. Al contar actualmente con equipos personales de mayores capacidades técnicas, las redes de alta velocidad y un marcado aceleramiento en el desarrollo de software, se han dirigido muchos esfuerzos a la construcción de sistemas distribuidos en reemplazo de supercomputadores centralizados. El tamaño de este tipo de sistemas es variable contando con pocos computadores, tres o cuatro en casos simples, hasta miles de unidades como el caso de google. 17 COLABORADORES DE WIKIPEDIA. Speedup. http://en.wikipedia.org/wiki/Speedup 18 ROJO, Oscar. Introducción a los sistemas distribuidos. http://www.augcyl.org/?q=glol-intro-sistemasdistribuidos COLABORADORES DE WIKIPEDIA. Computación Distribuida.http://es.wikipedia.org/wiki/Grid 49 Los sistemas distribuidos, para que sean considerados como tales y además presenten unas condiciones mínimas adecuadas, deben tener en cuenta las siguientes características: • Compartir recursos: Al igual que los sistemas multiusuarios, el concepto de compartir recursos se enfoca a la capacidad de ofrecer el acceso a diferentes periféricos, software y datos, que aunque se encuentren en ubicaciones diferentes, se verán de forma local, como si del computador del usuario se tratara. Para lograrlo se hace uso de gestores • Apertura: Un sistema abierto significa que puede ser extendido, puede crecer al añadir hardware, o incluso software, con interfaces públicas, mecanismos uniformes de comunicación y sistemas heterogéneos que pueden interactuar entre si. • Concurrencia: El hecho de tener N procesadores lleva a que se puedan ejecutar hasta N procesos de forma paralela, o de forma concurrente (múltiples procesos al mismo tiempo), los cuales a su vez pueden interactuar entre sí. La concurrencia en sistemas distribuidos aplica también a los recursos, en cuyo caso estos pueden ser usados de forma simultanea por varios usuarios o procesos. • Escalabilidad: Cuando se habla de escalar un sistema se esta expresando su capacidad de crecimiento, la capacidad de agregar mas estaciones o procesadores al conjunto, los cuales también entrarán a compartir los recursos (los existentes y los nuevos que van a aportar). Es necesario que el sistema no cambie, al menos significativamente, cuando se este se escala, y que siga siendo eficiente y útil sin importar el tamaño de la red. • Tolerancia a fallos: En un sistema es necesaria la tolerancia a fallos, ya sea mediante la redundancia de hardware o la recuperación del software. En un sistema distribuido implica la disponibilidad de los servicios ofrecidos, de tal forma que el fallo de una máquina solo afecte los procesos que eran llevados por ella y no todo el sistema completo, pudiendo trasladarse dichos procesos hacia otro nodo para ser completados. • Transparencia: Uno de los puntos más importantes en los 50 sistemas distribuidos es que el conjunto debe ser visto como una sola máquina por el usuario final, independiente de la cantidad de nodos que existan. Lo anterior aplica para los recursos, es decir, si un usuario se encuentra en el ordenador X del conjunto, y el archivo que necesita se encuentra en el ordenador Y, el gestor encargado debe hacer el proceso transparente de modo que para dicho usuario parezca que el archivo realmente se encuentra en la máquina X. 4.2. CLÚSTER Un clúster se puede definir, según lo expresado por Milone, Azar y Rufiner en su laboratorio de cibérnetica “Desarrollo de una supercomputadora basada en un clúster de PC's”19, como la agrupación de ordenadores (generalmente computadoras personales) conectadas mediante una red y trabajando en un problema de tamaño considerable que ha sido dividido para ser procesado de forma paralela (También pueden ser usados para aplicaciones cotidianas pero que consumen altos recursos de máquina, un enfoque que hace que varias máquinas se vean como una sola, no solo para el usuario sino también para los programas). No obstante no es una definición que puede ser considerada lo bastante concreta, e incluso, se pueden encontrar otras más. Catalán20 da una definición más corta, simple y general, que define clúster como “Un conjunto de máquinas unidas por una red de comunicación trabajando por un servicio en conjunto”, teniendo en cuenta que el término máquina hace relación unicamente a los computadores personales. Aunque esta es la definición que ha sido aceptada para el desarrollo del presente proyecto, el mismo autor entrega otras definiciones en comparación a otros sistemas, como la mención que un clúster es “una variación de bajo precio de un multiprocesador masivamente paralelo (miles de procesadores, memoria distribuida, red de baja latencia), con las siguientes diferencias: cada nodo es un máquina, quizás sin algo de hardware (monitor, teclado, mouse, etc.)”21. Es importante mencionar que en 19 MILONE Diego H, AZAR Adrián A, RUFINER Leonardo. Desarrollo de una supercomputadora basada en clúster de PC's. 2001,.pág. 7. 20 CATALÁN,MIQUEL, citado por CÁCERES VILCHES, Juan Esteban. MEDINA AMADOR, Cristian Alejandro. Implementación de un servidor web apache sobre un clúster Linux. Seminario de Titulo Universidad Católica del Maule. 2007. pág. 14. 21 Ibid, pág. 15 51 cualquiera de las definiciones dadas se tiene un elemento fundamental, el computador personal que cumple el papel de nodo dentro de este conjunto de máquinas (podría ser que un equipo de prestaciones mayores también actuará como nodo). Ahora bien, para que un conjunto de máquinas se pueda considerar que un clúster debe cumplir una serie de condiciones, mencionadas por Cacerés y Medina en su trabajo “Implementación de un servidor web apache sobre un clúster Linux”22: • Un clúster debe estar conformado por mínimo por dos nodos o computadores. • Los nodos no pueden estar aislados, deben estar comunicados de alguna forma. • Para un clúster se necesita de un software de control especializado, el cual además determinará el tipo de clúster que se desarrolla. 4.2.1. Tipos de clúster Cuando se diseña un clúster, se hace con el fin de construir un sistema equivalente a un supercomputador a través de la unión de diferentes ordenadores de condiciones mas accesibles para las instituciones, como computadores personales o servidores. De esta forma se pueden tener procesos de complejidad importante o aplicaciones con características especiales que se necesitan ejecutar de forma paralela o con condiciones que permitan su mejor desempeño o mejor disponibilidad para los usuarios finales; un clúster es diseñado entonces para solucionar alguno de los siguientes problemas23: • Mejorar el rendimiento de un sistema: La ejecución de programas en paralelo o la solución de un cuello de botella en el uso de los discos duros o la red permitirán mejorar el rendimiento de diferentes aplicaciones, ya sean bases de datos o servidores de archivos. • Abaratamiento del coste: Mejorar las capacidades de 22 CÁCERES VILCHES, Juan Esteban. MEDINA AMADOR, Cristian Alejandro. Implementación de un servidor web apache sobre un clúster Linux. Seminario de Titulo Universidad Católica del Maule. 2007. pág. 16. 23 Ibid 52 un supercomputador, o incluso de un servidor, significa una inversión considerable, contrario al objetivo de un servidor, que busca una diferencia significativa cuando se busca mejorar el rendimiento del sistema. • Distribución de factores de riesgo del sistema: El hecho que las aplicaciones no se muevan en un solo computador sino en todo o casi todo el conjunto que conforma el clúster, permite tener un nivel de confiabilidad mayor, dado que la caída de un solo ordenador no lleva a la caída de todo el sistema. • Escalabilidad: Hacer crecer el sistema es importante, por que además permite mejorar su rendimiento (en algunos casos, no en todos, por lo que siempre es importante analizar las características de los problemas que se desean resolver con un clúster). En un clúster este punto puede ser llevado a cabo agregando otro ordenador al conjunto, o más capacidad de disco, y teniendo en cuenta que entre más escalable sea el sistema, menor sera el costo para mejorar el rendimiento. Con base en lo anterior, los clúster se dividen en tres tipos24: clúster de alto rendimiento, clúster de alta disponibilidad y clúster de alta confiabilidad. 4.2.1.1. Clúster de alto rendimiento (HP High Performance) En este caso el conjunto de máquinas trabajan como un solo ordenador para obtener mayor rendimiento y ejecutar tareas de gran tamaño. Lo que se busca es utilizar al máximo el tiempo de proceso disponible, sin embargo, para que cualquier aplicación que requiera este nivel de recursos pueda ser implementada exitosamente es necesario que el algoritmo sea paralelizable. A nivel de sistema existen clúster de alto rendimiento como Mosix y openMosix, proyectos que actúan sobre el sistema completo presentando a las aplicaciones todo el conjunto como de si un solo ordenador se tratara y encargándose del movimiento de los procesos entre los nodos, las comunicaciones, etcétera. A nivel de aplicación existen las librerías MPI, PVM, el clúster Beowulf y otros más. 24 Ibid 53 Algunos de los problemas que pueden ser solucionados con este tipo de clúster son : • Cálculos matemáticos. • Renderizaciones de gráficos. • Compilación de programas. • Compresión de datos. • Descifrado de códigos. • Rendimiento del sistema operativo. El objetivo de este tipo de clúster es aprovechar al máximo los nodos que lo componen, y la de conseguir high performance migrando procesos, dividiendo las aplicaciones grandes en procesos, y ejecutando esos procesos en diferentes máquinas. Para lo anterior se pueden usar las siguientes técnicas: • Asignación estática En este caso el administrador se encargará de ubicar la aplicación en el nodo donde se ejecutará, y el cual además sera su ubicación definitiva. La política de localización juega un papel importante en esta técnica, evitando infrautilizar los recursos disponibles debido a una mala decisión. • Asignación dinámica Más allá de la política de localización existe otra, la de migración, que juega aún un papel más importante en esta técnica, debido a que en este caso el mismo sistema se encarga de mover los procesos de un nodo a otro de forma dinámica, llegando incluso a pasar por un tiempo de estabilización a partir del comienzo de la ejecución de las aplicaciones, en el cual los procesos se desplazan hasta llegar a un punto en el cual se ubican de forma casi definitiva en alguno de los nodos del clúster. Si en algún momento el sistema pierde el balance, éste se encarga de volver a mover los procesos hasta encontrar nuevamente la configuración óptima. Debido a que el balanceo constituye un elemento importante en un 54 clúster de alto rendimiento, se hace uso de técnicas matemáticas y estadísticas que permitan medir y sacar el máximo provecho de los recursos disponibles. Sin embargo hay que tener en cuenta que aunque la situación ideal seria realizar un balanceo en base a todo el sistema, la realidad muestra que esto es prácticamente imposible de llevar a cabo y se suelen tener en cuenta solo algunas de las variables (procesador, disco duro o red, entre otras) según el caso sobre el cual se esta realizando la implementación. Los nodos son los elementos que componen el clúster, los cuales pueden ser configurados en alguno de los siguientes modos: • Modo Dedicado En el modo dedicado los nodos funcionan exclusivamente en los trabajos que se llevan en el sistema, y además existe un solo trabajo en el clúster en un tiempo dado, de tal forma que todos los recursos están dirigidos a una sola tarea, la cual no liberará el sistema hasta no haber terminado completamente (aún cuando un alto porcentaje de los nodos ya hayan terminado con los procesos asignados y estén libres). • Modo de división en el espacio Los nodos se agrupan y diferentes trabajos se pueden ejecutar en el clúster, cada uno a su vez se procesa en alguno de los grupos conformados, teniendo en cuenta que cada grupo trabaja de forma exclusiva para la tarea asignada (y cada nodo del grupo solo tiene un proceso asignado, al igual que el modo dedicado) mientras que los recursos de interconexión y entrada/salida se comparten por todo el conjunto. En este modo se debe tener cuidado con que las divisiones sean adecuadas, de tal modo que no sean tan pequeñas que no exista un grupo de nodos suficiente para una tarea, ni tan grande como para que una tarea solo use una mínima cantidad de las máquinas disponibles en la división. • Modo de división en el tiempo Es el modo más común, en el cual varios procesos se pueden estar ejecutando en un nodo y se controla mediante el equilibrio de carga. 55 4.2.1.2. Clúster de alta disponibilidad (HA High Availability) También llamado tolerante a fallos, busca que muchas maquinas hagan el trabajo de una sola (o algunas), trabajando para cosas distintas (servidores web, servidores de correo, de archivos, etcétera) y cuyo objetivo principal es evitar problemas de caídas de los servicios que se ejecutan, de tal forma que si existe el fallo de un recurso no pase nada en el recurso. Según el recurso que se busca sea tolerante, el clúster adquiere el nombre de sistema tolerante a fallo de disco duro, sistema tolerante a fallo de procesador, tolerante a fallo de red, etcétera. En este tipo de clúster se puede dar solución a problemas como : • Tolerancia a fallos. • Sistemas de información redundante. • Balanceo de cargas entre servidores. • Balanceo de conexiones entre servidores. Para contar con un clúster de alta disponibilidad se pueden usar diferentes técnicas, como son: • Técnicas basadas en redundancia Cuando un dispositivo falla se puede tener un segundo con los datos o aplicaciones, a modo de backup, de tal forma que el primero se repara mientras el segundo lo reemplaza durante el tiempo que se tarde el arreglo. Se puede tener redundancia de los siguientes tipos: • Redundancia Aislada En este caso existe un dispositivo principal y un dispositivo redundante, básicamente una “copia” del primero. • N-Redundancia Existe un dispositivo principal y N dispositivos de respaldo, listo para reemplazarlo en caso de fallo. Las técnicas de redundancia se pueden aplicar sobre diferentes dispositivos, ya sean estos discos duros, 56 procesadores, puntos de red, etcétera, lo cual brinda segundas opciones o caminos alternativos a un recurso específico. • • Para esta técnica de redundancia existe además una segunda clasificación según la configuración de software y hardware que se haya dispuesto para el clúster, teniendo los siguientes tipos: • Hot Standby Es la más común en la cual existe un nodo principal y un nodo backup, y este último solo actuá activamente cuando tiene que reemplazar al nodo maestro por falla. • Toma de cargos mutua Es similar a la clasificación anterior, sin embargo el nodo backup puede trabajar en otros procesos mientras no actúa como reemplazo del nodo maestro. Cuando caiga el nodo principal, el secundario puede actuar de dos maneras, ya sea ejecutando tanto sus procesos como los que tenia como backup, presentando una baja en el rendimiento, o posterga sus procesos y ejecuta unicamente los que tenia el nodo primario. • Tolerancia a fallos Actúa como N-Redundancia, teniendo varios nodos de apoyo, de tal forma que si N-1 equipos falla queda uno que permita seguir brindando el servicio. Además se puede combinar con la toma de cargos mutua para aprovechar el tiempo disponible de los nodos secundarios en otras tareas. Técnicas basadas en reparación Se busca que cuando se presenté un fallo, el tiempo de recuperación sea el mínimo posible, en base a programas o scripts que se ponen en acción inmediatamente se detecta un problema y sin necesidad de que este presente una persona, un técnico, para proceder con una solución. Las acciones que se pueden realizar se dividen en dos: • Diagnóstico Se busca localizar el error y las causas del mismo mediante técnicas como el piggybacking. • Reparación En la medida en que el sistema lo permita, a través de sistemas expertos o de otra naturaleza, se 57 recupera del fallo mediante la restauración a partir de una copia del sistema. Un sistema que tenga capacidad de guardar en un punto de restauración todos los aspectos presentes en el momento de fallo o caída, tanto activos como inactivos, es prácticamente inviable debido a los altos recursos necesarios para llevarlo a cabo, y se convertiría en lo que se conoce como un clúster de alta confiabilidad. 4.2.1.3. Clúster de alta confiabilidad (HR High Reliability) Este último tipo de clúster busca aportar un nivel determinado de confiabilidad al sistema, de tal modo que este último se comporte de una manera determinada, como un sistema en tiempo real, por ejemplo. Son difíciles de implementar, usados en entornos de tipo empresarial, y relacionados con hardware especializado, ya que a diferencias de los clúster de alta disponibilidad, no basta con que el sistema no caiga, sino que además el punto de restauración deber ser lo suficientemente completo como para que el estado de las aplicaciones se mantengan igual que al momento de la baja del servicio. Según lo anterior, un sistema de alto rendimiento hará que un servicio sea lo más rápido posible, lo cual exige además una investigación previa de ese proceso que se desea “acelerar” para conocer sus características e identificar las razones por las cuales no es tan rápido como se desea y saber sobre que recursos se procederá. En contraste un sistema de alta disponibilidad se concentrará en que el servicio nunca pare, sin tener en cuenta la rapidez del mismo. De todas maneras, también es posible combinar los diferentes tipos o conceptos de clúster, según el caso o tipo de aplicación sobre la que se esta actuando. 4.3. SOFTWARE PARA CLÚSTER 4.3.1. Sistema operativo El sistema operativo constituye uno de los elementos más importantes al momento de tratar sobre soluciones basados en elementos computacionales, siendo este el 58 elemento que permite administrar y usar los recursos disponibles, ya sea un computador, un servidor, etcétera, permitiendo además contar con una serie de cualidades, servicios ofrecidos, etcétera. Es por ello que se encuentran diferentes versiones de sistemas operativos, algunos de los cuales pueden ser usados para el desarrollo de un clúster y que tienen unas características específicas, de tal forma que se optimiza el consumo de recursos de una forma muy diferente a como se hace en un equipo de escritorio, por ejemplo, además de ser sistemas multiusuario y multiproceso, características necesarias para el trabajo con clúster. Aunque en la práctica, sistemas operativos libres como Gnu\Linux son considerados como los más apropiados para el diseño de clúster debido a sus características, es importante conocer las otras alternativas existentes en el mercado, razón por la cual a continuación se complementa este capítulo con información general sobre este tema. 4.3.1.1. Sistemas operativos propietarios Los sistemas operativos propietarios cobijan a un grupo de software bajo una serie de licencias en las cuales el fabricante del aplicativo o el sistema operativo es, legalmente, el dueño de dicho producto y el usuario adquiere una autorización para su uso. Dicho tipo de licencia entonces define, según las disposiciones del propietario del software, la forma en que puede ser usado y las condiciones para hacerlo, distribuirlo y redistribuirlo, copiarlo, entre otras cosas. Generalmente este tipo de licencia no permite la modificación del código y en muchos casos esta asociada al pago de una suma de dinero dependiendo de la cantidad de equipos sobre los cuales se ejecutara el programa o los fines con que se haga. Sin embargo, este tipo de sistemas operativos (y de aplicativos también) son los más usados en el mundo debido a su facilidad de uso, el soporte que ofrecen las empresas que los fabrican y/o distribuyen, incluso a que son los más enseñados en diferenes centros de eduación. Dado lo anterior, la construcción de un clúster basado en sistemas operativos propietarios puede presentar las siguientes situaciones: • Tiempo de aprendizaje e interacción menor debido a que para 59 la mayoria de la gente es un S.O. muy familiar, muy usado en su entorno. • Soporte empresarial para su implementación y administración. • La administración, incluso la instalación, del sistema operativo y las aplicaciones suelen ser bastante intuitivas y simples. En contra tiene que casi el 100%25 de los programas (Middleware como se verá más adelante) que permiten convertir un conjunto de computadores en un clúster han sido construidos para ser implementados sobres sistemas operativos con licencias de código abierto, además, los costos pueden ser altos teniendo en cuenta que se debe contar con la licencia para la instalación del sistema operativo propietario en un número determinado de ordenadores. • Sistemas operativos de la familia Microsoft Microsoft es la empresa líder en sistemas operativos, especialmente en computadores personales, dado que un alto porcentaje (90% o más) usa alguna de sus versiones del S.O. Windows. Hace uso de la licencia tipo EULA (End User License Agreement o Contrato de Licencia para Usuario Final) en la cual el fabricante del software define los derechos su producto en relación al uso, distribución y redistribución, copia, modificación, entre otras. En el caso de los sistemas operativos de la familia Microsoft este tipo de licencia no permite la modificación del programa, tampoco la copia y distribución en formas diferentes a las específicadas por ellos (inclumplirlo se considera como piratería) y específica un numero concreto de computadores sobre los cuales se puede instalar el S.O, dependiendo de las condiciones en que se adquiera el software y teniendo en cuenta el uso del producto solo esta permitido para el comprador (el cual no es dueño del software, solamente de la licencia para usarlo). Microsoft Corporation nació en 1975 por Bill Gates y Paul Allen, dedicada a la producción de software y equipos electrónicos, y destacada por el sistema operativo Microsoft Windows y la 25 Al momento de realizar el presente proyecto no se conoce de una alternativa propietaria de middleware para la implementación de un clúster; las que se mencionan aún no tienen el desarrollo suficiente o estan en desarrollo. 60 suite ofimática Microsoft Office. Su dominio en el mercado inició con el sistema operativo MS-DOS, y ha continuado hasta contar con su versión actual de Windows Vista, aunque ya se esta probando Windows 7, el nuevo S.O, que ya se puede probar descargándolo desde el sitio web de la empresa. • Windows NT: Familia de Sistemas operativos de Microsoft que incluía versiones para servidores y que ha sido la base para otros productos de la empresa, incluido Windows 7. Fue diseñado inicialmente para ser un sistema multiusuario, basado en lenguaje de alto nivel, independiente del procesador, comparable a Unix. Sus características son las siguientes: • Tienen multitarea apropiativa, es decir que los procesos no tienen el control del procesador de forma exclusiva; en cambio el sistema operativa lo gestiona, asignando a un proceso un intervalo de tiempo en el procesador, al final del cual le quita el control y lo cede a otro proceso que lo necesita. • Diseñados para trabajar con equipos de un solo procesador u ordenadores de multiprocesamiento simétrico (varios microprocesadores compartiendo el acceso a la memoria en igualdad de condiciones. Adicionalmente en el multiproceso simétrico varias CPU pueden trabajar en el mismo proceso ejecutandose en paralelo). • Soporte para 32 bits y 64 bits a partir de la versión Windows XP. • Núcleo híbrido, es decir usa un estructurado como un micro núcleo. • Basado en dos capas: núcleo monolítico • Modo usuario: Limitado al uso de aplicaciones y recursos a los cuales tiene acceso un usuario. • Modo Núcleo: Acceso total a los recursos. En la familia Windows NT, las siguientes son las versiones aptas 61 para el uso en servidores • • Windows NT 3.1: lanzado en julio de 1993. • Windows NT 3.5: lanzado en septiembre de 1994. • Windows NT 3.51: Lanzado en mayo de 1995. • Windows NT 4.0: Lanzado en julio de 1996. • Windows 2000: Lanzado en febrero del 2000. • Windows Server 2003 (NT 5.2): liberada en abril de 2003. • Windows Server 2008 (NT 6.0): liberada en febrero de 2008. Sistema Operativo MacOS Macintosh Operating System es un sistema operativo desarrollado por Apple para los ordenadores Macintosh desarrollados por esta misma empresa. Apple es una empresa nacida en Estados Unidos fundada en 1976 de la mano de Steve Jobs y Stephen Wozniak, que se ha destacado no solo por su sistema operativo, enfocado desde sus inicios en una interacción simple y agradable entre el usuario y la máquina, sino también por sus computadores, reproductores de audio, y en los últimos meses por su celular Iphone. En la rama de sistemas operativos para servidores esta representado por el MacOS X Server, conocida también como Leopard. Es un sistema operativo basado en BSD, del cual hereda muchas de sus características como la seguridad, sistemas de archivos, etcétera, lo cual lo convierte en una interesante opción para máquinas que ofrecen servicios de diferente naturaleza. Consta con una variedad de prestaciones como iCal Server, Wiki Server, Spotlight Server, iChat Server, Servicios de correo, alojamiento web, entre otros. • Sistema Operativo Unix Sistema operativo desarrollado en 1969 por los laboratorios Bell de AT&T y que aún es considerado como el mejor a nivel de servidores. Ha sido la 62 fuente de inspiración para el desarrollo de otros sistemas operativos, contando con “descendientes” como las diferentes distribuciones de GNU/Linux y BSD. Unix se caracteriza por ser un sistema operativo portable, multitarea y multiusuario, condiciones que heredan aquellos S.O. basados en él. Además sus excelentes prestaciones en seguridad y la estabilidad que presenta le han hecho ganar importante en el mundo informático. Del proyecto UNIX original o puro (la familia AT&T cuyos miembros más representativos son Unix System III y Unix System V) se han desprendido un conjunto de familias: • Familia BSD26. • Familia AIX: Familia de sistemas operativos propiedad de IBM, surgida del licenciamiento de Unix a esta empresa. Es usado en los servidores IBM con procesadores IBM Power de 32 y 64 bits, presentando además las siguientes características: • • Soporte máximo de 64 procesadores. • 2 TBytes en memoria principal. • 16 TBytes soportados. • 16 TBytes de tamaño máximo de archivos. • La última versión estable de esta familia es 5.3, liberada en agosto de 2004, con soporte para las arquitecturas PowerPC y Power, interfaz gráfica (CDE, KDE y Gnome) e interfaz basada en texto (SMIT). Familia Xenix: de sistema de archivos máximo Es una familia de sistemas operativos 26 Para más información sobre esta familia puede revisar el capítulo 3, subcapítulo 3.3.2.2. Sistemas operativos BSD 63 • desarrollado por Microsoft en base a Unix pero que no tuvo mayor éxito y ahora es considerada como obsoleta. Familia GNU y Familia Unix27. Se destacan de esta familia de sistemas operativos los siguientes: • Sistema Operativo Solaris • Unix System V • Sistema Operativo HP-UX 4.3.1.2. Sistemas operativos libres Los sistemas operativos libre tiene un rica historia en cuanto a su desarrollo y evolución y su crecimiento ha sido notable en los últimos años; si bien es cierto que su uso en equipos de escritorio aún es mínimo en un mundo informático dominado por Microsoft, en el caso de servidores ha sido diferente y es donde se ha notado la aceptación de este tipo de S.O. A diferencia de los sistemas operativos propietarios, los sistemas operativos libres hacen uso de licencias de código abierto, ya sean permisivas o robustas: • Licencias de código abierto permisivas: El software no tiene obligación de protección de ningún tipo (BSD License, PHP License). Entre otras cosas, este tipo de licencia permite el uso del código fuente en software no libre, además de redistribuirlo como no libre. • Licencias de código abierto robustas: En este clase de licencia se imponen algunas restricciones, dependiendo de la siguiente clasificación: • Robustas fuertes: productos derivados del sotware original o modificaciones de éste último deben mantener los terminos y condiciones de la licencia original (un producto derivado de un aplicativo con licencia de código abierto robusto no puede pasar a un tipo propietario, como EULA). Ejemplos de este 27 Para más información sobre esta familia puede revisar el capítulo 3, subcapítulo 3.3.2.1. Sistemas operativos GNU/Linux 64 tipo de licencias son la GNU General Public License (GNU GPL), OpenSSL, entre otras. • • Robustas débiles: En este caso, aunque las modificaciones hechas al software deben mantener las condiciones de la licencia original, los productos derivados pueden si pueden estar licenciados bajo condiciones diferentes. Ejemplos de este caso son Mozilla Public License, Apple Source License, etcétera. Sistemas operativos GNU\Linux GNU\Linux28 es uno de los sistemas operativos más conocidos dentro del rango del software libre, compuesto por una gran cantidad de distribuciones y el apoyo de un considerable número de usuarios y desarrolladores en todo el mundo. La historia de este sistema operativo inicia con la idea de Richard Stallman y la FSF29 de crear un sistema operativo libre tipo UNIX , un núcleo nombrado como HURD, el cual hasta la fecha aún se encuentra en desarrollo y no es considerado como un sistema lo suficientemente estable para su producción. Sin embargo para el año 1990 esta fundación, aún cuando no contaba con el núcleo del sistema operativo, ya tenia listas varias aplicaciones que podían trabajar en un S.O. similar a Unix, y de hecho muchas de ellas se basaban en el sistema original, tanto que sus nombres eran iguales, lo mismo que la forma en que funcionaban. Para el año 1991 un estudiante de la Universidad de Helsinki, Linus Torvalds, comenzó a desarrollar un kernel libre similar a Unix para máquinas 386 como herramientas de la FSF. Este desarrollo recibió el apoyo de personas en todo el mundo lo que permitió su crecimiento y evolución, además de convertirse en la opción perfecta para llenar el vacío que dejaba el núcleo HURD de la FSF, tomar su lugar y conformar un sistema operativo completo con el nombre constituido por las 28 Aunque comúnmente se refieran a ellos como Linux, el nombre real y completo es GNU/Linux, puesto que ambos, GNU y Linux son proyectos diferentes que se complementan en este sistema operativo. 29 Free Software Foundation 65 aplicaciones libres GNU30 y el núcleo desarrollado por Torvalds denominado Linux. A partir de ese punto se han generado múltiples versiones de GNU\Linux, con diferentes aplicaciones y características, dirigidas a diferentes áreas como la ciencia, el desarrollo de software, aplicación de servidores, música, video, etcétera. Algunas de las características más importantes de este sistema operativo31: • Uso del estándar POSIX32 . • Licencia libre. No se debe confundir con el concepto de gratuidad del software, puesto que este tipo de licencia no implica la ausencia de algún costo por su adquisición. • Uso de núcleo similar al implementado en sistemas UNIX. • Acceso al código fuente y posibilidades de realizar modificaciones siguiendo lo establecido por la General Public License o GPL, la cual cubre a los sistemas operativos GNU\Linux. • Multitarea, multiusuario y multiplataforma. • Protección de memoria entre procesos. • Carga de ejecutables por demanda. • Uso de memoria virtual mediante paginación a disco. • Librerías estáticas y de carga dinámica. • Uso de pseudo-terminales y consolas virtuales múltiples. • Soporte para diversos sistemas de archivos. 30 GNU es el acrónimo recursivo de GNU's Not Unix, o GNU no es Unix. 31 LAURENTE SAENZ, Simon. Aprenda Linux. Comandos Básicos – Características gnu/linux. Simon . http://www.wikilearning.com/tutorial/aprenda_linux_comandos_basicoscaracteristicas_gnu_linux/7809-3 32 Portable Operating System Interface . 66 • Arquitectura monolítica híbrida y uso de módulos para carga y descarga de dispositivos y extensiones del S.O. Algunas de las distribuciones más conocidas de esta familia de sistemas operativos son: • • Debian Gnu\Linux • Red Hat Linux, y sus variantes como CentOS y Fedora. • Suse • Mandriva Sistemas operativos BSD El sistema operativo BSD(Berkeley Software Distribution) es un S.O derivado de Unix cuyos orígenes se remontan a la época en la cual los dueños de Unix otorgaron a varias universidades licencias sobre su sistema, además del código fuente con el fin de que fuera adaptado a sus necesidades. Para cuando estas licencias fueran retiradas la Universidad de California en Berkeley ya había hecho muchos aportes al sistema operativo, razón por la cual impulso la creación de un nuevo S.O, el cual sería distribuido con fines académicos, aunque con el paso del tiempo las restricciones sobre su distribución, copia o modificación han cambiado significativamente. BSD se distribuye con la licencia que lleva el mismo nombre, la cual difiera en algunas cosas con la licencia GPL que rige las distribuciones GNU/Linux , especialmente en permitir el uso de código no libre en el software. Varias son las distribuciones que se han generado a partir de BSD, entre las más conocidas se encuentran OpenBSD, NetBSD y FreeBSD como versiones libres y SunOS y MacOS como versiones comerciales. 4.3.2. Middleware Como se 67 mencionó anteriormente, el middleware es la capa intermedia entre el sistema operativo y las aplicaciones y el usuario. Entre las funciones que posee están las siguientes: • Proveer una única interfaz de acceso al sistema, conocida como SSI o “ Single System Image”. • Optimizar el sistema. • Proveer herramientas de mantenimiento de procesos pesados. • Detección de nuevas máquinas y su respectiva inclusión en el clúster (escalabilidad) En un clúster el middleware se puede tratar de dos formas, a nivel del sistema operativo, o de la aplicación, en el primer caso se actúa con el kernel, lo cual hace todo el proceso transparente para las aplicaciones en el sistema, en el segundo caso se trata de librerías que deben ser implementadas en cada programa que se va a ejecutar en el clúster. Es importante tener en cuenta que el hecho que se usen librerías, es decir, que se trabaje a nivel de aplicación y no del sistema operativo, no significa que no se deban configurar los equipos, pues igual sigue siendo un clúster, el cual necesita de unos parámetros y configuraciones específicas. 4.3.2.1. MPI La librería MPI (Interface de Paso de Mensajes o Message Passing Interface por sus siglas en inglés) constituye un conjunto de funciones y macros que pueden ser implementados en lenguaje C y Fortran con el fin de desarrollar programas en sistemas con múltiples procesadores, como los clúster. Para lograrlo también define una sintaxis para el paso de mensajes necesario para la ejecución de procesos en un sistema distribuido. Existen varias implementaciones de MPI, sin embargo las más conocidas y usadas son: • LAM/MPI Se utiliza un demonio activo en cada nodo y proporciona herramientas de monitorización. Actualmente se encuentra en la versión 7.1.3, que puede ser descargada desde 68 el sitio oficial33. Este proyecto de código libre es una implementación del MPI estándar, y su investigación, desarrollo y mantenimiento se encuentra a cargo del Open Lab Systems en la Universidad de Indiana. LAM/MPI soporta todo el estándar de MPI1 y gran parte del MPI2, además constituye todo un entorno con diferentes componentes o módulos. • OpenMPI Implementación de código libre, descendiente directo de LAM/MPI que empieza a ocupar un lugar importante entre las librerías de este tipo. El desarrollo y mantenimiento de esta librería esta a cargo de un grupo de organizaciones de investigación, academia e de la industria, entre los cuales se destacan Los Alamos National Laboratory, Cisco Systems, IBM, Myricom, Sandia National Laboratories y Sun Microsystems. La última versión disponible desde el sitio oficial34 es la 1.3.3, la cual ofrece, entre otras características, el soporte completo para el estándar MPI2 y para arquitecturas de 32 bits y 64 bits. • MPICH Librería independiente de la arquitectura utilizada, portable y de distribución libre, distribuida como código para Unix y Microsoft Windows. La versión actual es la 1.2.7p1, la cual fue lanzada el 4 de noviembre de 2005 y puede ser descargada desde el sitio oficial35. El siguiente es un ejemplo de un programa en C con la librería MPI36: #include <stdio.h> #include “mpi.h” int main (argc, argv) int argc; char **argv; { int rank, size; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); 33 34 35 36 LAM/MPI ORG. LAM/MPI Parallel Computing. http://www.lam-mpi.org/ OPENMPI ORG. OpenMPI Open Source High Performance Computing. http://www.open-mpi.org/ MPICH-A portable implementation of MPI. http://www.mcs.anl.gov/research/projects/mpi/mpich1/ SANCHEZ TESTAL, JJ. Cluster Sencillo con MPI. En Linux-Magazine. Nro 38 69 MPI_Comm_rank(MPI_COMM_WORLD, &rank); printf(“Prueba de MPI: Proceso %d en rango %d \n”, rank, size); MPI_Finalize(); return 0; } Este programa hace uso de la librería y funciones estándar de MPI (mpi.h) inicializando el entorno a través de MPI_Init con los parámetros entregados por la función main, mientras que MPI_comm_size y MPI_Comm_rank permiten obtener el numero de procesos que se ejecutan y el identificador del proceso que se esta ejecutando, respectivamente. Para terminar se usa MPI_Finalize. 4.3.2.2. PVM Al igual que MPI, PVM o Máquina Virtual Paralela (Parallel Virtual Machine), es una biblioteca o librería, un paquete de software que permite a un conjunto heterogéneo de equipos (a nivel de hardware y software, incluyendo el sistema operativo) trabajar a través de una red y comportarse como una sola máquina. Actualmente se encuentra en la versión PVM 3.4.6 que puede ser descargada desde el sitio oficial37. Esta librería fue desarrollada en la Universidad de Tenesee, el Laboratorio Nacional Oak Ridge y la Universidad Emory. Un programa realizado en base a PVM (en lenguaje C o fortran) hace uso de una librería,llamada pvm3.h y de las siguientes funciones: • pvm_mytid() • pvm_exit() • pvm_spawn(), entre otras. El siguiente es un programa similar al mostrado con MPI realizado con la librería PVM, a modo de ejemplo, en lenguaje C: 37 PVM. Parallel Virtual Machine. http://www.csm.ornl.gov/pvm/ 70 #include “stdio.h” #include <pvm3.h> int mytid; //Identificador de tarea int tids[numero_procesos]; //Vector con id de procesos int task_index; //indice de tarea int main (argc, argv) int argc; char **argv; { int ret; mytid = pvm_mytid(); tids[0] = pvm_parent(); ... tids[0] = mytid; task_index = 0; ret = pvm_spawn(argv[0], argv, PvmTaskDefault, “”, numero_procesos -1, &tids[1]); printf(“Prueba de pvm: Proceso %d en rango %d \n”, tids[0],ret); pvm_exit(); return 0; } Mediante pvm_mytid() obtengo el identificador, mientras que con pvm_parent() se obtiene el listado de identificadores de procesos. Asumiendo que se trata del proceso padre, tids[0] será menor que cero, por lo cual tomara el valor de mytid, y task_index el valor de cero que corresponde al proceso padre. A continuación, mediante pvm_spawn(), se inicializan el resto de los procesos para terminar con pvm_exit(). 4.3.2.3. Beowulf El proyecto Beowulf es quizás el mas conocido dentro del tema de clústers o clústeres, y prácticamente se ha convertido en un estándar, al punto que cualquier sistema que se parezca a él se considera de tipo Beowulf. 71 Este proyecto, nacido en 1994, a cargo de Donald Becker y Thomas Sterling, se diseñó como una alternativa en costo y rendimiento frente a los supercomputadores de la época. El prototipo inicial estaba conformado por 16 computadores personales que hacían uso de procesadores Intel DX4 y conectados a través de una red Ethernet, con un rendimiento teórico de 3.2 GFlops38. Figura 17. Clúster Beowulf Fuente: http://www.cs.mtu.edu/~merk/Public/Websitedir/Common/cluster_s m.jpg El proyecto se basó en el uso de MPI y PVM, mas otros tipos de software de monitoreo y administración. Las características de este clúster incluyen la capacidad que algunos de los equipos no incluyan disco duro, permitiendo introducir nodos heterogéneos. Un clúster beowulf presenta las siguientes características: • Esta compuesto por computadoras personales o componentes comerciales, lo cual lo ubicaría entre los clúster de categoría I39. 38 El término Flop es una medida que hace referencia a la cantidad de operaciones de coma flotante por segundo (Floating points Operations Per Second), la cual sirve como medida del rendimiento de una computadora. Al igual que los Bytes o los Hertz, la unidad Flop se acompaña de los términos Mega, Giga, Tera, etcétera, con los significados ya conocidos para ellos. En el caso de GFlops se trata 109 operaciones de coma flotante por segundo. 39 Existe un tipo de clasificación adicional de clúster, que se encuentran relacionados frecuentemente 72 • La mayoría de los nodos son de la arquitectura x86 y red Ethernet (Sin embargo podrían usar cualquier otro tipo). • El sistema esta compuesto de nodos (computadoras personales) completos e independientes, cada uno con su procesador, memoria y almacenamiento secundario. • Cada nodo funciona de manera independiente bajo un sistema operativo que en la mayoría de los casos es alguna versión derivada de Unix (generalmente Gnu\Linux, esto debido a sus características de software libre, evolución, etcétera). • El mecanismo usado por las aplicaciones para la comunicación y cooperación entre nodos son las librerías PVM y MPI. • Los Beowulf unicamente directamente al clúster. • Es necesario contar con una red dedicada a la comunicación en el nodo clúster. • Existe una alta compatibilidad con equipos futuros debido a que el cambio en el hardware por el surgimiento de nuevas tecnologías o capacidades no cambian el modelo de programación que se este usando. • Un clúster beowulf se puede catalogar como intermedio entre los sistemas MPP40 y NOW41. • Un clúster beowulf es fácil de mantener y presenta un bajo costo inicial. 4.3.2.4. Oscar realizan tareas encargadas un punto Oscar es un proyecto realizado con el fin que con el clúster beowulf, la categoría I aplica a sistemas con componentes comerciales, fáciles de conseguir, de tal forma que el sistema no esta construido con un fin especifico o especializado, mientras que en la categoría II se usan partes mas especializadas, mas difíciles de encontrar en el mercado, y que además han sido pensadas para solucionar un problema de características determinadas o más complejas. 40 MPP (Massively Parallel Procesors o Procesadores Masivamente Paralelos) es un sistema de procesamiento con arquitectura no compartida, consistente de varios procesadores y comunicados por redes de alta velocidad específicamente diseñadas. 41 NOW (Network of Workstation o redes de computadores) también conocidos como mallas es un tipo de sistema en el cual se integran recursos distribuidos en diferentes redes, cada una con su propio administrador de recursos y políticas de asignación. 73 cualquier usuario, independiente de su nivel de conocimientos con cualquier derivado de Unix, pueda instalar un clúster Beowulf, además de un conjunto de herramientas para administrarlo y configurarlo. Oscar significa, en inglés, Open Source Cluster Applicaton Resources, y su última versión es la 6.0.3, publicada el 27 de mayo del 2009, la cual no se puede considerar como de producción debido a que aún presenta algunos problemas. La instalación de Oscar se hace sobre un sistema Gnu\Linux mediante el paquete del servidor Oscar que se puede obtener desde el sitio en sourceforge.net42. Después de instalado se puede proceder a la configuración mediante una sistema gráfico que permite seleccionar además los paquetes que se desean instalar. Finalmente se pueden generar las imágenes para los clientes (nodos), proceder a su instalación, configuración y puesta en marcha del clúster, en un proceso más sencillo que si se intentara la instalación de paquetes como MPI y PVM de forma manual. Oscar puede ser implementado sobre las siguientes distribuciones de Gnu\Linux : • Red Hat Enterprise Linux 5 \ Centos 5 en arquitecturas x86 y x86_64, con soporte completo y ningún problema reportado. • Debian 4, también soportado en arquitecturas x86 y x86_64, sin embargo no todos los paquetes de esta distribución son aceptados y soportados. • Debian 5 x86_64 se encuentra en etapa experimental y es necesario que sea probado. • Ubuntu 8.04 (x86 y x86_64), presenta las mismas condiciones que Debian. • • Fedora Core 9 x86 también en etapa experimental y pruebas. Open Suse 10 x86, en iguales condiciones que Fedora Core. Los requerimientos mínimos son: 42 OSCAR PROJECT. Open Source Cluster Application Resources. What is Oscar?. http://oscar.sourceforge.net/ 74 • CPU i586 o mayor. • NIC o tarjeta de red con soporte para TCP/IP stack (en caso que el nodo maestro también actúe como rowter o punto de acceso a Internet para el clúster, es necesaria una segunda tarjeta). • Para el nodo servidor mínimo 4 Gbytes libres en disco duro, 2 en la raíz y 2 en var. Para los nodos clientes mínimo 2 Gbytes, además cada nodo debe tener disco duro. • Como se mencionó anteriormente, una distribución Gnu\Linux instalada (preferiblemente alguna de las soportadas). • Los nodos cliente deben contar con unidad lectora de CD. 4.3.2.5. NPACI Rocks También conocido actualmente como Rocks Clusters es una distribución de Gnu\Linux basada inicialmente en Red Hat Linux, sin embargo luego paso a basarse en CentOS; incluye muchas herramientas necesarias para desarrollar un clúster, y se basa en una filosofía determinada por los siguientes puntos: • Facilidad en la administración y mantenimiento del clúster, además de ahorro evitando el alto costo de un administrador del sistema. • Configuración automática del clúster. • Instalación sobre conjunto heterogéneo y amplio de computadores. además que dicha instalación sea óptima, de una fácil re-instalación y bajo tiempo en la solución de problemas, especialmente de consistencia. Figura 18. Logo de Rocks Cluster Fuente : http://www.rocksclusters.org/wordpress/ 75 Rocks Cluster se encuentra actualmente en su versión 5.2 (Chimichanga), con soporte para x86, Opteron/EM64T e Itanium, con un sistema de instalación basado en tres CD's: Instalación del servidor (frontend) con la instalación base (obligatoria) y los Roll CD's (componentes opcionales), instalación de los nodos y la creación de los usuarios. Los requerimientos mínimos para llevar a cabo la instalación son: • • Para el Frontend (Servidor): • 2 puertos Ethernet. • Unidad de CD-Rom. • 18 Gbytes de espacio en disco. • 512 Mbytes de memoria RAM. Para los nodos: • 1 puerto Ethernet. • 18 Gbytes de espacio en disco. • 512 Mbytes de memoria RAM • Instalación completa del sistema operativo en todos los nodos. • Todo el hardware debe estar soportado por Red Hat Enterprise Linux. 4.3.2.6. MOSIX MOSIX constituye una solución a nivel del sistema operativo para la implementación de sistemas clúster, con lo cual se obtiene que el conjunto de máquinas actúen como un único sistema multiprocesador con la inmensa ventaja de poder seguir usando las aplicaciones sin necesidad de volverlas a programar, de tal forma que para los procesos es totalmente transparente la forma como se distribuyen y ejecutan en los nodos del clúster. Otra ventaja es que la asignación de los procesos de los nodos es dinámica y realizado por Mosix directamente, siempre buscando ubicarlo en el nodo adecuado buscando el máximo aprovechamiento de los recursos disponibles. 76 Adicionalmente el sistema MOSIX es descentralizado, razón por la cual cualquiera de los nodos puede tomar el papel de maestro en los proceso que esta ejecutando localmente y servidor de los procesos remotos, y además permite que se puedan agregar y remover nodos del conjunto en cualquier momento. El tipo de aplicaciones que pueden aprovechar las características de MOSIX son las siguientes : • Procesos que necesitan bastante científicas, ingenieriles, etcétera. CPU como aplicaciones • Procesos paralelos. • Clústeres heterogéneos, con nodos de diferentes velocidades y capacidades de memoria. • Entornos multiusuario y de tiempo compartido. • Servidores Web escalables. Para usar MOSIX se deben cumplir las siguientes condiciones: • Los nodos deben tener instalada una distribución GNU\Linux (MOSIX es compatible con los diferentes sabores de Gnu\Linux existentes, sin embargo la instalación automática esta soportada para Red Hat en sus versiones 5.1, 6.0, 6.2, 7.0 y 7.1, y para Suse 6.0 – 6.3 y 7.0). • Para una instalación manual se necesita del paquete make, gcc y binutils (las versiones mínimas dependen de MOSIX). • Se debe tener el código fuente del kernel y el parche MOSIX, con especial énfasis en que todos los nodos tengan la misma versión MOSIX. El problema que presenta MOSIX es que no es un proyecto que pueda ser usado comercialmente sin un costo por hacerlo, sin embargo existen versiones de prueba y de uso en investigación. La última versión de este software es la 2.27.0.1 para el kernel 2.6.30.3 en arquitecturas de 32 y 64 bits. 77 4.3.2.7. OpenMosix openMosix es la implementación libre de Mosix, presentando casi las mismas características que el software origen, sin embargo el proyecto llegó a su fin el 1 de marzo de 2008 tal como se informa en la pagina oficial43, sin embargo el código fuente para usar con el kernel 2.4 se encuentra disponible (openMosix-2.4.26-1) y en algunos sistemas clúster aún se emplea, sin embargo presenta el problema de la compatibilidad con algunos componentes de hardware que si son soportados por los núcleos nuevos. OpenMosix presentaba ventajas como el no necesitar paquetes extras ni modificaciones en el código. En contra tenía era dependiente del kernel, tenia limitaciones en cuanto a la migración de los procesos, por lo cual no siempre lo hacia, y problemas con la memoria compartida. Debido a que el proyecto se cerró se ha descartado como una opción para el presente proyecto, razón por la cual tampoco se extiende más sobre este tema en el documento. Sin embargo aún se encuentran bastantes manuales en Internet sobre el proyecto, la instalación y administración del mismo. 4.3.2.8. Condor Es un proyecto de la Universidad de Wisconsin y Madison, desarrollado por el Departamento de Ciencias de la Computación como software de código libre, que busca aprovechar al máximo la capacidad computacional de una red de computadores utilizando los recursos que están siendo desaprovechados en los ordenadores que conforman la red. Condor es considerado como un sistema especialmente adecuado para las tareas computacionales intensas, pudiendo ser usada en un clúster con nodos dedicados, usando un sistema de colas en los cuales se encuentran las tareas que el ira ejecutando conforme se pueden ir usando los recursos. Al final Condor informara el final de los procesos y retornará los resultados. 4.3.2.9. OpenSSI Este es un proyecto 43 SOURCEFORGE.NET. The open mosix project. http://openmosix.sourceforge.net/ 78 que busca igualmente convertir un conjunto heterogéneo de computadores en una sola máquina, virtualmente hablando, corriendo procesos en cualquier de los nodos y utilizando los recursos disponibles en todo el conjunto. Trabaja en distribuciones Gnu\Linux y su última versión es la 1.9.2, disponible bajo la licencia GPL. Como la mayoría de los sistemas SSI, en los cuales se busca que múltiples máquinas aparezcan como un solo ordenador, openSSI se implementa a nivel del kernel, presentándose como una solución SSI de código abierto, actuando de forma similar a openMosix y Mosix. Algunas de las características de OpenSSI son: • Monitoreo constante de la carga en los nodos del clúster. • Migración automática de los procesos entre nodos. • Capacidad de migración de aplicaciones multi-hebra, pero no de hebras individuales. • Se pueden ejecutar aplicaciones en OpenSSI sin realizar modificaciones sobre ellas. • Proporciona librerías que pueden ser usadas por los programas para controlar el clúster. Para realizar la instalación de OpenSSI se necesitan como mínimo dos computadores (cumpliendo con las condiciones de un clúster) y una red que permita la interconexión entre los nodos. Adicionalmente se necesita que solo una de las máquinas tenga disco duro, aunque en una instalación basada en un liveCD no se necesita almacenamiento secundario en ninguno de los nodos. Al iniciar el nodo principal desde el Disco Duro o el liveCD, el resto de las máquinas iniciarán por red desde un CD, disquete, etcétera. No se considera como un sistema simple de instalar, razón por la cual se necesita un conocimiento suficiente de la distribución sobre la cual se instalara OpenSSI; una opción más simple es el uso de liveCD, sin embargo es importante tener en cuenta la compatibilidad de hardware, especialmente de la tarjeta de red. 79 4.3.2.10. Kerrighed Este es un proyecto similar a openMosix, con tres diferencias específicas: • A diferencia de otros proyectos, Kerrighed permite migrar procesos multi-hilo. • No tiene herramientas de usuario gráficas, lo cual es una desventaja para el usuario, ya que hace más complicada la administración. • Este proyecto SSI se mantiene activo y trabaja sobre kernel 2.6, lo cual es una gran ventaja no solo sobre openMosix, sino también sobre otras soluciones que han sido congeladas y se quedaron sobre el kernel 2.4. Además es importante tener en cuenta que Kerrighed se considera prácticamente como el único proyecto SSI libre activo, dado que LinuxPMI, el llamado sucesor de openMosix, no tiene activo su sitio web y se desconoce su estado. 4.3.2.11. Selección del middleware A pesar de la existencia de diferentes paquetes de software para la implementación de un clúster, todos tienen características que los hacen mas o menos favorables para el desarrollo del presente proyecto. Para realizar la selección de alguno de ellos se debe considerar lo siguiente: • Vigencia: el aplicativo debe estar vigente, actualizado y soportado (de forma gratuita o paga), de tal forma que se pueda instalar en diferentes tipos de equipos y sistemas operativos44 • Costos: La licencia debe ser asequible para que pueda convertirse en una alternativa viable para las empresas. • Instalación: La forma de instalación debe ser lo más simple posible, evitando complejidades innecesarias. • Administración: Debe ser posible administrar el clúster, controlar su comportamiento, entre otras características. 44 En general los clústeres se implementan sobre sistemas operativos libres como Gnu\Linux o BSD, dado que el desarrollo para sistemas como Microsoft Windows es aún muy pobre y limitado. Por otro lado sistemas como MacOS no son muy usados y las licencias tienen altos costos, además que el hardware es muy específico. 80 • Tipo: Se necesita un sistema que sea tipo SSI para que pueda aceptar la instalación de aplicaciones corrientes en las cuales no se tenga que realizar modificaciones para su ejecución. Para lo anterior se considera el siguiente cuadro de ponderación según las características a analizar: Tabla 1. Cuadro de ponderación de calificación para el middleware Variable Rango45 Ponderación Vigencia 1–5 25,00% Costos 1–5 25,00% Instalación 1–5 15,00% Administración 1–5 15,00% Tipo 1–5 20,00% Fuente: Propia La ponderación anterior ha sido seleccionada por los desarrolladores del proyecto teniendo como criterio las características, exigencias o preferencias que puede tener una empresa frente a un sistema de esta naturaleza. Es así como se ha considerado que un producto actual y de costos accesibles será visto como una buena opción para una organización (se debe tener en cuenta que muchas decisiones en una empresa se basan en su presupuesto, especialmente en organizaciones pequeñas y medianas). Por otro lado, para empresas de sectores no relacionados con la investigación y la educación, sino con actividades cotidianas enfocadas en las ventas y prestación de servicios, contar con sistemas informáticos que no generen grandes traumas al momento de su aplicación en la organización es realmente importante, por ello se debe contar con un middleware que haga lo más transparente posible su implementación, la ejecución de programas y su uso. 45 1 aplica para la nota más baja o característica menos adecuada y 5 para la nota más alta. 81 Finalmente, los dos últimos items a evaluar y que tienen una menor calificación de ponderación, han sido la instalación y administración del sistemas, los cuales aunque son importantes también dependen de factores como el sistema operativo sobre el cual se apoyen y del conocimiento que sobre estos mismos tengan los encargados de la parte informática en la organización. Igualmente, dada la naturaleza de un clúster, la instalación y administración del mismo no es un proceso simple, sea cual sea el middleware seleccionado, por lo que aunque existen diferencias, tambien comparten niveles de complejidad. Para los sistemas que se tuvieron en cuenta en la etapa de análisis se tiene la siguiente calificación expresada en la tabla número 3, teniendo en cuenta que para obtener una nota total se ha usado la sumatoria del producto de cada característica por su respectivo valor de ponderación: Total=∑ Cararacterística∗Ponderación Tabla 2. Calificaciones para los sistemas evaluados Sistema Vigencia % Costos % Instalació n % Administració n % Tipo % Total MPI 5 1.25 5 1.25 2 0.3 2 0.3 1 0.2 3.3 PVM 5 1.25 5 1.25 2 0.3 2 0.3 1 0.2 3.3 Beowulf 5 1.25 5 1.25 2 0.3 3 0.45 1 0.2 3.45 Oscar 5 1.25 5 1.25 4 0.6 4 0.6 1 0.2 3.9 Rocks 4 1 5 1.25 5 0.75 4 0.6 1 0.2 3.8 Mosix 5 1.25 1 0.25 4 0.6 4 0.6 5 1 3.7 OpenMosix 1 0.25 5 1.25 4 0.6 4 0.6 5 1 3.7 Condor 4 1 5 1.25 5 0.75 4 0.6 1 0.2 3.8 OpenSSI 1 0.25 5 1.25 4 0.6 4 0.6 5 1 3.7 Kerrighed 5 1.25 5 1.25 2 0.3 2 0.3 5 1 4.1 Fuente: Propia De la tabla anterior se puede identificar a kerrighed como la mejor opción debido a lo siguiente: 82 • Es un sistema soportado y vigente, que trabaja sobre uno de los últimos kernel o núcleos disponibles para el sistema operativo Gnu\Linux. • Kerrighed es un paquete para clúster gratuito (el paquete en si no genera costos para la empresas por su utilización y además se instala sobre Gnu\Linux en versiones o distribuciones gratuitas). • Tiene en contra que la instalación y administración no es simple. • Cumple con el requisito de actuar como un sistema SSI (Single System Image). Son los tres puntos fuertes de kerrighed (Tipo de clúster, costo y vigencia) los que le otorgan su mayor puntaje sobre el resto, superando incluso los puntos negativos (Instalación y administración). 4.4. SSI SSI son las siglas para Single System Image o Imagen Única del Sistema, siendo un modelo de clúster que busca que varios computadores o nodos aparezcan como una sola máquina ante el usuario y las aplicaciones, de tal forma que resulte transparente su funcionamiento y el montaje de los nodos, además del acceso a los recursos disponibles, independiente del grado de heterogeneidad que pueda presentar el conjunto, tanto a nivel de hardware como de software. Algunos ejemplos de sistemas SSI son: • Amoeba • Bproc • DragonFly BSD • Genesis 83 • Kerrighed • Mosix/OpenMosix • Nomad • OpenSSI • Plurix • Sprite • TruCluster 4.4.1. Pilares Idear un sistema SSI obedece a un conjunto de pilares buscan la simplicidad en la administración de un grupo de máquinas y de las aplicaciones que se corren en ellas. Dichos pilares son: • Transparencia Tanto para el usuario como para la aplicación debe ser transparente lo que esta detrás del sistema que se presenta, es decir, no importa la cantidad de nodos, ni la ubicación de los recursos. Más aún, trasladar un proceso de un nodo a otro no debe generar ningún “trauma” a los procesos en general, los cuales no necesitan saber exactamente en que nodo se encuentra, simplemente tener el acceso a los recursos que se necesitan. • Escalabilidad Al tener un sistema que actúa de forma transparente, aumentar la cantidad de nodos tampoco supone un trauma para el conjunto; dicho equipo adicional debe ser fácil de agregar al grupo o clúster, y al existir un modo dinámico de balancear la carga, al PC nuevo se le asignarán los procesos de forma simple. • Soporte a aplicaciones de usuario -Un punto importante, que también influye de forma significativa en el desarrollo del presente proyecto, es el hecho de poder ejecutar aplicaciones de usuario de forma simple en el clúster. Lo anterior significa que cualquier software puede ser llevado al sistema SSI sin necesidad de ser re-programado como puede ocurrir en otros casos en los que se necesita usar librerías especificas (MPI por 84 ejemplo). • Des-centralización y Auto-gobierno Es un concepto importante, y es que aunque físicamente pueda existir un nodo que se considere como maestro, la verdad es que el sistema debe ser des-centralizado, es decir que ninguno es específicamente el maestro, cualquier puede tomar ese papel, razón por la cual uno otro pilar relacionado es el auto-gobierno, determinando esa capacidad para cada nodo de asumir un comportamiento tanto de recepción como de envío de procesos, según lo vaya necesitando el clúster. • Imagen Única Es el principal pilar de un sistema SSI, el conjunto de nodos se debe ver como una sola máquina para el usuario y las aplicaciones. 4.4.2. Ventajas Tener un sistema tipo SSI conlleva algunas ventajas bastante relacionadas con los pilares anteriormente mencionados, sin embargo se muestran y explican a continuación: • Facilidad de Administración Tener un único sistema permitirá una administración más simple del clúster en comparación con un sistema en el cual, por ejemplo, sea necesario administrar y tratar cada nodo de forma individual. Si el conjunto esta compuesto por pocos nodos, por ejemplo 10, administrar cada uno puede resultar relativamente simple, pero una cantidad mayor a 30 puede resultar tedioso, complejo y costoso. • Escalabilidad Hacer crecer el sistema es de suma importancia en un clúster, por ello la escalabilidad es importante. Un sistema SSI resulta mas simple al momento de agregar nodos debido a sus características de única imagen. • Ocultamiento de complejidad De igual forma que la ventaja anterior, un sistema que hace ver un conjunto como una sola máquina permite que para el usuario e incluso el administrador quede oculta la parte compleja del sistema. Ocultar este nivel de complejidad hace más fácil para el usuario usar el clúster y ejecutar las aplicaciones. • No re-programación Las aplicaciones que se ejecutan en un sistema SSI no necesitan ser re-programadas, de esta forma se 85 pueden usar casi cualquier aplicación de usuario normal. El hecho de no aceptar todas las aplicaciones es que dependiendo de la aplicaciones se podrán usar de mejor o peor forma las características y capacidades ofrecidas por un clúster de este tipo. Esto implica que pueden darse casos en que el software que se esta corriendo no pueda ser trasladado a otro nodo por ejemplo, haga un alto consumo de procesador en nodos específicos, consumos de memoria, etcétera. • Facilidad para implementación de balanceo de carga en cada nodo Un sistema SSI al ser descentralizado y autogobernable puede llevar a cabo el balanceo de carga, estando en capacidad de recibir y enviar procesos según lo vaya necesitando. En caso que el nodo que estaba haciendo el balanceo deje de funcionar cualquier otro podrá tomar su lugar y seguir con el balanceo. • Aplicaciones instaladas en un nodo y funcionando en otro Un sistema transparente y con un balanceo dinámico de carga permite que una aplicación que se encuentra en uno de los nodos del grupo de computadores en el clúster pueda ser trasladado y ejecutado en otra de las máquinas, según lo necesite, y además que este movimiento no sea traumático ni para el usuario ni para los procesos que se ejecutan. • Tolerancia a fallos Debido a sus características, un sistema SSI esta en capacidad de continuar trabajando toda vez que se presenten la caída de N-1 nodos (N es el total de nodos). 4.4.3. Desventajas SSI presenta las siguientes desventajas: • Dependencia del kernel Al ser una solución a nivel de software, SSI generalmente funciona como un parche a ser aplicado al kernel del sistema operativo, casi siempre alguna variante de Unix (Gnu\Linux o BSD), lo cual provoca que dependa de las características del núcleo para su funcionamiento. • Resulta incluso normal que algunas versiones de un parche sean compiladas para un núcleo especifico, por ejemplo, la última versión estable de openMosix se puede aplicar para kernel con versión 2.4.26, si embargo la última versión del 86 kernel es la 2.6.30 -5. • Madurez Los sistemas SSI aún no se consideran lo bastante maduros y se cree que no brindan lo suficiente que pueden dar por lo cual se necesita de proyecto que continúen realizando investigación y desarrollo alrededor de este tema, especialmente proyectos de código abierto o libres. • Congelamiento y cierre de proyectos Con la aparición de los procesadores con múltiples núcleos las tendencias actuales apuntan a otras soluciones como los LVS o Linux Virtual Servers, debido a que se va haciendo innecesario utilizar varias maquinas que funcionen como una sola cuando en un solo computador se puede tener el poder de computo de varias CPU. Lo anterior a provocado que muchos proyectos, especialmente aquellos de software libre como openMosix y openSSI, hayan sido cerrados y congelados desde hace ya unos años46. • La razón por la cual aún se hace uso de este tipo de sistemas, y la causa especifica para ser tenida en cuenta para este proyecto, es que se busca aplicar en equipos que han sido dados de baja, los cuales generalmente presentan unas características entre las cuales no destacan precisamente el uso de procesadores multi-núcleo en la mayoría de los casos, computadores que ya no son usados y que pueden ser agrupados para conformar una única máquina con mejores características y/o capacidad. 4.4.4. Características ofrecidas por SSI Dependiendo del sistema SSI, se pueden obtener algunas de las siguientes características: • Migración de procesos Un proceso puede iniciar en un nodo y durante el transcurso de su ejecución ser llevado hacia otro nodo según las necesidades que presente, ya sea por balanceo de carga o decisiones administrativas. • Puntos de control de procesos En algunos casos un sistema SSI puede ofrecer puntos de control de los procesos que 46 OpenMosix fué cerrado oficialmente el 1 de marzo de 2008 y su ultima versión fue la 2.4.26-1, mientras que openSSI fue congelada en su versión 1.9.2 del 2 de Agosto de 2006. 87 ejecuta, de tal forma que en caso de la caída de una aplicación esta pueda ser reiniciada y continuar su ejecución en el mismo punto o uno muy cercano al que ocurrió el fallo. También puede ser usado para detener el proceso e iniciarlo en otro punto, o para llevarlo a otro nodo y saber desde donde re-iniciar la ejecución de la tarea que se ha migrado. • Espacio único de proceso El sistema SSI puede ofrecer en algunos casos la sensación que todos los procesos corren en la misma máquina, de tal forma que, por ejemplo, algunos comandos tipo Unix se ejecutaran para todo el conjunto de máquinas como si de una sola se tratara. Esto es diferente a que las aplicaciones piensen que se están ejecutando sobre una única máquina. • Espacio único de memoria Aún cuando la memoria principal puede estar repartida entre los diferentes nodos, para el usuario y las aplicaciones esta aparece como una única memoria, centralizada y de tamaño considerable. • Raíz única SSI ofrece una visión única del sistema de ficheros, logrado a partir de un servidor NFS, replicación de archivos o compartir los dispositivos de almacenamiento secundario. • Espacio único de entrada/salida Al igual que el sistema de archivos, en un sistema SSI se puede ofrecer un servicio similar que permita a un nodo acceder a los recursos I/O de otro nodo. • Espacio único de IPC47 Esta característica permite que procesos en diferentes nodos puedan comunicarse por medio de IPC como si se encontraran en la misma máquina. • Dirección IP de clúster En algunos casos el sistema SSI puede ofrecer una única dirección para el clúster, de tal forma que pueda ser accedido desde fuera del grupo como si se tratara de otro ordenador conectado a la red. • Único punto de acceso El usuario se puede conectar desde cualquiera de los nodos que componen el clúster como si de se tratara de un host virtual y de la misma máquina se 47 IPC Inter-process comunications, es un termino por el cual se conoce a una serie de técnicas por medio de las cuales se da un intercambio de información entre uno o más procesos. 88 tratara. • Interface única de usuario Sin importar la cantidad de nodos que compongan el clúster, la interfaz o GUI es la misma sin importar desde que nodo acceda el usuario. 4.4.5. Niveles en SSI SSI puede ser aplicado a diferentes niveles, incluso se considera que un SSI optimo será resultado de la cooperación entre los diferentes niveles. 4.4.5.1. Nivel de Hardware En este caso se aprovechan las características de algunos componentes de hardware, como memoria principal distribuida, para ofrecer una visión de memoria local única que permite un mejor desempeño en un clúster. Es importante tener mecanismos de control o detección de fallos y bloqueos para el hardware sobre el cual se aplica este nivel, por ejemplo mediante control de flujo de información o de señales como las ofrecidas por Heartbeat (latidos). No obstante es importante tener en cuenta que el software debe estar en capacidad de hacer uso de este nivel de SSI en hardware de tal forma que se comunique la comunicación entre los dispositivos, la lectura de información, por ejemplo en la memoria principal, etcétera. 4.4.5.2. Nivel de Sistema Operativo Es quizás uno de los niveles más conocidos y usados , de tal forma que en el clúster se puede dar la ejecución no solo de de procesos paralelos sino también de aplicaciones secuenciales, buscando el mejor desempeño posible para ambos. Para que el sistema operativo pueda soportar este nivel de SSI debe estar en capacidad de realizar las siguientes operaciones sin necesidad de agregar nuevas llamadas al sistema o comandos: • Soportar la programación(scheduling) de grupos de programas paralelos. • Identificar los diferentes recursos disponibles en el sistema. • Ofrecer acceso global a los recursos. 89 • En lo posible ofrecer migración de procesos. Generalmente el último punto (migración de procesos) es ofrecido por un parche que se aplica al kernel y que le permite dar este tipo de soporte. Mosix, junto con SCO UnixWare Non Stop Clusters, Sun Solaris-MC y GLUnix ofrecen esta característica. 4.4.5.3. Nivel de middleware el middleware es un software de conectividad que se encuentra entre el sistema operativo y las aplicaciones y que permite agregar algunas características al sistema. Este es uno de los mecanismos mas comunes no solo para la aplicaciones de SSI sino de clústers en general, e incluye, entre otras, las siguientes posibilidades o recursos: • Sistemas de archivos para clúster. • Ambientes de programación (PVM, MPI). • Administración de tareas y programación (scheduling) como Condor. • Aplicaciones especificas para clúster (Cluster-enabled Java Virtual Machine). 4.4.5.4. Nivel de aplicación Aun cuando un sistema SSI esta destinado a trabajar con aplicaciones sin modificaciones, el poder aplicar SSI a este nivel mejorara aún más las prestaciones del clúster puesto que es lo que finalmente se mostrará al usuario. Este tipo de nivel suele venir aplicado en las herramientas administrativas, como aquellas usados para el monitoreo y administración de los servicios y recursos y que se presentan mediante una GUI o interfaz gráfica de usuario; PARMON es un ejemplo de este tipo de herramientas. También existen diferentes API's que ocultan la complejidad del sistema y se presentan como si se ejecutaran sobre una única máquina. 90 4.5. KERRIGHED Kerrighed es un proyecto nacido en el año el año 1999 en el Grupo de Investigación Instituto Nacional Francés para la Investigación en Ciencias de la Computación y Control, en París. Este proyecto, junto a LinuxPMI, se ha convertido en la respuesta a las necesidades que se crearon después del cierre de openMosix y el congelamiento del proyecto openSSI. Sin embargo, Kerrighed se ha mantenido más activo que LinuxPMI, lo cual lo convierte en la solución SSI mas conveniente para la implementación de clústeres en la actualidad. La documentación del proyecto Kerrighed aún es muy corta y poco precisa en algunos aspectos, sin embargo en este capítulo se intentará dar una idea clara del mismo. 4.5.1. Objetivos e historia del proyecto Los objetivos del proyecto Kerrighed son brindar facilidad de uso al usuario, algo desempeño para las aplicaciones, presentar un clúster de alta disponibilidad, que tenga un uso eficiente de los recursos y una alta personalización del sistema operativo. Con esos objetivos se inicio el proyecto a cargo de Christine Morin en el año de 1999 en INRIA48, Instituto Nacional Francés para la Investigación en Ciencias de la Computación y Control. Hasta el año 2006 el proyecto fue desarrollado por IRISA49, Unidad de investigación a la vanguardia de la información y la comunicación de la ciencia y tecnología, como un prototipo en el cual trabajaron personas provenientes de INRIA, EDF50(Electricité de France o Electricidad de Francia) y la Universidad de Rennes. Después de 2006, Kerrighed paso a ser un proyecto comunitario a cargo de Kerlabs51, INRIA, socios del consorcio XtreemeOS52 y un importante numero de colaboradores. 48 INSTITUTO NACIONAL DE INVESTIGACIÓN EN INFORMATICA Y CONTROL http://www.inria.fr/ 49 UNIDAD DE INVESTIGACIÓN A LA VANGUARDIA DE LA INFORMACIÓN Y LA COMUNICACIÓN DE LA CIENCIA Y TECNOLOGÍA. http://www.irisa.fr/home_html-en 50 ELECTRICIDAD DE FRANCIA. http://www.edf.fr/the-edf-offers/edf-fr-home-200420.html 51 KERLABS. http://www.kerlabs.com/-Home-.html 52 http://www.xtreemos.eu/ 91 A la fecha el proyecto kerrighed presenta como su versión más reciente y estable la 2.4.0, publicada el 9 de Julio del presente año, basada en linux 2.6.20 y descargable desde la página oficial 53 , bien sea como módulo para agregar al kernel o como un liveCD. 4.5.2. Características de kerrighed El proyecto Kerrighed es un sistema de tipo SSI (Single System Image) que ofrece la visión que un clúster es una única máquina para el usuario y las aplicaciones. Este sistema ha sido construido de tal forma que sea implementado como una extensión del sistema operativo Gnu\Linux (una extensión o parche del kernel y una colección de módulos). Un clúster con el sistema Kerrighed puede ser aprovechado para aplicaciones de tipo científicas o para aplicaciones tradicionales sin necesidad de ser modificadas. Las siguientes son otras características de este sistema54: • Posee la capacidad de realizar migración de procesos, balanceo de carga dinámica, además sin restricciones en la programación global (Scheduling), la cual puede ser modificada en caliente. • Tiene un sistema de migración de alto rendimiento de procesos que hagan uso de sockets, tuberías, etcétera. • Punto de control de procesos y raíz única (características compartidas con sistemas como MOSIX y openMosix) • Espacio único de proceso y de IPC (Constituye una de las diferencias con un sistema MOSIX y openMosix, que no contaban con estas características) • Kerrighed implementa un sistema de archivos distribuido en el cual se puede configurar la redundancia de datos e implementa un único árbol de directorios o ficheros. • La principal desventaja de Kerrighed frente a sistemas como Mosix es que no cuenta con herramientas de usuario gráficas, lo cual puede hacer más complicada su administración. 53 XTREEME OS. Welcome to Xtreem OS. http://www.kerrighed.org/wiki/index.php/Main_Page 54 Para una mayor explicación de las características remítase al presente capítulo, subcapítulo 3.4, SSI 92 • Un punto muy importante de Kerrighed en oposición a MOSIX, es que se distribuye bajo licencia GPL. • Trabaja con kernel versión 2.6, posicionándose básicamente como el único sistema SSI libre con esta capacidad. • Brinda soporte para maquinas SMP/Multi-cores, ordenadores x86 y x86-64 (32 y 64 bits). El proyecto Kerrighed componentes: esta compuesto por los siguientes • Un parche para el kernel. • Modulo kerrighed. • Herramientas de linea de comando para el usuario. • Script de inicio (/etc/init.d/kerrighed). • Archivos de configuración (kerrighed_nodes, kerrighed). • Librería libkerrighed. 4.5.3. Requisitos para la implementación Para instalar Kerrighed en un sistema Gnu\Linux (también se puede implementar mediante el liveCD que se provee en el sitio oficial) se debe tener en cuenta una serie de pre-requisitos en el sistema operativo: • Se debe saber o tener conocimientos sobre como compilar, configurar e instalar un kernel Linux desde el código fuente55. • Conocer acerca del proceso de arranque del sistema operativo y en especial de la distribución sobre la cual se realiza la implementación. • Se debe contar con los siguientes paquetes de software: • Automake, versión 1.10 o mayor. 55 Detalles sobre este proceso se explicarán en un capítulo posterior. 93 • Autoconf, versión 2.59 o mayor. • Libtool. • Rsync. • Bzip2. • Gcc (la versión 3.3.x es la recomendada para compilar el kernel). • lsb_release y xsltproc son opcionales y permiten instalar los scripts de arranque de kerrighed en /etc/init.d y crear las páginas de ayuda o manpages desde los dockbook, respectivamente. 4.5.4. Otra información sobre kerrighed Kerrighed se ha convertido en un proyecto bastante usado en los sistemas clúster en el mundo, y a partir de los registros obtenidos en el proyecto gracias a las personas que registran sus sistemas en la página web se puede obtener la siguiente información: En la actualidad se encuentran registrados oficialmente 36 clústeres implementados con Kerrighed, los cuales brindan los siguientes datos: • El mayor número de nodos en un clúster registrado es de 110. • El mayor número de núcleos es de 440. • La mayor cantidad de memoria principal (RAM) registrada es de 440 Gbytes. • El sistema de red más usado en los clústeres registrados es la Ethernet de 100 Mbps. • Las siguientes gráficas obtenidas de la página oficial del proyecto pueden ayudar a comprender el nivel alcanzado por Kerrighed: 94 Figura 19. Cantidad de nodos por clúster con Kerrighed. Fuente: http://kerrighed.org/php/clusterstats.php Figura 20. Cantidad de núcleos o cores por clúster con Kerrighed. Fuente: http://kerrighed.org/php/clusterstats.php Figura 21. Tipo de redes usados en clúster con Kerrighed. Fuente: http://kerrighed.org/php/clusterstats.php Entre los clúster registrados se encuentran los siguientes: 95 Tabla 3. Ejemplos de clúster implementados con Kerrighed. Nombre Dueño Nodos CPU Mordred 2 Kerlabs 110 Mordred Kerlabs 64 Tinman Departamento 4 de Electrónica de la U. de Nueva York. AMD XP Compaq Portable Cluster Home Sol Núcleos Totales Interconexión Aplicación 440 440 Ethernet Giga-bit 256 256 Ethernet Giga-bit 2840 Ethernet 100 Mbps AMD Athlon 8 64 X2 8 Ethernet Giga-bit Universidad de 8 Barcelona y Clínica Hospital BCN Intel Xeon 32 16 Ethernet Giga-bit. Phg, Bioinformática Aurora PowerDower AMD 64 Athlon 16 16 Inifiniband Melanox 40G VmWare, VirtualBox, vkcm, virtuozzo Jacob Escuela de 6 Patologia Sir William Dunn Intel Core Extreme 2 24 24 Ethernet Giga-bit. Diferentes aplicaciones Bioinformáticas VinBlanc Telecom Tech Intel Xeon 32 8 Ethernet 100 Mbps Simulación. 4 1 Paris 4 AMD Opteron RAM Total56 Athlon 4 Fuente: http://kerrighed.org/php/clusterslist.php 56 Medida en Gbytes. 96 Compilación. GCC, Java, Simmulación. Spice 5. CARACTERÍSTICAS DEL PROYECTO 5.1. CONSIDERACIONES GENERALES A partir de las necesidades de las empresas en cuanto a la problemática que representa la existencia de computadores y partes dados de baja, los cuales en algunos casos aún presentan un funcionamiento mínimo, y la ausencia de equipos que puedan brindar capacidades apropiadas para la ejecución de ciertos procesos, se ha encontrado la posibilidad de estudiar la viabilidad de aplicación de una tecnología usada y enfocada en el aprovechamiento de los recursos de múltiples ordenadores de tal forma que actúen como una sola máquina, tomando como elemento diferenciador el hecho de usar los equipos dados de baja como los nodos que alimentan el clúster. Para llevar adelante el proyecto, se ha revisado la teoría relacionada con los sistemas clúster, teniendo en cuenta las diferentes opciones existentes para su implementación, abarcando desde lo general hasta llegar a lo específico: el paquete de software de clúster apropiado para las necesidades del proyecto. A partir de este punto se busca generar un diseño apropiado que permitan además tener una idea de lo que se puede obtener, además de los costos que implica su montaje, administración y uso. 5.2. TIPO DE INVESTIGACIÓN Para la presente investigación, el objetivo se ha centrado en el diseño de un clúster con equipos dados de baja que pueda servir como alternativa de bajo costo para las empresas, encontrando un punto fundamental además en identificar si esto es viable tanto desde el punto de vista técnico como económico. Para lograrlo se ha desarrollado un tipo de investigación de campo, la cual es definida como: “Se trata de la investigación aplicada para comprender y resolver alguna situación, necesidad o problema en un contexto determinado. El investigador trabaja en el ambiente natural en que conviven las personas y las fuentes consultadas, de las que obtendrán los datos más relevantes a ser analizados son individuos, grupos y representaciones de las organizaciones científicas, no experimentales 97 dirigidas a descubrir relaciones e interacciones entre variables sociológicas, psicológicas y educativas en estructuras sociales reales y cotidianas.”57 5.3. DISEÑO DE LA INVESTIGACIÓN El presente proyecto se ha enfocado en diseñar una solución para una población específica de acuerdo a unas necesidades y a unos lineamientos establecidos en cuanto a recursos y objetivos. Además, el diseño se revisa de tal forma que se encuentre su viabilidad en los aspectos técnicos y económicos para las empresas. Dado lo anterior, la investigación realizada es de tipo documental, teniendo en cuenta que se ha realizado la revisión de las diferentes propuestas existentes para llegar una solución del problema planteado, además de generar una descripción del proceso que se debe llevar para la implementación de dicha solución. Los resultados que se obtienen no son considerados como puramente experimentales debido a que se toman como base cálculos aproximados derivados de la observación del comportamiento de algunos de los elementos del clúster propuesto. La razón de realizarlo de dicha manera y no sobre un clúster completo es que no se cuentan con los recursos técnicos y materiales suficientes para poder generar la información necesaria y completa con la rigurosidad del método experimental puro. Además la naturaleza del clúster (heterogéneo con computadores dados de baja) involucra una gran cantidad de variables que resultan más que complicadas y difíciles de medir en el alcance del presente proyecto. 5.4. POBLACIÓN Para realizar el presente proyecto se construido un escenario base a partír de la observación de 5 casos específicos (5 empresas), de las cuales se ha podido obtener información importante sobre parte de su infraestructura tecnológica (la que aplica para los fines de este 57 COLABORADORES DE WIKIPEDIA. Investigacion. Wikipedia. http://es.wikipedia.org/wiki/Investigaci %C3%B3n#Tipos_de_investigaci.C3.B3n 98 proyecto), el manejo que le dan a los computadores que no estan activos dentro de la organización, etcétera. Aunque dichas empresas no representan una muestra significativa que permita trabajar de forma estadística, si han entregado un escenario báse para el proyecto, el cual puede aportar a futuros trabajos y puede ser complementando mediante estudios posteriores. 5.5. SELECCIÓN DE LA SOLUCIÓN CLÚSTER A partir del análisis teórico de las diferentes opciones disponibles para realizar el diseño de un clúster se ha llegado a la selección de un paquete de software tomando como base los siguientes criterios: 1. Tipo de clúster: Dado que se busca trabajar con un sistema que actué como una sola máquina frente a aplicaciones cotidianas, es necesario que la solución actué como un sistema de tipo SSI (Imagen Única del Sistema o Imagen Simple del Sistema). 2. Tipo de Licenciamiento: En busca de ofrecer una solución razonable para las empresas se debe encontrar un paquete de software con licencias asequibles para las organizaciones (económica y técnicamente posibles). 3. Vigencia: Se necesita de una opción que continué vigente y actualizada, que haga uso de características recientes de los recursos de software y hardware que se pueden encontrar en este momento. 5.6. ANÁLISIS DE DATOS Los datos que se recopilan se obtienen del análisis teórico a partir del diseño propuesto como solución para las empresas y de la revisión de los siguientes aspectos: • Medidas tomadas (Servidor). a partir • Medidas tomadas a partir de la mínima unidad que compone un clúster (en este caso un nodo representado por un computador 99 de un sistema convencional de características acordes a las de una máquina dada de baja). • • • Medidas a partir de un ordenador convencional y actual. Datos teóricos funcional58. a partir de un clúster implementado y 5.7. VARIABLES Existen dos variables básicas a analizar en el presente proyecto: • Capacidad de procesamiento calculada del clúster. • Costo de la implementación del clúster. Tabla 4. Variables Variable Capacidad procesamiento Costo Dimensiones Indicador de Capacidad teórica y Medida en Mflops calculada de procesamiento (Millones de cálculos de del sistema a evaluar. coma flotante por segundo) Cálculo de los gastos Valor en pesos. generados por la implementación del sistema. Fuente: Propia Para tener una visión más adecuada sobre lo que puede ofrecer una solución clúster, las anteriores variables son comparadas con una solución convencional (servidor). 5.8. FACTIBILIDAD DEL PROYECTO El presente trabajo se considera factible toda vez que se esta generando una solución que aportaría a los aspectos económicos de 58 Este tipo de clúster se encuentran en centros de investigaciones y universidades en diferentes partes del mundo. Los datos que se muestran son los revelados por los propietarios de dichos sistemas. 100 la empresa, ambientales (manejo de residuos tecnológicos) y sociales de la región. Además la información recopilada se obtiene de los diferentes proyectos y estudios realizados previamente por Universidades, grupos y empresas de software, entre otros, además del análisis realizado a partir de los elementos disponibles en el desarrollo de este proyecto. Además, aunque algunos de los datos son calculados y estimados a partir de otros obtenidos por diferentes fuentes, la información tomada como base se considera apropiada y seria para los fines del proyecto, tanto de la investigación propia como la de otras personas y organizaciones relacionadas con el tema. 5.9. CONSIDERACIONES ÉTICAS Los autores del presente proyecto se han comprometido a no hacer de conocimiento público la información suministrada por las empresas y que es considerada como sensible para sus intereses particulares. Igualmente, y en el caso que sea requerido, se garantizó el acceso a los resultados obtenidos de la investigación a las entidades que aportaron su información para el desarrollo de este proyecto. En general se buscó respetar en su totalidad los derechos de autor al momento de presentar información obtenida a partir de otros autores y organizaciones, citándolos y/o referenciandolos cuando fue necesario. 101 6. DISEÑO DE CLÚSTER CON EQUIPOS NO USADOS 6.1. EQUIPOS Teniendo en cuenta el propósito del presente proyecto, el diseño de un clúster se dirige a un conjunto heterogéneo de equipos, la mayor parte de ellos con un tiempo de uso relativamente alto y que en la actualidad pueden haber sido descartados o reemplazados por computadores de mayores prestaciones. No obstante una empresa puede destinar algunos ordenadores “actuales” para que cumplan tareas como aquellas relacionadas con la administración del sistema, para agregar mayor poder al mismo, o en casos en los que dichas máquinas venían cumpliendo un papel como servidores de archivos u otro tipo y se desea integrar al clúster por diferentes motivos. El tener un grupo heterogéneo implica que los equipos tendrán diferentes características, desde el tipo de procesador que usan hasta la cantidad de disco duro o memoria de la cual disponen, y en algunos casos la versión del kernel e incluso del sistema operativo Gnu\Linux con el cual cuentan. 6.1.1. Elementos Básicos59 6.1.1.1 Tarjeta Madre En que todo ordenador, incluyendo los servidores que comparten prácticamente todos los componentes, una de las partes básicas es la tarjeta madre o main-board, dispositivo que conecta todos los otros elementos de la máquina, sirviendo además de puente de comunicación entre ellos. La main-board puede ser clasificada según la disposición de los componentes, ya sea integrada, en la cual las diferentes tarjetas, como la de sonido, video o red están integradas a la tarjeta, o la no integrada en la cual esos elementos se conectaban mediante slots . 59 Esta es una visión general de un ordenador, algunos de los componentes son fundamentales en un clúster, mientras otros no, lo cual depende de factores como el fin con el cual se construye el clúster, el tipo de clúster a implementar, etcétera. La información publicada en este capítulo proviene de diversas fuentes, desde las de fabricantes de componentes hasta diferentes enciclopedias. 102 Figura 22. MSI K8 Master3-133-FA4R Fuente: www.msicomputer.com 6.1.1.2. Memoria RAM La memoria RAM (Random Access Memory o Memoria de Acceso Aleatorio) o memoria principal es una parte fundamental en el ordenador, la cual contiene los datos sobre los cuales trabaja u opera el procesador, donde se guardan los resultados y se cargan las aplicaciones que se están ejecutando. Es además una memoria rápida, de acceso aleatorio pero volátil, es decir, en cuanto se desconecta de la fuente de energía se pierde la información contenida en ella. Figura 23. Memoria Kingston KVR533D2E4/1G Fuente: http://www.ec.kingston.com 103 • SDR SDRAM (Single Data Rate Synchronous Dynamic RAM) Es una memoria síncrona presentada en módulos DIMM de 168 contactos y con velocidad de acceso entre 10 y 25 ns. Usada en Pentium II y III, AMD K6, Ahtlon K7 y Durón. • DDR SDRAM (Double Data Rate SDRAM) Al igual que la SDR se trata de una memoria sincrona presentada en módulos DIMM de 184 contactos. Trabaja a doble velocidad de del bus del sistema. • DDR2 SDRAM Es una mejora a las memoria DDR, presentada en módulos DIMM de 240 contactos y con el doble de frecuencia del buffer de entrada/salida con respecto al núcleo. • RDRAM (Rambus DRAM) Es un tipo de memoria desarrollada bajo protocolo propietario, de alta gama pero poco uso debido a las regalías que deben ser pagadas por su uso. En algunos tipos de memoria se hace uso de módulos ECC () diseñados para la corrección de errores, razón por la cual son una alternativa muy usada en memoria RAM para servidores. 6.1.1.3. Procesador El procesador al cumplir el papel de cerebro del ordenador constituye un elemento muy importante en el conjunto, encargándose de ejecutar las instrucciones y procesar los datos que se usan. Desde hace ya un tiempo se vienen viviendo una serie de cambios en los procesadores, lo cual les ha permitido mejorar notablemente; dichos cambios no están reflejados en la velocidad o la cache del componente, sino en la cantidad de núcleos que posee. Es importante tener en cuenta que hablar de un procesador de múltiples núcleos no es igual a un sistema multiprocesador, dado que en el primero cada uno de los núcleos o cerebros se encuentra en el mismo chip, compartiendo recursos, mientras que en el segundo caso cada elemento es independiente físicamente y en el uso de sus recursos. 104 Figura 24. Procesador Thurion Fuente: http://64-bit-computers.com/wpcontent/amd_turion_64_x2_image.jpg 6.1.1.4. Disco Duro El disco duro o almacenamiento secundario (el primario es la memoria RAM como se explico anteriormente) constituye el lugar donde se almacenan los datos de forma permanente. El acceso a los datos en ellos no es tan rápido como en las memorias RAM, sin embargo la relación entre capacidad-precio es mucho mejor teniendo capacidades mayores incluso a 1 TeraByte. Figura 25. Disco Duro Fuente: http://dragonsystem-web.com/catalog/images/DISCO.jpg 105 • Clasificación según tipo de conexión • IDE (Integrated Device Electronics) y ATA (Advanced Technology Attachment) es la forma como se definen los puertos encargados de controlar los dispositivos de almacenamiento en un ordenador, como discos duros, unidades de CD-ROM, etcétera. En este sistema el controlador del dispositivo se encuentra integrado en el mismo. Aunque inicialmente se encontraba en los computadores como una tarjeta de expansión, con el transcurrir del tiempo se ha integrado a la main-board, formando dos conectores por medio de los cuales un número máximo de 4 dispositivos eran conectados en dos configuraciones: • Maestro Era la configuración de los discos por defecto, es decir, en una máquina con un solo disco duro, este era configurado como máster. Además el disco que ocupaba esta posición en el IDE 0 o conexión primaria es el que contiene el sistema operativo y la secuencia de arranque. • Esclavo Configuración usada cuando existían dos discos duros en el equipo (o 4 discos, repitiéndose la configuración en la conexión secundaria o IDE 1). Adicionalmente características: se pueden mencionar las siguientes • No admite conexión en caliente . • Presenta 40 pines, además de usar un cable plano de 40 lineas. • Disco Interno de Tipo Masivo. • Las versiones varían desde ATA 1 hasta ATA 7 (conocido como ATA Ultra/133) que soporta velocidades de transferencia de 133 Mb/s. 106 • • Solo puede ser usado uno de los dispositivos conectados a un puerto IDE a la vez..En algunos casos ni un disco del otro IDE puede ser usado. • Su costo es más bajo que los discos SCSI, aunque sus prestaciones son menores. SCSI (Small Computers System Interface) Esta interfaz se usa para la transferencia de datos entre los dispositivos del bus de la computadora. Sin embargo no es exclusivo de los discos duros, sino que también puede encontrarse unidades de CD, DVD y scanners. siendo muy popular además en estaciones de alto desempeño, servidores y dispositivo de gamma alta. Entre sus características se encuentra: • • Uso de CCS o Command Comon Set. Esto le permite tener a disposición una serie de comandos y/o acciones en las cuales no tiene que participar el procesador. • Conexión de dispositivos en paralelo (SCSI 1,2 y 3.1), y en serie (SCSI 3.2, 3.3, 3.4). • Alcanza velocidades de transferencia de hasta 320 MB/s. • Se presentan en bus de 8 bits (Cable de 50 pines) y de 16 bits (Cable de 68 pines). • Un cable de 8 bits admite hasta 7 dispositivos físicos (8 con el propio adaptador SCSI), mientras que uno de 16 bits permite conectar 16 dispositivos . SATA(Serial ATA) El SATA es un tipo de interfaz que ha reemplazado IDE o ATA, permitiendo la transferencia de datos entre un dispositivo y la placa madre, ofreciendo mayores velocidades de transferencia y otras capacidades que la hacen la más usada en los equipos actuales. A 107 continuación se señalan las características de este tipo de interfaz: • • Mayor Velocidad de Trasferencia, y mayor ancho de banda. • Capacidad de conexión de dispositivos en caliente. • Velocidades de 150 MB/s y 300 MB/s (Para el presenta año se espera un nuevo desarrollo SATA con velocidades cercanas a los 600 MB/s). • Conexión punto a punto (conexión directa entre el dispositivo y el controlador). • Controladores con 4 u 8 salidas. • Uso de cables para discos de 3.5 y 2.5 pulgadas. Se tiene un cable de alimentación de 15 pines y uno de señal de 7 pines, con presentaciones más compactas que los usados en IDE y SCSI. • Permite la escalabilidad RAID. SAS (Serial Attached SCSI) Esta interfaz puede ser considerada como la sucesora de SCSI, con una mejora en la velocidad de transferencia, capacidad de conexión y desconexión de dispositivos en caliente y mayor cantidad de dispositivos conectados. Presentan las siguiente características: • Manipulación en Caliente de los dispositivos. • Uso del conector de la interfaz SATA. Se pueden usar discos SATA en controladores SAS, pero no al contrario. • Ancho de banda de 3.0 GB/s • Admite 128 dispositivos, sin embargo con expansores de puerto podría admitir más de 16.000. 108 • • Soportan comandos etiquetados en cola. • Soporte para discos duros, impresoras, scanners, entre otros. • Usado en servidores de aplicaciones críticas. • Mejor recuperación de errores y generación de reportes en comparación con SATA. • Cables de hasta 8 metros de largo. • Capacidad máxima de almacenamiento de 450 GB. • Se realizan operaciones por hardware, generando menos carga para la CPU. Concepto de Redundancia En informática el concepto de redundancia a aquellos sistemas capaces de repetir información, datos e incluso hardware involucrados en procesos críticos, de tal forma que se tenga una alternativa viable antes un posible fallo de algún componente. Es así como se habla de discos redundantes, sistemas de disipación de calor, sistemas eléctricos,etcétera. En el caso de los discos duros se conoce como sistemas RAID , sistema en el cual un conjunto de discos se comportan como uno solo de forma lógica, sobre los cuales se distribuyen y replican los datos, con las siguientes ventajas: • Alta disponibilidad: debido a la dedicación de parte de los recursos de una unidad de disco a la redundancia de datos, • Mayor Tolerancia a Fallos: el fallo de uno de los discos no significara la caída del servidor completo, como sucedería si se usara un solo dispositivo. • Altas Prestaciones: Permite una mayor cantidad de operaciones debido a la posibilidad de peticiones simultaneas de recuperación/almacenamiento de los 109 datos. • Bajo Costo: Usa discos convencionales o estándar del mercado. • Al momento de sustituir un disco defectuoso el sistema es realizada la reconstrucción de los datos a partir de la información almacenada. Existen diferentes niveles de redundancia que permiten aprovechar determinadas características en cuanto a la disposición de los discos duros; esta son: • Nivel 0: Es el primer nivel del sistema RAID, el cual no incorpora redundancia de datos, pero si mejora el rendimiento al hacer uso de la distribución equitativa de los datos en segmentos transferidos a diferentes unidades de disco. Sin embargo la fiabilidad en este sistema no es buena, dado que al faltar la redundancia de datos, si uno de los discos falla se perderá un segmento de información importante. Figura 26. Raid Nivel 0 Fuente: http://www.broadberry.co.uk Por sus características es servidores NFS y de juegos. 110 ampliamente usado en • Nivel 1: Configuración de discos espejo, en el cual los datos son copiados de forma exacta en dos o más discos. Esta configuración mejora la fiabilidad de los datos, aunque los costos son mayores debido a la duplicación de los discos que permita tener uno de datos y otro de réplica. Figura 27. Raid Nivel 1 Fuente: http://www.broadberry.co.uk • Nivel 2: En el Raid 2 los datos son divididos a nivel de bits y no de bloques , usando código de Hamming para la corrección de errores. Sin embargo la cantidad de discos necesarios para su implementación ha hecho que sea muy poco usado, dado que para un grupo de 10 discos se necesita de 4 discos extra, para uno de 25 serian 5 extras, y así sucesivamente. Figura 28. Raid Nivel 2 Fuente: http://www.broadberry.co.uk 111 • Nivel 3: En este nivel la división de datos se hace a nivel de datos y la redundancia se asegura guardando la información de paridad en una única unidad dedicada. Para almacenar la información esta es dividida en fragmentos y enviada a los discos en paralelo, mejorando la velocidad de transferencia, y haciéndolos útiles para servidores que necesitan de transferencia de ficheros grandes, pero no para aquellos en los cuales existe una gran cantidad de operaciones de lectura y escritura, dado que esta acción obliga a la activación a todos los discos del conjunto. Figura 29. Raid Nivel 3. Fuente: http://www.broadberry.co.uk • Nivel 4: Usa división de datos en bloques distribuidos en un grupo de discos y un disco de paridad dedicado, necesitando un mínimo de 3 discos y se presenta como una mejor alternativa para los el nivel 2 para pequeños bloques de datos. Raid 4 tiene acceso paralelo al array de discos (no simultaneo), las operaciones de escritura es secuencial y la de lectura en paralelo. 112 Figura 30. Raid Nivel 4. Fuente: http://www.broadberry.co.uk • Nivel 5: En este nivel las unidades de disco actúan de forma independiente, con una mejora del tiempo de acceso debido a que cada unidad esta en capacidad de atender sus propias operaciones de lectura y escritura. Sin embargo, en este caso, no existe una unidad de paridad puesto que información se distribuye entre todos los discos, además de realizar la división de datos a nivel de bloques. Su bajo coste en redundancia ha provocado que su uso sea muy popular, además de mejorar el rendimiento en aplicaciones en las cuales se realizan búsquedas aleatorias de ficheros pequeños (transaccionales). También ofrece la posibilidad de soportar múltiples operaciones de escritura, lo cual representa un inconveniente para este sistema debido a que ante una gran cantidad de operaciones escritura el rendimiento se vera bastante afectado. En compensación las operaciones de lectura pueden seguir ejecutándose mientras se realizan las de escritura, lo cual hace a Raid 5 un sistema apropiado cuando el número de operaciones de lectura es mayor al de escritura. 113 Figura 31. Raid Nivel 5. Fuente: http://www.broadberry.co.uk • Nivel 6: Constituye una ampliación del nivel 5 con un nivel más de discos (bloque de paridad), dividiendo los datos a nivel de bloque y distribuyéndolos (los dos bloques) entre todos los discos. Figura 32. Raid Nivel 6 Fuente: Fuente: http://www.broadberry.co.uk Igual que en el nivel 5, las operaciones de escritura representan un inconveniente que no es posible ignorar debido a la gran cantidad de operaciones de sincronización entre las unidades y los cálculos de paridad. No es bueno usarlo con una cantidad pequeña de 114 discos. • Niveles 5E y 6E: Variantes de Raid5 y 6 que incluyen discos de reserva, ya sea en hot spare (conectados y preparados) o en standby spare (espera). Permiten una mejora en cuanto al tiempo de reconstrucción o en administración cuando se produce un fallo. • Nivel 7: Similar al nivel 4, excepto que la lectura y escritura se realizan de forma asíncrona y esta centralizada sobre un cache vía bus de alta velocidad. Sin embargo aunque su velocidad de transferencia es alta, la fiabilidad no lo es. • Nivel 10: Los niveles adicionales que se explican se consideran como anidados, en el cual un nivel sirve como elemento básico de otro. El primero de ellos es el Raid 10 (Raid 1 + 0), considerado como una división de espejos, en el cual primero se organizan los datos con sus espejos (Nivel 1) para luego realizar la división de la información tal como se hace en el nivel 0. Usado para bases de datos de altas prestaciones. • Nivel 01: Este nivel (Raid 0+1) considerado como un espejo de divisiones es usado para replicar y compartir datos entre varios discos. De esta forma los datos se dividen entre dos discos (Raid 0), a partir de los cuales se generan los espejos (Raid 1). Es una de las configuraciones más habituales en las empresas, sin embargo se buscan otras opciones. • Nivel 30: Combinación del nivel 3 y el 0, es decir, se usa un disco de paridad y los datos son distribuidos según el nivel 0. • Nivel 100: Consiste en la agrupación del nivel 10 más un nivel 0 adicional, de tal manera que se da una nueva división de los conjuntos existentes en el nivel 10. Usado en bases de datos de gran tamaño. • Nivel 50: Combinación de la la paridad distribuida del nivel 5 con la división a nivel de bloques del nivel 0. Usado en sistemas que necesitan una alta tolerancia a 115 fallos, capacidad y búsqueda aleatoria. rendimiento en operaciones de 6.1.1.5. Tarjeta de Red: Una tarjeta de red es el componente que comunica el servidor con los clientes, ofreciendo velocidades 10/100/1000 Mbps . Las NIC como también se conocen a estos dispositivos, se incluyen dentro del concepto de redundancia, mencionado anteriormente en los discos duros. Por ello es normal que los servidores cuenten con dos de estos elementos, ya sea para evitar problemas en caso de fallo o para usar varias como un solo dispositivo cuya capacidad sera la suma de los componentes. Figura 33. Tarjeta de Red. Fuente: http://www.teknologia.cl/tienda/images/subcategoriastarjetasdered.jpg 6.2. REDES Para los sistemas clúster reviste gran importancia el tema de las redes puesto que es el medio por el cual los nodos podrán comunicarse, intercambiar información, etcétera. También hay que tener en cuenta que si falla la red entonces el clúster deja de existir, pues no se cumple con una de las condiciones : “Los nodos no pueden estar aislados, deben estar comunicados de alguna forma.”60. Por otro lado, si no se pueden comunicar, tampoco pueden cooperar entre si, lo cual es uno de los objetivos de un sistema clúster. Una red puede ser definida, en términos informáticos, como un conjunto de equipos conectados por diferentes medios que comparten información y recursos. Los equipos son muy variados e incluyen computadores (personales, portátiles), servidores, impresoras, entre 60 Para mas información remitirse al capítulo número dos (2) 116 otros; los medios de conexión tambien varian, e incluyen los físicos como cables UTP hasta los inalámbricos. 6.2.1. Clasificación Las redes pueden ser clasificadas de diferentes formas según las características por medio de las cuales se desean agrupar, como el medio que usan, el alcance, etc. 6.2.1.1. Alcance Implica el área geográfica en el cual se encuentra implementada la red, la cual puede ser muy pequeña (PAN) o muy grande (WAN) • Red de Área Personal (PAN) • Red de Área Local (LAN) • Red de Área de Campus (CAN) • Red de Área Metropolitana (MAN) • Red de Área Amplia (WAN) 6.2.1.2. Método de conexión Existen diversos conexión enmarcados en dos clases específicas: • Guiados • No guiados métodos de 6.2.1.3. Relación funcional De acuerdo a la forma en que se comuniquen o se relacionen los nodos de la red, se pueden encontrar dos tipos: • Cliente-servidor • P2P 6.2.1.4. Topología La topología indica la forma física en la cual se ha construido la red estudiada, la cantidad de conexiones o la forma 117 de las mismas. • • Estáticas • Bus • Estrella • Anillo • Malla • Árbol • Sistólica • Totalmente conectada • Hipercubo Dinámicas • Mono-etapa • Múlti-etapa 6.2.1.5. Direccionalidad • Simplex • Half-Duplex • Full-Duplex 6.2.1.6. Acceso • Red Pública • Red Privada 118 6.2.1.7. Jerarquía • Red Centralizada • Red Distribuida 6.2.2. Diseño de la Red 61 Como se ha mencionado uno de los elementos más importantes en un clúster es la red, y claro, su diseño, de tal manera que entregue las mejores prestaciones al sistema en general. Además un buen diseño de la red permitirá que: • El coste de la instalación y ampliación del sistema no sea excesivamente costoso debido a malos diseños y modificaciones futuras. • Mejor control de colisiones y/o congestión de la red. • Mejor comunicación entre el sistema, que sea el adecuado para el nivel de acoplamiento que se presente en el clúster. Para lograr un buen diseño se deben tener en cuenta varios factores que permitan tomar las decisiones adecuadas,que además es por eso que se presentan a continuación algunas de los más importantes, señalados en la documentación de instalación del sistema openMosix; esto no significa que sean los únicos ni que sean inmodificables en cuanto a prioridad o importancia, sin embargo por el “parentesco” entre openMosix y MOSIX, se consideran aplicables para los fines de este proyecto: 1. Funcionalidad del Sistema La funcionalidad del sistema implica conocer la idea general de lo que el clúster hará, que servicios deberá correr y que factores externos lo pueden afectar. Por ejemplo es importante saber cuanto va a ser el uso que hará cada aplicación de la red, que tantas solicitudes se harán a los servicios, entre otros. 2. Factores técnicos de cada servicio Al conocer al sistema en general es necesario entrar en detalle para cada servicio y su funcionalidad con respecto a la red, saber cual es la prioridad que tiene el servicio tanto en el sistema como en la red, cuales son sus funciones, cuanto carga el sistema y la red y como es la 61 CATALAN, Miquel. El manual para el clustering con openMosix. 119 comunicación. Definir los factores anteriores, especialmente los que provienen de cada servicio, puede resultar un trabajo complicado, especialmente si no se tiene una experiencia amplia en la implementación tanto de un clúster o cualquier otro sistema distribuido como de los servicios que se desean usar, es por ello que se es importante realizar pruebas en entornos adecuados para la simulación, lo cual permitirá tener una idea más clara acerca del comportamiento que se puede esperar en un entorno de producción. 3.Recursos disponibles Al conocer las necesidades de los servicios y la carga que van a generar sobre el sistema, el siguiente paso es saber con que recursos se cuenta para responder a dichas necesidades, cómo se deben separar o agrupar los recursos, según los casos específicos, que recursos se destinan a determinado servicio, etcétera. Dado lo anterior es importante tener en cuenta: • Que recursos hay disponibles, como ordenadores o nodos, enrutadores, impresoras, etcétera. • Hasta cuanta carga puede llegar cada servicio con los recursos disponibles. • Equilibrar la carga según la prioridad, los servicios y los recursos disponibles. 6.3. SELECCIÓN CLÚSTER DE HARDWARE Y DISEÑO FÍSICO DEL La selección de hardware para el diseño de un clúster con equipos dados de baja esta ligada a la disponibilidad de las empresas de la región, según la información recopilada de las empresas y mostrada en capítulos anteriores. Otro aspecto importante es el hecho que el clúster se plantea con equipos heterogéneos, lo cual no permite dar un concepto general sobre el tipo de ordenadores a usar, a excepción de las características básicas para cada nodo: 120 Tabla 5. Características básicas de los nodos Elemento Capacidad mínima Cantidad Procesador 400 Mhz 1 o más Memoria RAM 64 MB 1 o más Monitor NA 162 Tarjeta de Red 10 Mbps 1 o más Disco Duro 20 Gbytes 1 o más63 Unidad de CD NA 164 Dispositivos de entrada NA (Ratón y Teclado) 165 Fuente: Propia Al contar con la únidad básica de un clúster (nodo) definida bajo unas características mínimas66 establecidas a partir de las necesidades técnicas o requerimientos mínimos necesarios para la instalación del sistema operativo, los aplicativos básicos y el software Kerrighed, el siguiente paso esta en definir la forma en que los nodos se conectaran entre si. Para el presente proyecto se propone un enfoque simple y básico mediante una topología tipo estrella, la cual es la más común y además utiliza la tecnología básica de red que se puede encontrar en los computadores (Ethernet por lo general). Algunas variantes aplicadas a una red tipo estrella permiten agregar ciertas características, como la redundancia en la conexión o la inclusión de un nodo maestro, con lo cual se obtienen resultados distintos en la forma en que se conectan y administran los nodos. Las 62 Para el nodo maestro para la instalación. 63 La cantidad de discos duros depende de factores como el método de instalación, el tipo de servicios a ofrecer, etcétera. Sin embargo, para el nodo maestro (aquel sobre el que se instala el sistema operativo y kerrighed) se necesita al menos un disco duro sobre el cual realizar la instalación de los paquetes básicos (a excepeción de un diseño mediane LiveCD). 64 Para la instalación del sistema operativo 65 Para la instalación del sistema operativo y aplicaciones, además de la configuración. 66 En una implementación real dichas características variaran dependiendo de los recursos disponibles, contituyendo un sistema clúster heterogeneo. 121 figuras 40 a 43 muestran diferentes configuraciones de red, desde la más simple (Estructura física sin redundancia de red ni nodo maestro, la cual es usada en el presente proyecto con el fin de probar el proceso de instalación del software kerrighed y validar su funcionamiento) hasta una en que se hace uso de redundancia y la selección de un nodo maestro. Figura 34. Estructura física sin redundancia de red ni nodo maestro Fuente: Propia Figura 35. Estructura física sin redundancia de red con nodo maestro Fuente: Propia 122 Figura 36. Estructura física con redundancia de red sin nodo maestro Fuente: Propia Figura 37. Estructura física con redundancia de red con nodo maestro Fuente: Propia 6.4. SISTEMA OPERATIVO 6.4.1. Instalación del Sistema Operativo Debian Gnu/Linux es un sistema operativo libre y gratuito, que puede ser descargado 123 desde la página www.debian.org, con soporte para múltiples plataformas y una gran cantidad de paquetes disponibles, además del soporte de miles de usuarios a nivel mundial. Aunque cualquier distribución Gnu\Linux puede ser usada para la implementación del clúster, las razones de selección de esta distribución en particular son las siguientes: Tabla 6. Motivos de selección Motivo Descripción Estabilidad Debian Gnu\Linux es una de las distribuciones más estables debido al nivel de pruebas que se hace a sus paquetes antes de la publicación final. Instalación El método de instalación permite tener un sistema operativo básico según las necesidades, eliminando elementos innecesarios como interfaces gráficas de usuario y otros. Soporte Existe una gran comunidad alrededor de este sistema operativo, una gran cantidad de documentación y un número importante de paquetes para instalar. Además Debian Gnu\Linux provee un gran soporte para hardware y software. Configuración Otra característica de esta distribución es su alta capacidad de configuración y personalización. Experiencia Para los integrantes del proyecto es familiar esta distribución, lo cual hace más sencillo el proceso de instalación y configuración. Fuente: Propia 124 No obstante, y como se menciono anteriormente, cualquier otra distribución puede ser usada y configurada según las necesidades específicas de la organización en la cual se implementa el clúster. Para este proceso de instalación se ha descargado la versión Debian Gnu/Linux 5.0 (conocida con el nombre Lenny) para procesadores AMD 64, sin embargo el proceso es básicamente el mismo para otros tipos de procesadores, igualmente se necesita una configuración previa en caso de usar sistemas RAID. 6.4.1.1. Consideraciones previas Antes de iniciar con la instalación se deben tener en cuenta algunas consideraciones que permitirán preparar el computador para recibir el sistema operativo y evitar algunos inconvenientes que se puedan presentar durante el proceso. • Preparación del disco duro: Para Debian Gnu/Linux se debe tener como mínimo una capacidad de 1 GigaByte en instalaciones sin escritorio (como la que se realiza comúnmente en servidores) o de 5 GigaByte si se hace uso de sistemas de escritorio, como el caso de equipos personales. Es además necesario tener un sistema de particiones67 en los cuales se distribuirá el sistema operativo, generalmente hecho de la siguiente forma: Tabla 7. Distribución de particiones recomendada Partición Sistema Archivos Espacio mínimo Espacio Recomendado Raíz (/) Ext 3 200 MBytes 2 GBytes 67 Particiones: Las particiones consisten en la división lógica de uno o más discos duros en porciones debidamente identificadas y preparadas con su correspondiente formato. Las razones por las cuales se realizan particiones en un disco duro son las siguientes: •Especificar donde se guardara la información. •Evitar daño total en caso de corrupción de unidad. •Mejorar desempeño de disco duro. •Limitar tamaño de carpetas de usuarios y servicios, evitando la saturación. 125 Partición Sistema Archivos Espacio mínimo Espacio Recomendado Intercambio Swap 512 MBytes Doble de la capacidad de la memoria RAM hasta 1 o 2 Gbytes Usr Ext 3 1.5 GBytes 5 Gbytes o más Var Ext 3 500 MBytes 2 Gbytes Tmp Ext 3 100 Mbytes Hasta 4 GBytes Home Ext 3 Espacio Sobrante Espacio Sobrante Boot Ext 3 16 MBytes 100 MBytes Var\Log68 Ext 3 Fuente: Propia • Sistema de Ficheros: Aunque en la tabla anterior se ha hecho elección del sistema ext3 por ser el más usado y más recomendado, existen muchos otros sistemas incluyendo Fat32 (vFat) o NTFS que pueden ser usados. Sin embargo para el área de intercambio o swap solo se permite un sistema de archivos especial para este tipo de partición, el cual en Debian es llamado como zona de intercambio, en otros como swap. • Detección de Discos: Es importante tener en cuenta que el reconocimiento de discos duros por cualquier distribución de Gnu/Linux es diferente a la de los sistemas Microsoft u otros. En Debian los discos se identifican por un conjunto de 3 letras y números, siendo las dos primeras letras el identificador del tipo de controladora o disco (hd para ide, sd para SATA y otros tipos), la tercera letra corresponde a la controladora (a para la primera controladora o conexión, b para la segunda, etcétera), y los números definen la partición. Así por ejemplo un disco duro IDE en la controladora 0 (Master en IDE 0) se conoce como hda, si es como esclavo en la controladora 0 se tendrá como hdb, y así sucesivamente, mientras que para un disco 68 Aún cuando existe una partición para Var, es recomendable crear una partición para var\log, que es el lugar donde se almacenan los archivos log de los programas en el sistema. 126 SATA será sda, sdb, etcétera. Si se habla de la quinta partición del disco máster se tendría hda5, para la segunda del disco esclavo hdb5. También se ha determinado que las particiones primarias estarán numeradas desde 1 hasta 4, mientras que las lógicas o extendidas irán desde 5 en adelante. • Soporte de Hardware: Aunque actualmente el soporte de Debian Gnu/Linux en cuanto a hardware es bastante amplio, es importante revisar las compatibilidades de hardware (se puede revisar en www.debian.org), además del correcto funcionamiento de las tarjetas, revisar el estado del disco duro, y si es el caso, revisar problemas que se puedan presentar si existen otros S.O. instalados en la misma máquina. • Respaldo de Información: Si es el caso, y existe información importante en el ordenador sobre el cual se realizará la instalación, es debido crear una copia de respaldo de los datos. 6.4.1.2. Instalación69 A continuación se dan los pasos en la instalación del sistema operativo Debian Gnu/Linux en un ordenador que operará como nodo del clúster. El tipo de instalación que se muestra es básico, solo se instala el sistema base para que de ahi en adelante se agregue lo que el sistema necesita, de esta forma se consigue un Sistema Operativo más liviano y rápido sin estar cargado de servicios y aplicaciones innecesarias, algo importante si se tiene en cuenta que se instalar sobre equipos de prestaciones bajas. Primer paso: Descargar la imagen .ISO correspondiente a la versión de Debian Gnu/Linux que se desea instalar. Para el caso de la última versión estable (5.0) se puede usar el link http://gensho.acc.umu.se/ debian-cd/5.0.0/i386/iso-cd/debian-500-amd64-netinst.iso70, donde amd64 puede ser reemplazado por la arquitectura71 sobre la cual se desee instalar. Se debe tener en cuenta que la grabación del archivo descargado debe ser hecho como copia de imagen a CD y no intentar descomprimirlo y grabarlo como CD de datos, con lo cual su funcionamiento no será correcto y no se podrá llevar a cabo la instalación. También es importante señalar que la imagen que se 69 En base al método de instalación para Debian Gnu\Linux presentado en Instalación de Debian en uLibertad. http://ulibertad.wordpress.com/instalacion-de-debian/ 70 La versión varia según las preferencias y el hardware existente, incluso el tipo de instalación podria ser diferente y más simple según el nivel de experiencia con sistemas operativos Gnu\Linux. 71 Arquitecturas soportadas: alpha, amd64, arm, arme, hppa, i386, ia64, mips, mipsel, powerpc, sparc. 127 descarga mediante el enlace anterior es para una versión mínima para instalación por red, de aproximadamente 180 MB, sin embargo el sistema completo (con todos los paquetes) esta contenido en aproximadamente 14 CD's, y la elección de cuales descargar depende de las necesidades o tipo de conexión que se tienen para llevar a cabo esta tarea. Segundo paso: Configurar el arranque del ordenador por CD, esto se hace modificando el setup de la máquina y seleccionando como primera opción de arranque la unidad de CD; para acceder a esta opción existen varias formas según la máquina en la cual se haga, siendo las más comunes pulsar la tecla Supr, F10 o F11 en cuanto se enciende la computadora. Tercer paso: Después de la configuración del arranque del sistema, haber insertado el medio en la unidad de CD y reiniciar la máquina se tendrá una pantalla de bienvenida en la cual se podrá ingresar alguna de las siguientes opciones: • F1: Para mostrar opciones de arranque y menú de ayuda. • <Enter>: Se teclea Enter para iniciar la instalación en modo textual. • Installgui: Se digita dicho comando y se oprime Enter para iniciar la instalación en modo gráfico. De los anteriores se recomienda la opción de instalación en modo gráfico, especialmente para las personas que no tienen experiencia en sistemas Gnu/Linux. 128 Figura 38. Pantalla de bienvenida instalación de Debian Gnu/Linux. Fuente: Propia Cuarto paso: El cuarto paso corresponde a la instalación del sistema base, el cual viene dado por los siguientes procesos: • Seleccionar el Idioma: Se puede seleccionar el idioma entre la lista de los soportados por Gnu/Linux. En este caso se elige Español. 129 Figura 39. Selección de Idioma. Fuente: Propia • Seleccionar País o Región: Se selecciona el país en el cual se esta realizando la acción, esto es importante para formatos de números, moneda, fechas, etcétera. Figura 40. Selección de País. Fuente: Propia. 130 • Selección de localización: configuración de idioma. Corresponde a parámetros de Figura 41. Selección de localización. Fuente: Propia • Soporte a otros idiomas: En caso de ser necesario es posible ofrecer soporte para otros idiomas. En este caso no se ha seleccionado ninguno adicional. Figura 42. Soporte para otros idiomas. Fuente : Propia 131 • Elegir distribución de teclado: Se procede a seleccionar la mejor distribución para el teclado del ordenador; para este región se usa el “latinoamericano”. Figura 43. Selección de teclado Fuente: Propia • Detección y montaje del CD: Se realizan acciones automáticas encargadas de detectar el CD y montarlo adecuadamente para continuar con el proceso de instalación. El sistema mostrará una barra de progreso relacionada con la acción que se esta llevando a cabo. • Carga de componentes del instalador: Otro proceso automático en el cual como su nombre lo indica procede a realizar la carga de los componentes necesarios para el proceso de instalación. • Detección de hardware de red: En este proceso automático el instalador detectará todas las tarjetas de red que se encuentran en el ordenador (excepto las inalámbricas en la mayoría de los casos). 132 • Seleccionar Interfaz de Red: De la lista que despliega Debian Gnu/Linux de las tarjetas que el detecta como interfaces de red (incluso puede detectar otras que no los son como FireWire y listarlas) se selecciona la que se va a configurar para la instalación. Si existen varias tarjetas, las demás serán configuradas después. Figura 44. Seleccionar interfaz de red Fuente: Propia • Configuración de la red: Dependiendo si la dirección ip se asigna al ordenador mediante DHCP o no, este proceso se ejecutará automáticamente o manualmente. Aunque generalmente se recomienda que la asignación de IP sea manual (IP estática) para que la dirección del ordenador no cambie con el reinicio de la máquina o el enrutador, también es posible configurar el router para que siempre asigne la misma dirección IP al computador basándose en su MAC, y así seguir haciendo uso del sistema de IPs dinámicas. En el caso de implementar direcciones fijas, entonces el instalador solicitará la IP, la mascara de red y otro tipo de información que se 133 necesite para llevar a cabo el proceso. Figura 45. Selección de método de configuración de red Fuente: Propia • Colocar nombre a la máquina: Cada ordenador puede ser identificado por un nombre, que puede ser ingresado en esta opción. 134 Figura 46. Dar nombre a la máquina. Fuente: Propia • Colocar nombre de dominio: Si se dominio, entonces podrá ser ingresado sistema lo guardara y lo utilizará configuración. En caso contrario se deja se continua con la instalación. Figura 47. Determinar nombre de dominio Fuente: Propia 135 tiene un nombre de en esta opción y el como parte de su el campo en blanco y • Detección de discos: En este paso automático Debian Gnu/Linux intentará detectar todos los discos que existan en la máquina. • Particiones del disco: Este proceso es uno de los más importantes, y más delicado si se tiene información en el disco que no puede ser borrada, o se comparte el ordenador con otro sistema operativo. Existen diferentes opciones, desde realizar las particiones de forma automática (Debian configura el disco según ha sido programado el instalador) o manual. En este caso se usa el sistema manual usando el siguiente esquema como ejemplo: Tabla 8. Tabla de particiones de ejemplo para un sistema de Gnu\Linux Partición Punto de Montaje Tipo Sistema de Archivos Tamaño sda1 boot Primaria ext3 100 MBytes sda2 usr Primaria ext3 5 GB sda3 / Primaria ext3 2.5 GB sda4 swap Lógica Zona de 512 MBytes Intercambio sda5 var Lógica ext3 2.5 GB sda6 var/log Lógica ext3 2.5 GB sda7 tmp Lógica ext3 4.5 GB Sda8 home Lógica ext3 Restante Fuente: Propia 136 Figura 48.Selección del método de particionado. Fuente: Propia Figura 49. Particionado de discos (Ejemplo para un Disco Duro de 160 GBytes). Fuente: Propia • Al terminar el proceso se seleccionara la opción de “finalizar el 137 particionado y escribir los cambios en discos”, que nos llevará a una ventana donde se resume los cambios realizados y se confirmaran, para después continuar de forma automática con el formateo de las particiones. Después de avanzar en este punto los cambios se han realizado en el disco y no se podrá retroceder. Figura 50. Particionado de discos (Resumen y confirmación) Fuente: Propia • Asignar clave de superusuario: la cuenta de superusuario (o root como también se le conoce) es la más importante del sistema, puesto que tiene acceso a todo y puede realizar cualquier acción, que incluso pueden llevar a problemas serios si no se tiene cuidado con lo que se modifica. Nunca debe ser usada para realizar tareas cotidianas, solo para acciones administrativas. Debe tenerse en cuenta que en Debian Gnu/Linux nunca se admitirá el ingreso al sistema de forma gráfica como superusuario. 138 Figura 51. Asignar clave al superusuario Fuente: Propia • Creación de nuevo usuario: En este punto se creará un nuevo usuario, con permisos normales, por medio del cual se ingresará al sistema. Figura 52. Nombre para el nuevo usuario Fuente: Propia 139 Figura 53. Configuración de usuario y clave Fuente: Propia • Instalación del sistema base: En esta opción se podrán configurar varias características, como el uso de una replica en red si se tiene una buena configuración a Internet (esto es obligatorio si se ha descargado una imagen mínima del sistema), seleccionar el país y servidor de replica y la configuración del proxy en caso de usar uno. Esta opción es importante puesto que permite instalar Debian Gnu/Linux con el software más actualizado posible. No obstante en pasos posteriores se tendrá que realizar una actualización completa del sistema. 140 Figura 54. Selección de opción de replica. Fuente: Propia Figura 55. Selección de país de replica Fuente: Propia 141 Figura 56. Selección del servidor replica de Debian Gnu/Linux Fuente: Propia Figura 57. Configuración de proxy Fuente: Propia 142 Configurada la replica y el proxy el instalador de Debian Gnu/ Linux permitirá la selección de programas a instalar en el computador ofreciendo varias opciones, entre ellas el sistema base, entorno de escritorio, servidor web, servidor de impresoras, servidor de DNS, servidor de ficheros, base de datos SQL, ordenador portátil y sistema estándar. Solo se selecciona el sistema estándar, el resto de paquetes que se necesiten se instalarán y configurarán manualmente; esto tiene la ventaja de instalar en el ordenador solo lo necesario y no una cantidad a veces numerosa de software que no se usa. Después de seleccionar los paquetes el instalador de Debian Gnu/Linux se encarga de descargar, instalar y configurar el software solicitado de forma automática, incluyendo dependencias. Figura 58. Selección de paquetes Fuente: Propia • Instalación del cargador de arranque: El gestor de arranque es el programa que permitirá que el computador inicie en Debian Gnu/Linux u otro sistema operativo si existe en el ordenador. En Gnu/Linux se habla de dos gestores, el lilo y el grub, siendo este último el más usado, y el que se instala en este punto. 143 Figura 59. Instalación de grub Fuente: Propia • Fin de instalación: En este punto el sistema estándar esta instalado y listo para ser usado, por lo tanto el instalador abrirá la bandeja de CD para extraer el medio de instalación y reiniciará el sistema. Figura 60. Finalización de la instalación Fuente: Propia 144 6.4.1.3. Configuración del sistema Después de instalar el sistema base es necesario realizar la configuración y actualización del mismo. Para ello se procede de la siguiente forma: • Modificar sources.list: el archivo sources.list es el que contiene los servidores desde los cuales se obtienen los paquetes actualizados del sistema, desde allí se obtienen todos los paquetes que se encuentran para Debian Gnu/Linux y que se han incluido en los repositorios. Allí se modificarán las lineas necesarias de tal forma que se tenga acceso a diferentes tipos de paquetes (main, contrib y non-free), según se necesiten. También se puede modificar el nombre de la versión, o colocarlo en “stable” para que siempre tome paquetes de la versión estable de Debian, aún cuando esta cambie. Figura 61. Modificar el sources.list Fuente: Propia • Actualizar el sistema: Mediante los siguientes comandos se actualiza el sistema operativo. • Apt-get update. 145 • • • • Apt-get upgrade. Apt-get dist-upgrade. Module-assistant: el programa module-assistant es un software que ayuda en la instalación de software para el sistema operativo. Por ello es necesario instalarlo y preparar el sistema para llevar algunas operaciones relacionadas. • Apt-get install module-assistant • m-a update • m-a prepare Configuración de la red: En el caso que no se use DHCP para asignar las direcciones IP, se debe hacer una configuración manual de la red para que funcione correctamente. Para ello se tiene lo siguiente: • ipconfig: El comando ipconfig muestra la configuración actual de la red. • Ifdown eth0: desactiva la red o interfaz identificada con eth0. • Modificación: Mediante el fichero /etc/network/interfaces se pueden realizar las modificaciones necesarias en la red, como asignar la ip fija, mascara de red, entre otras cosas. • Ifup eth0: activa la red o tarjeta identificada con eth0. 6.4.1.4. Instalación de SSH El ssh es un software que permite la administración del sistema de forma remota, a través de una red local o el servicio de Internet. Es una excelente alternativa a Telnet, además de una importante herramienta para la administración de los nodos, y su instalación es simple. A continuación se describe el proceso. • Instalación: mediante el comando “apt-get install ssh” se instala el software, el cual es configurado automáticamente por el gestor de paquetes de Debian Gnu/Linux. 146 • Configuración: Debido a que SSH usa un puerto por defecto, es una buena medida de seguridad cambiarlo por otro (y bloquear el que usa normalmente el programa), además de otros cambios: • Editar el archivo como superusuario: /etc/ssh/sshd_config. • Modificar las lineas: • Port : cambiar el puerto por defecto por otro diferente, como 1023. • Permit root login: colocar esta opción en no para no permitir un ingresar de forma remota y directamente como superusuario. • X11Forwarding: Esta opción impide iniciar una sesión gráfica en el sistema (importar la sesión). • AllowUsers: En esta opción se definirán los usuarios que podrán hacer uso de ssh para ingresar al sistema de forma remota. Existen otras opciones que pueden ser modificadas para mejorar la seguridad; después de modificar el archivo y guardar los cambios se procede a reiniciar el sistema para que tome la nueva configuración. 147 Figura 62. Configuración de SSH Fuente: Propia 6.4.1.5. Compilación del kernel (núcleo) de Gnu\Linux72 Debido a que se proyecta la instalación del sistema operativo en equipos con características diferentes a un ordenador actual, es importante tener en cuenta la necesidad de realizar la compilación del núcleo, de tal forma que se adecue a las características del hardware sobre el cual se ejecutará, haciendo que la distribución que se utilizará, Debian Gnu\Linux, resulte mas liviana para el computador, además que pueda ser optimizado para Kerrighed. El núcleo o kernel de un sistema operativo es el corazón del mismo, es el componente que provee los servicios básicos al sistema ya sean nivel físico (Hardware) o lógico(Software), gestionando los recursos en el computador de tal forma que el acceso a los mismos sea ordenado y seguro, además de ofrecer una visión abstracta del 72 Debido a la gran cantidad de comandos que existen en Gnu\Linux que pueden ser usados para llevar a cabo este proceso, y con el fin de no extender el documento explicando cada uno, se recomienda que en caso de no conocer el comando que se esta aplicando se remita a las paginas man que se encuentran en las distribuciones Gnu\Linux, utilizándolo de la siguiente manera: man <nombre_comando>, por ejemplo, man cd, man tar. En caso de no contar con esta alternativa puede remitirse a www.google.com.co/linux. 148 hardware para que reducir la complejidad y facilitar el uso para los diferentes actores que necesitan de algún tipo de interacción con el, por ejemplo los programadores. Entre las funciones que tiene el kernel se encuentran: • Garantizar la carga y ejecución de los procesos. • Asignar tiempo de procesador a las aplicaciones o procesos que lo requieren. • Proponer una interfaz entre el núcleo y las aplicaciones del usuario. • Administrar el espacio en el sistema de archivos, la comunicación entre usuarios y entre procesos, de periféricos y de dispositivos de Entrada/Salida. La compilación del kernel no es un procedimiento que resulte simple y se debe prestar atención en la configuración del núcleo de tal forma que sea la adecuada para el ordenador sobre el cual se ejecutará. Sin embargo tomar las decisiones adecuadas permitirá tener un núcleo personalizado que brindará mejores características para el hardware existente en el computador, con un tamaño menor y una velocidad mejorada. Existen diferentes maneras de realizar la compilación, dependiendo de factores como la distribución sobre la cual se realizará dicho proceso, hasta los gustos de los usuarios para realizar esta tarea. A continuación se presenta uno de los métodos, seleccionado por su simplicidad y aplicación a casi todos los sabores Gnu\Linux73: • Obtener los fuentes del kernel Los fuentes o código fuente son los elementos indispensables para realizar la compilación y puder obtenidos desde el sitio web www.kernel.org, donde se podrán encontrar diversas versiones del núcleo, identificadas mediante un conjunto de números separados por puntos y guiones de la forma x.x.xx-x-xxx (Ejemplo: 2.6.20-21-386). 73 El procedimiento ha sido tomado de El howto del kernel 2.6 http://www.estrellateyarde.es/so/kernel-linux. Howto es el modo como se conocen a manuales y explicaciones para llevar a cabo algunas tareas o procesos. 149 Dicho número permite conocer la versión, y tomando el ejemplo se puede reconocer lo siguiente: • 2: Versión, un cambio en este número implica grandes cambios en el núcleo. • 6: Actualización, si es par es una versión estable, de lo contrario es una versión de desarrollo. • 20: Revisión. • 21: Revisión para el sistema operativo Debian Gnu\Linux. • 386: Arquitectura. Generalmente al descargar el fuente la versión solo muestra hasta la revisión para el sistema operativo y se descartá la arquitectura, además de encontrarse con extensión .tar.gz, indicando que esta empaquetado y comprimido. Para Kerrighed es necesaria la versión 2.6.20, por tal razón se descargará los fuentes linux-2.6.20.tar.gz. • Desempaquetar el kernel mediante los comandos74 : #cd /usr/src75 #tar -xvjf linux-2.6.20.tar.gz • Parchear el kernel76 Un parche es una adición al código fuente del kernel de tal forma que se le pueda agregar alguna funcionalidad específica, y debe ser aplicado solo a los núcleos descargados desde www.kernel.org, conocidos como Vanilla, y no a los proporcionados por las distribuciones puesto que ya contienen otros parches. Para este paso se descarga el parche desde el sitio web del proyecto teniendo cuidado que sea el adecuado para la versión del núcleo sobre la cual se instalará, se descomprime en el directorio de las fuentes del kernel y se aplican: #cd /usr/src/linux-2.6.20 74 Un comando antecedido del símbolo numeral (#) indica que debe ser ejecutado por la cuenta del superusuario (root). 75 Este comando permite cambiar al directorio /usr/src. 76 Este proceso es opcional. 150 #gunzip patch-2.6.20.gz #cat patch-2.6.20 | patch -Np1 • Configuración del Kernel Es quizás uno de los pasos más críticos a la hora de compilar el kernel, ya que una buena configuración permitirá tener un núcleo personalizado y adecuado para el ordenador, pero si se toman malas decisiones se puede llegar incluso a un kernel panic que no permita siquiera iniciar el sistema operativo. Por esta razón se recomienda no eliminar los núcleos que se hayan instalado por defecto en el sistema operativo, y mantenerlos en el arranque del sistema para tener alternativas si la compilación falla. A la hora de configurar un núcleo se pueden plantear dos alternativas: compilarlo para una máquina en particular, de tal forma que se obtendrá un kernel pequeño y rápido, o un núcleo para varias máquinas, lo cual tendrá el efecto contrario debido a que se tendrán que incluir más módulos. Los módulos 77 además podrán ser cargados de dos formas, la primera es incluirlos en el módulo para que inicien al arrancar el sistema (built-in) o que actúen bajo demanda, es decir que estará en el núcleo pero solo se iniciara cuando sea solicitado. Para la configuración del kernel se deben seguir estos pasos: • Entrar en el directorio /usr/src/linux-2.6.20: #cd /usr/src/linux-2.6.20 • Limpiar las compilaciones anteriores #make clean #make mrproper • Generar menuconfig para configurar el kernel #make menuconfig78 77 Los módulos son los equivalentes a los drivers o controladores de Microsoft Windows y es el software que permite que un dispositivo funcione correctamente en el sistema operativo. 78 Si existe un archivo .config en el sistema, menuconfig lo cargará, si se desea tomar una compilación previa de un kernel que ya ha sido probado como base para la compilación del nuevo entonces se toma el archivo .config del directorio /boot/config-x-x-xx-x, se copia al directorio donde están las fuentes del nuevo núcleo con el nombre .config.old y se carga mediante la opción Load an Alternate Configuration File. 151 • Se exploraran todas los menús disponibles, teniendo tres opciones al momento de configurar: • • • • • [*] Incluirlo en la parte monolítica (built-in) [M] Incluirlo como módulo por demanda [] No incluirlo. Al terminar se guardará la configuración en el archivo .config o en un fichero alternativo mediante la opción Save configuration to an alternate file. Compilación Para el proceso de compilación se siguen los siguientes pasos: • Crear el enlace simbólico linux #rm /usr/src/linux #ln -s /usr/src/linux-2.6.20 /usr/src/linux • Si se hacen varias compilaciones del kernel y se desea evitar conflictos se edita el archivo /usr/src/linux-2.6.20/Makefile modificando la línea: • • EXTRAVERSION = .1 por EXTRAVERSION=.1-r179 compilar: #make • Este proceso generará los siguientes archivos: • • • • Instalación El proceso de instalación del nuevo núcleo es el siguiente: • 79 80 81 82 /usr/src/linux-2.6.20/arch/i386/boot/bzImage80 /usr/src/linux-2.6.20/System.map81 /usr/src/linux-2.6.20/...82 Instalar vmlinuz R1 es la versión de compilación, que aparecerá como parte de la identificación del kernel. Núcleo o Kernel comprimido Archivo de Simbolos Diversos subdirectorios y archivos .o y .ko correspondientes a los módulos. 152 #cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.20 • Instalar archivo de símbolos System.map #cp System.map /boot/System.map-2.6.20 • Instalar archivo de configuración del kernel #cp .config /boot/config-2.6.20 • Instalar los nuevos módulos: #make modules_install • Crear la imagen de arranque para el nuevo núcleo #mkinitramfs /lib/modules/2.6.20 • -o /boot/initrd.img-2.6.20 Actualizar el enlace simbólico vmlinuz #rm /vmlinux #ln -s /boot/vmlinuz-2.6.20 /vmlinuz • Actualizar el enlace simbólico initrd.img #rm /initrd.img #ln -s /boot/initrd.img-2.6.20 /initrd.img • Crear el enlace /boot/System.map #ln -s /boot/System.map-2.6.20 /boot/System.map • Editar el archivo /boot/grub/menu.lst para configurar el gestor de arranque de tal modo que se pueda iniciar con el nuevo kernel, agregando las siguientes lineas83: title Debian Gnu\Linux, kernel 2.6.20 root(hd0,1) kernel /boot/vmlinuz-2.6.20 root=/dev/hda2 ro initrd /boot/initrd.img-2.6.20 83 Algunas opciones podrían cambiar de acuerdo al sistema donde se configura el nuevo kernel, por eso es importante revisar las otras entradas en el archivo para tomarlas como base. 153 savedefault boot • Finalmente, si el kernel arranca bien, se crean los archivos de dependencias entre módulos mediante el comando: #depmod -a Al compilar el kernel para un clúster existen algunas opciones a tener en cuenta de tal forma que el núcleo ofrezca las mejores condiciones para el sistema: • • Sistema de archivos Es importante tener correctamente configurado en el núcleo el sistema de archivos NFS (Sistema de archivos de red), el cual permitirá compartir ficheros de forma rápida y eficaz. La siguiente es la configuración requerida por el núcleo para NFS: • CONFIG_NFS_FS=y • CONFIG_NFSD=y • CONFIG_SUNRPC=y • CONFIG_LOCKD=y • CONFIG_NFSD_V3=y • CONFIG_LOCKD_V4=y Configuración del cortafuego con Iptables • CONFIG_NETFILTER=y • CONFIG_IP_NF_CONNTRACK=y • CONFIG_IP_NF_IPTABLES=y • CONFIG_IP_NF_MATCH_STATE=y • CONFIG_IP_NF_FILTER=y 154 • CONFIG_IP_NF_TARGET_REJECT=y • CONFIG_IP_NF_NAT=y • CONFIG_IP_NF_NAT_NEEDED=y • CONFIG_IP_NF_TARGET_MASQUERADE=y • CONFIG_IP_NF_TARGET_LOG=y 6.5. INSTALACIÓN DE KERRIGHED El proceso de instalación del software Kerrighed se lleva a cabo a partir del código fuente de la aplicación, dado que no existen actualmente binarios para Debian Gnu/Linux. 6.5.1. Instalación en un nodo84 Este tipo en la instalación esta enfocado en un primer nodo, dado que para el resto de nodos se puede utilizar métodos diferentes. Para instalar kerrighed en el computador se necesita: • Conocer acerca del proceso de arranque del sistema operativo. • Saber configurar, compilar e instalar el núcleo del sistema operativo. • Tener el siguiente software85: • Automake 1.10 o mayor. • Autoconf 2.59 o mayor. 84 KERRIGHED. Installing kerrighed 2.4.0. http://www.kerrighed.org/wiki/index.php/Installing_Kerrighed_2.4.0 85 En Debian Gnu\Linux el proceso de instalación de una aplicación o paquete se lleva a cabo mediante el comando apt. Por ejemplo para instalar automake se digita: #apt-get install automake Si se desea saber el nombre de un paquete o si se encuentra disponible para la distribución: #apt-cache search automake Finalmente, si se desea conocer la versión del paquete instalado: $automake -version 155 • • Libtool • Rsync • Bzip2 • gcc (Se recomienda la versión 3.3, aunque con mayores también se lleva a cabo el proceso). Se sugiere los siguientes paquetes: • lsb_release • xsltproc Debido a que Kerrighed trabaja con kernel 2.6.20 y Debian Gnu\Linux puede estar con una versión diferente (actualmente con 2.6.27) es altamente recomendable descargar las fuentes del núcleo 2.6.20, compilarlo y probar su correcto funcionamiento en el computador de modo que al momento de la instalación de Kerrighed se puedan tomar las opciones de configuración correctas y el hardware funcione completamente, especialmente el relacionado con la red. A continuación se procede con la instalación de Kerrighed, a partir de los códigos fuentes tanto de la aplicación como del núcleo, mediante los siguientes pasos: • Descarga de los fuentes mediante wget o directamente del sitio web: #wget -O usr/src/kerrighed-latest.tar.gz http://kerrighed.gforge.inria.fr/kerrighed-latest.tar.gz #wget -O /usr/src/linux-2.6.20.tar.bz2 http://www.kernel.org/pub/linux/kernel/v2.6/linux2.6.20.tar.bz2 • Cambiar a la carpeta /usr/src y descomprimir los archivos: cd /usr/src #tar zxf kerrighed-2.4.0.tar.gz #tar jxf linux-2.6.20.tar.bz2 156 • Configurar el fuente de kerrighed. Después de este paso, los fuentes del kernel con el parche se encuentran en el directorio _kernel y el directorio kernel build es kernel. cd kerrighed-2.4.0 #./configure • Configurar el fuente del kernel. cd ../linux-2.6.20 #./configure • Compilar los fuentes e instalar la aplicación cd ../kerrighed-2.4.0 #make #make install Los pasos anteriores deben generar los siguientes archivos y directorios: • /boot/vmlinuz-2.6.20-krg: kernel con Kerrighed. • /boot/System.map: Tabla de símbolos para el kernel con Kerrighed. • /lib/modules/2.6.20-krg: módulos de Kerrighed. • /etc/init.d/kerrighed: script del servicio Kerrighed. • /etc/default/kerrighed: configuración del servicio Kerrighed. • /usr/local/share/man: Páginas de ayuda. • /usr/local/bin/krgadm: Herramienta clúster. • /usr/local/bin/krgcapset: procesos. • /usr/local/bin/krgcr-run: Ayudante para puntos de restauración y reinicio de los procesos. de Herramientas 157 administración de capacidades del de • /usr/local/bin/migrate: procesos. Herramienta • /usr/local/lib/libkerrighed-*: Conjunto de librerías de kerrighed. • /usr/local/include/kerrighed: kerrighed. 6.5.2. Instalación en otros nodos otros nodos se tienen dos alternativas: de migración de Cabeceras de las librerías Para tener kerrighed en los • Exportar el filesystem mediante NFSROOT y que los demás nodos arranquen desde el NFSROOT. • Instalar exactamente los mismos paquetes en cada nodo (replicando un nodo en los demás) y exportar mediante NFS únicamente el /home. 6.6. CONFIGURACIÓN La configuración de Kerrighed se realiza en varios archivos, y se realiza de la siguiente forma: • Configuración de sesión y nodo: (/boot/grub/menu.lst) se agrega lo siguiente: en el grub cd /boot/grub #nano menu.lst kernel (hd0,0) /boot/vmlinuz BOOT_IMAGE=linux root=/dev/sda1 acpi=ht resume=/dev/sda5 vga=788 86 node_id=xx . • Configuración del listado de nodos: en el archivo /etc/kerrighed_nodes se listan los nodos que componen el clúster, agregando las siguientes lineas: session_id=xx87 86 El id de nodo es un número entre 0 y 254. 87 La id de sesión es un número entre 1 y 254. 158 • nbmin=x88 192.168.0.2:0:eth089 192.168.0.3:1:eth0 … 6.7. ADMINISTRACIÓN En kerrighed no existe una herramienta gráfica de administración del clúster, por lo cual todo se debe realizar mediante la consola de comandos: • • La administración del módulo kerrighed se realizar mediante el comando /etc/init.d/kerrighed, el cual presenta las siguientes opciones: • /etc/init.d/kerrighed start carga el módulo90. • /etc/init.d/kerrighed stop Desmonta el módulo. • /etc/init.d/kerrighed restart Recarga el módulo. • /etc/init.d/kerrighed status Muestra el estado del módulo. Debido a que cargar el módulo no implica que se arranque kerrighed, existen dos métodos que permiten iniciar el sistema: • Automático: mediante /etc/kerrighed_nodes. el parametro nbmin • Manual: mediante el comando #krgadm cluster start en Otros comandos relacionados con la administración de kerrighed son 88 nbmin indica cuantos nodos son necesarios, como mínimo, para que el clúster arranque automáticamente. 89 Cada línea hace referencia a la dirección ip del nodo que se esta listando (192.168.0.x), seguido del identificador del nodo (:x) y de la tarjeta de red por medio de la cual se conecta al clúster (:ethx). 90 Para que se cargue el módulo se debe tener configurado el script (/etc/default/kerrighed) de la siguiente forma: # If true, enable Kerrighed module loading ENABLE=true #ENABLE=false 159 los siguientes: • krgadm: las opciones start/stop sirven para administrar el clúster. • Krgcapset: modifica las opciones de migración de un proceso. • Migrate: migra un proceso a un nodo concreto. 160 7. RESULTADOS OBTENIDOS 7.1. DISEÑO DE UN CLÚSTER CON EQUIPOS DADOS NO ACTIVOS A continuación se presenta el diseño básico y recomendado para la implementación de un clúster con equipos dados de baja según la información que se presento en capítulos previos: Tabla 9. Diseño del sistema clúster Item Decisión Observaciones Red Red topología estrella sin Es el diseño de red más redundancia simple pero que a la vez puede ser mejorado. Es suficiente para un sistema clúster básico. Cantidad de nodos Dependiente de prestaciones buscadas Instalación en nodos Nodo maestro con servidor Es la recomendación de TFTP y DHCP kerrighed pues permite una instalación más simple y el consumo de menos recursos en cuanto a almacenamiento secundario. También se recomienda que los servidores TFTP y DHCP estén en un equipo por fuera del clúster (especialmente el último servidor). Kerrighed La versión posible Sistema operativo Debian Gnu\Linux más 161 las A mayor número de nodos mejores prestaciones (teóricamente) actual Ninguna Puede usarse otra distribución según las preferencias de quien implementa el clúster o de Item Decisión Observaciones la organización en la cual se desarrolla el proyecto. Configuración de hardware Configuración normal de Depende de las y software equipos. Uso de kernel necesidades en la 2.6.20 según las exigencias implementación del clúster. de kerrighed y las versiones más actuales para el servidor DHCP y FTP Fuente: Propia Figura 63. Diseño físico del clúster Fuente: Propia No obstante, el anterior diseño puede ser modificado y configurado según las necesidades y requerimientos que se presenten. 7.2. INSTALACIÓN OPERATIVO Y CONFIGURACIÓN DEL SISTEMA Es importante señalar que la selección de Gnu\Linux Debian se debe principalmente a razones prácticas como la experiencia en la instalación y uso de dicho sistema operativo, sin embargo la instalación de kerrighed puede ser realizada sobre prácticamente cualquier distribución, debido principalmente a que el paquete con el que se construye el clúster se compila y no se instala como un 162 binario. La instalación del sistema operativo puede resultar tan simple como la experiencia del usuario lo permita, además depende también de la distribución, sin embargo el hecho de trabajar con equipos dados de baja con distribuciones recientemente descargadas puede generar problemas de rendimiento que llevan a un funcionamiento lento del ordenador. Para solucionar este problema existen dos alternativas: • Instalar un sistema base, sin aplicativos ni entornos de escritorio innecesarios. • Compilar un kernel antiguo para el sistema operativo (La versión 2.6.20 es la ideal toda vez que kerrighed lo exige para su funcionamiento). La compilación del kernel no resulta trivial, exige conocimiento tanto del núcleo como del hardware sobre el cual se pretende hacer funcionar. El tiempo y los recursos también son factores críticos, dado que la compilación del núcleo Linux exige al máximo la máquina sobre la que se ejecuta esta operación. Por otro lado, un ordenador con 256 Mbytes de memoria RAM y un procesador de 945 Mhz se tarda entre 3 y 4 horas para llevar a cabo la compilación del kernel. 7.3. INSTALACIÓN DE KERRIGHED Aunque a simple vista, si se toma como base la documentación por el proyecto kerrighed, la instalación del paquete pueda parecer simple, la realidad muestra que puede resultar algo más compleja. En la instalación se identificó lo siguiente: • Tiempo de instalación: el tiempo que se tarda en compilar el paquete kerrighed depende, al igual que el kernel, del procesador y la memoria del ordenador. Para un computador con 256 Mbytes y procesador de 945 Mhz el proceso de compilación tarda entre 1 hora y 1 hora y 30 minutos. El proceso de instalación entre 30 y 60 minutos adicionales. Finalmente la configuración o instalación del kernel generado por el paquete kerrighed puede consumir aproximadamente 20 163 minutos adicionales. Todo lo anterior eliminando factores como errores de configuración, de compilación, entre otros, que podrían provocar tiempos mayores. • • El kernel: La selección del núcleo es algo que no esta en manos del usuario, puesto que la última versión del paquete kerrighed exige descargar, compilar e instalar el núcleo 2.6.20. Esta situación provoca lo siguiente: • Es indispensable tener conocimientos sobre la compilación del kernel, dado que aunque la configuración de kerrighed genera un núcleo básico, el resultado obtenido puede no ser suficiente y puede que algunos dispositivos del ordenador no funcionen total o parcialmente (esto es especialmente importante para la tarjeta de red). • Aun cuando el núcleo 2.6.20 puede ser considerado como un kernel “antiguo”, en algunos equipos dados de baja puede ser aún considerado como “pesado” para su funcionamiento. En contraste, con equipos más nuevos podría no tener soporte para algunos componentes. Modo de implementación: Kerrighed recomienda su instalación en un único nodo que actuara como maestro y del cual el resto de nodos tomaran toda la información necesaria arrancando por medio de la tarjeta de red. Este es el enfoque utilizado al hacer uso del live CD ofrecido por el proyecto Kerrighed para realizar las pruebas. El hecho de realizar la instalación por este medio genera, además de un mayor tiempo en la implementación, un nivel de complejidad más alto, toda vez que es necesaria la instalación de servidores tftp y dhcp que permitan a los otros nodos conectarse al principal y obtener la información que necesitan91. Por otro lado este tipo de implementación ha presentado un problema adicional: la capacidad de las tarjetas de red en equipos usados para arrancar por red de datos. Las pruebas realizadas en este proyecto han permitido detectar que son muy pocos los equipos dados de baja los que cuentan con tarjetas de red con capacidad para arrancar por red, lo cual no 91 Existe además la recomendación de tener un ordenador por fuera del clúster que actué como servidor tfpt y dhcp, lo cual por problemas de recursos se ha convertido en una alternativa no viable a la hora de realizar pruebas. 164 les permite interactuar con el clúster. Teniendo en cuenta lo anterior, el tipo de implementación recomendado por el proyecto kerrighed (y aplicado en el proyecto para el prototipo) presenta las siguientes dificultades: • El clúster, al arrancar sus nodos por red, puede estar desaprovechando la capacidad de los discos duros. Estos deberán ser instalados en nodos específicos que permitan su uso en el clúster, teniendo en cuenta eso si, las limitaciones que equipos dados de baja puedan tener. • Es necesario realizar una inversión adicional en los equipos con el fin de adquirir tarjetas de red capaces de iniciar el ordenador por medio de la red de datos. Esto sin tener en cuenta además que es posible que también se deriven problemas si la BIOS de la tarjeta madre no admite este tipo de arranque. En contraste, la implementación por red presenta como ventajas las siguientes: • No se necesita instalar todo el sistema (tanto el operativo, como el paquete kerrighed) en cada nodo, lo cual lleva a un ahorro significativo en tiempo, además de disminuir considerablemente la complejidad de la implementación derivada de la necesidad de compilar el núcleo cada vez que se instala el paquete kerrighed. Una disminución de tiempo puede implicar una disminución de costos para la implementación. • El tener un nodo maestro al cual se conectan los otros nodos por medio de la red implica que la perdida de uno de los miembros del clúster no generará mayor traumatismo si se tiene en cuenta que basta con retirar el ordenador defectuoso del conjunto e ingresar uno que arranque por red para poder disponer de su poder de procesamiento. 7.4. ADMINISTRACIÓN DE KERRIGHED La administración de un clúster implementado mediante el paquete kerrighed ha sido quizás uno de los puntos más complicados al 165 momento de generar un proyecto de esta naturaleza. La dificultad deriva del hecho que para kerrighed no existe ninguna herramienta gráfica que permita interactuar con el sistema, obligando al uso de la consola para poder efectuar tareas de monitorización y administración del clúster, lo cual incrementa la complejidad para implementar este sistema en las empresas de la región. La apreciación anterior se apoya en el hecho, que tal como se observó en el estudio de las empresas que se tuvieron como “casos prácticos” para el presente proyecto, el 100% afirmaron tener sus sistemas bajo sistemas operativos Microsoft Windows, el cual tiene un modelo de administración de los sistemas muy contrario a lo que sucede con kerrighed: en general todo se hace por medio de interfaces gráficas, es decir, botones y ventanas. Por otro lado, de las entidades estudiadas, dos no cuentan con un departamento de sistemas que administre sus infraestructura tecnológica, son organizaciones que se podrían catalogar como medianas y pequeñas empresas, y tampoco cuentan con personal dedicado a labores informáticas. Con base en lo anterior se puede concluir que: • Teniendo en cuenta la complejidad en la administración del sistema kerrighed y de los sistemas operativos libres debido a de la falta de conocimiento aún existente en cuanto a S.O. como Gnu\Linux y BSD, la curva de aprendizaje para que la organización pueda adaptarse e implementar un sistema clúster como el que se propone en este proyecto puede resultar bastante lenta. Lo anterior puede constituir un elemento bastante fuerte en contra del proyecto, debido a que generalmente, ante todo cambio siempre existirá un cierto nivel de resistencia, más aún cuando se tiene que intervenir en un enfoque y una educación tecnológica sesgada y arraigada desde hace muchos años atrás. • La implementación de un clúster con kerrighed, con las características, ventajas y desventajas mencionadas anteriormente, llevará a contar con una persona con las capacidades técnicas y conceptuales suficientes para su 166 implementación. Esto en una empresa que cuenta con un departamento de sistemas bien organizado puede no suponer un problema mayor, sin embargo en el caso contrario llevaría a la contratación de personal adicional encargado de la instalación, configuración y administración del clúster. La anterior es una inversión, que en grandes e incluso, medianas empresas, puede ser factible, fácilmente aceptada. Incluso, si ya existe uno o varios empleados encargados de la infraestructura tecnológica de la empresa, pero que no cuentan con los conocimientos necesarios para llevar a cabo la implementación del clúster con kerrighed, la misma organización podría gestionar su capacitación para adaptarse a las nuevas circunstancias. Sin embargo para empresas más pequeñas esto no resultará realmente viable, puesto que los costos podrían superar los beneficios (Es importante en este punto tener en cuenta la gran cantidad de pequeñas y medianas empresas que existen en la región, toda vez que un gran porcentaje de las grandes empresas tienen sus sedes principales en ciudades como Calí, Bogotá y Medellín). 7.5. RENDIMIENTO En un clúster los parámetros de rendimiento dependen de la cantidad de nodos lo conforman y sus características, además del tipo de clúster y las tareas para las que ha sido destinado. En un clúster de alta disponibilidad el rendimiento no es un factor importante, al contrario de un clúster de alto rendimiento. El caso del proyecto kerrighed responde a un clúster de alto rendimiento, en el cual el conjunto de máquinas aparece como un solo ordenador para las aplicaciones que se instalan y ejecutan en el sistema. En este caso se combinan las capacidades de cada elemento (nodo) obedeciendo a unas políticas de migración establecidas por el sistema (generalmente se busca el nodo disponible que pueda aceptar el proceso). Lo anterior implica una seria dificultad para el cálculo de la capacidad de procesamiento de un clúster, toda vez que este factor siempre va a depender de elementos como: • Capacidad de cada nodo: En el clúster propuesto mediante kerrighed (heterogéneo) cada nodo presenta características 167 diferentes que brindaran capacidades distintas, además de verse afectados por diferentes condiciones. Estas condiciones, dado que los nodos son equipos dados de baja, van desde el tiempo de uso hasta los posibles daños ocasionados durante su vida activa por motivo de variaciones de voltaje, cambios en el hardware, golpes, etcétera. • Capacidad de la red: Un elemento importante para un clúster es la red de datos que conecta cada elemento en el grupo. • Software: El uso de la capacidad de un clúster depende en gran medida de las aplicaciones que se ejecuten sobre el mismo. A mayor posibilidad de dividir la aplicación en partes que puedan ser ejecutadas por diferentes procesadores, mayor será el rendimiento del programa en el clúster. Sin embargo, para un programa escrito totalmente secuencial la posibilidad de ejecutarlo de forma paralelo baja considerablemente, desaprovechando recursos. 7.5.1. Enfoque Lineal Bajo este enfoque, la capacidad de un clúster se puede medir de forma lineal sumando la capacidad de cada CPU de los nodos del conjunto. Aun cuando no es la medida más fiable en cuento al poder de procesamiento de un sistema de esta naturaleza, si permite hacer un cálculo aproximado de lo que se puede esperar del clúster. Para realizar la medición se debe tener en cuenta además que: • El sistema operativo base genera un consumo inicial en capacidad de procesamiento entre el 0.3% y 0.7%. Además en cuanto a memoria se consumen aproximadamente 24368 Kbytes. • Adicionalmente el sistema kerrighed aproximado de entre 3% y 7%. hará un consumo Lo anterior implicaría una capacidad total aproximada igual a la sumatoria de la capacidad de cada nodo por el 0.92: C=∑ N ∗0.92 i 168 Donde C representa el poder total (aproximado) del clúster, N es la capacidad de procesamiento del Nodo, i identifica el nodo en cuestión. Este enfoque presenta el problema de no dar una medida clara de la capacidad de procesamiento, se basa en un supuesto de la velocidad de cada procesador, sin tener en cuenta otras características, como la memoria principal, características de la tarjeta madre, memoria cache del procesador, entre otras. 7.5.2. Enfoque Mediante Benchmarking El benchmarking consiste en una serie de métodos que permiten medir las capacidades de un sistema según ciertos factores. Esto quiere decir que las medidas variaran según lo que se desee analizar. En general se busca la cantidad de operaciones de coma flotante por segundo que puede llevar a cabo el procesador (lo anterior se conoce como Flops). Sin embargo existe una fuerte dependencia de la aplicación que se quiera usar en el sistema para poder saber que es lo que se necesita calcular, que tipos de datos se van a procesar, la cantidad de clientes que cargarán el sistema, etcétera. Lo anterior implica que los resultados obtenidos no puedan ser considerados como 100% exactos y confiables, debido a todos los factores que influyen, más aún cuando se compararían sistemas tan heterogéneos como el clúster que propone en el presente proyecto. Una muestra de lo mencionado se obtiene mediante el benchmarking realizado con el software Linpack92 en el cual en múltiples medidas ofrece diferentes valores para el mismo sistema93: • Medida 1: 216.624 Mflops • Medida 2: 212.775 Mflops • Medida 3: 214.408 Mflops 92 Linkpack Benchmark – Java Version. http://www.netlib.org/benchmark/linpackjava/ 93 AMD Turion de 64 Bits 2.20 GHz, 1.50 GByte de memoria RAM 169 Es de anotar que un supercomputador (Supercomputador de Canarias) con una infraestructura formada por 336 núcleos sobre servidores blade JS21 de IBM, en el que cada “cuchilla” cuenta con dos procesadores de 2.3 Ghz, 8 Gbytes de memoria Ram y 75 Gbytes de Disco Duro, puede ofrecer una capacidad de procesamiento de 3.36 Tflops (más de tres billones de operaciones por minuto)94. Por otro lado, un servidor Dell Poweredge 2800 con dos procesadores Intel Xeon de 3.2 Ghz y 2 Gbytes de memoria RAM puede ofrecer 298 Mflops según la misma prueba. Finalmente un ordenador con las características de una máquina dada de baja, como las que se pueden encontrar en las empresas objeto de este proyecto (Procesador de 945 Mhz y 256 Mbytes de RAM) entrega una capacidad de procesamiento de 20.4 Mflops. Este último resultado deja ver las grandes diferencias entre un equipo con características tan bajas como el usado y un computador relativamente nuevo como el empleado para pruebas anteriores (AMD Turion 64 bits a 2.2 Ghz) que arrojo una capacidad calculada de 216.624 Mflops (Casí 10 veces más). Figura 64. Comparativa entre sistemas Fuente: Propia 94 COMPUTING.ES. Canarias inagura oficialmente su nuevo supercomputador. En Computing.es http:// www.computing.es/Noticias/200902170012/Canarias-inaugura-oficialmente-su-nuevoSupercomputador.aspx 170 La gráfica muestra la comparación entre diferentes sistemas en relación a los Mflops que ofrecen; respectivamente los sistemas son: • AMD Thurion de 64 bits , 2.2 Ghz, 1,5 Gbytes RAM • Amd Duron 945 Mhz, 256 Mbytes de RAM • PowerEdge 2800 Intel Xeon 3.2 Ghzx2 , 2 Gbytes RAM • SComputador Canarias (30000 ordenadores aprox) Figura 65. Comparativa entre sistemas (sin supercomputador) Fuente: Propia La gráfica muestra la comparación entre diferentes sistemas en relación a los Mflops que ofrecen; respectivamente los sistemas son: • AMD Thurion de 64 bits , 2.2 Ghz, 1,5 Gbytes RAM • Amd Duron 945 Mhz, 256 Mbytes de RAM • PowerEdge 2800 Intel Xeon 3.2 Ghzx2 , 2 Gbytes RAM Lo anterior podría significar que para igualar la capacidad de un computador actual mediante la unión de diferentes ordenadores 171 dados de baja mediante un clúster se necesitarían aproximadamente de 10 nodos (cada uno con procesador de 945 Mhz y 256 Mbytes de memoria RAM). El problema del enfoque del benchmarking reside en que al momento de medir la capacidad del clúster se corre el peligro de no obtener la respuesta para todo el conjunto, sino solo la capacidad del nodo o nodos que ejecutan el proceso solicitado por la prueba. Nuevamente el benchmarking no es una prueba fiable, y su aplicación no entregará resultado concluyentes para el conjunto, excepto una posible cantidad necesaria de nodos para igualar la capacidad de un computador actual o de un servidor. 7.6. COSTOS GENERADOS PARA LA IMPLEMENTACIÓN DEL CLÚSTER Este último punto del presente capítulo se hace comparando con lo presentado por un servidor (en este caso un Dell PowerEdge 2800 con dos procesadores Intel Xeon de 3.2 Ghz y 2 Gbytes de memoria RAM) con el fin de tener un punto de comparación que más adelante permita evaluar la viabilidad para el montaje de un clúster. Para lo anterior, y teniendo en cuenta las pruebas previas sobre la capacidad de procesamiento de los nodos, se asume que para igualar las capacidades del servidor seleccionado se necesitan aproximadamente 15 nodos con procesadores de 945 Mhz y 256 Mbytes de memoria RAM (es importante tener en cuenta que un clúster heterogéneo puede tener tanta diversidad de características en sus equipos como nodos pueda disponer la empresa o empresas en las cuales se implementa). 7.6.1. Adquisición de equipos95 Este parámetro resulta complicado de evaluar, teniendo en cuenta que las empresas visitadas tenían a lo sumo entre 5 y 10 computadores dados de baja que podrían estar disponibles para la implementación de un clúster. En el caso de los ordenadores dados de baja (asumiendo la 95 Según los costos en el mercado (tomados de diferentes empresas como compugreiff en la ciudad de Bogotá, Dell Colombia, entre otras) 172 disponibilidad de todos los nodos) los costos bajan a cero. Sin embargo, los costos de reparación y adquisición de las tarjetas de red para cada equipos si pueden generar gastos adicionales. Asumiendo los siguientes costos relacionados con los ordenadores dados de baja se tiene lo siguiente: Tabla 10. Costos de adquisición para nodos de clúster Concepto Mantenimiento Reparación Tarjetas de Red y 96 Switch98 Cantidad Valor Promedio (Pesos) Total 15 30000 450000 1597 23000 345000 1 135000 135000 100000 100000 Cableado99 Total 1030000 Fuente: Propia Para un servidor se tendrían los siguientes costos aproximados: Tabla 11. Costos de adquisición para servidor Concepto Cantidad Valor promedio (Pesos) Total Servidor Dell PowerEdge 2800 1 3000000 3000000 Switch100 1 45000 45000 Total 3045000 Fuente: Propia 96 TARJETA RED TRENDNET TE100 NW10/100 PCI (10810) 97 Se asumen todas para los casos que no exista tarjeta en el nodo, o la tarjeta no admita arranque por red. 98 SWITCH TRENDNET 16 PTOS TE100S16 99 Valor aproximado del cableado de red para el conjunto de nodos 100 SWITCH TRENDNET 8 PTOS TE-100-S8 173 7.6.2. Espacio físico y adecuación Este es un punto en el cual las diferencias son significativas en cuanto al espacio físico que ocupa cada sistema, teniendo en cuenta que un servidor Dell PowerEdge 2800 ocupa menos del doble de espacio que ocupara un nodo del clúster. Un nodo normal tiene en promedio 39 cm de alto, 45 cm de largo y 18 cm de ancho, para una volumen total de 0.03159 m3. Para un servidor con medidas aproximadas de 39 cm de alto, 60 cm de largo y 20 cm de ancho el volumen es igual a 0.0468 m3. Para lo anterior la siguiente tabla el espacio físico necesario para cada sistema: Tabla 12. Comparativa de espacio físico Sistema Cant. Equipos Total Servidor 1 0.0468 m3 Clúster 25 0.47385 m3 Fuente: Propia Las cifras muestran lo que ya era claro a simple vista, y es que el consumo de espacio físico de los nodos para el clúster será superior al del servidor. Por otro lado las adecuaciones para cada sistema son similares (Sistemas de refrigeración, respaldo de energía, etcétera) por lo cual son ignoradas para el presente estudio. Sin embargo también es importante señalar que el calor producido por 25 equipos activos de forma simultanea frente a una sola máquina (el servidor) podría implicar la necesidad de tener mejores sistemas de refrigeración, e igualmente el respaldo energético para los 25 nodos implica gastos mayores. 7.6.3. Instalación, Configuración y administración La instalación es uno de los pasos cruciales para la implementación de un sistema clúster. Dejando de lado el tipo de sistema operativo a usar entre el servidor y el clúster, los siguientes conceptos se toman de forma aproximada y general para cada uno: 174 Tabla 13. Comparativa en instalación y configuración Sistema Instalación y Configuración (Costo aproximado en pesos) Servidor 1500000101 Clúster 1500000 Fuente: Propia En cuanto a la administración, todo puede variar dependiendo de la experiencia que tenga la persona encargada de la administración de los sistemas informáticos de la empresa. Actualmente, en el eje cafetero, un administrador de sistemas con conocimientos básicos y suficientes como para la administración y mantenimiento de servidores relativamente simples devenga un salario mensual aproximado de $1'500.000 mensuales mas prestaciones de ley y para-fiscales (aproximadamente un 50% adicional), mientras que uno con mayor experiencia, especialmente en redes y administración de servicios, recibe un canon mensual aproximado de $2'800.000, igualmente con prestaciones y para-fiscales. Tabla 14. Comparativa en administración de los sistemas Sistema Administración (Costo mensual aproximado en pesos Sin prestaciones y para-fiscales102) Servidor 1500000 Clúster 2800000 Fuente: Propia 101Según el valor de servicios pagados a terceros para configuración de servidores y un aproximado para sistemas complejos como un clúster. 102Según las empresas consultadas en el proyecto. 175 Para los conceptos de para-fiscales y seguridad social se deben tener en cuenta los siguientes conceptos: Tabla 15. Parafiscales103 Parafiscales Descripción % Sena 2 Caja de compensación familiar 4 ICBF 3 Total Fuente: Propia 9 Tabla 16. Prestaciones Sociales104 Prestaciones Sociales Descripción % Cesantias 8,33 Intereses de Cesantias 1 Salud 8,5 Pensiones 11,625 ARP 1 Total Fuente: Propia 30,455 Es importante señalar que no se ha tenido en cuenta la cantidad de tiempo que se puede consumir en la instalación de uno y otro sistema debido a que dicha variable depende de muchos factores que van desde el objetivo con el cual se instala el sistema hasta las características de hardware que harán mas lento o rápido el proceso de instalación de configuración e instalación del software, por ejemplo, el sistema operativo. 7.6.4. Consumo de Energía El consumo de energía es otro 103GERENCIE.COM. Aportes parafiscales. http://www.gerencie.com/aportes-parafiscales.html 104 FIERRO MARTINEZ, Angel Maria. Prestaciones sociales. En Contabilidad y Finanzas – Apoyo a Docentes y Estudiantes. http://www.contabilidadyfinanzas.com/prestaciones-sociales.html 176 elemento a evaluar para el sistema propuesto. Para esto se identifica el consumo aproximado para cada nodo y para un servidor, lo cual según la organización EnergyStar105, puede calcularse como sigue: • Servidor pequeño: 62 W • PC económico: 37 W Teniendo en cuenta que tanto el clúster como el servidor estarían activos los 24 horas al día, los 7 días de la semana, 365 día al año, el consumo de energía aproximado sería: Tabla 17. Comparativa consumo de energía Sistema Valor kW/Hora106 (Pesos) Consumo Diario (W) Consumo Mensual (W) Consumo Anual (W) Total Anual (Pesos) Servidor 278 1488 44640 535680 148899 Cluster 278 13320 399600 4795200 1333066 Fuente: Propia 7.6.5. Resumen A modo de comparación se muestra a continuación el resumen para los dos sistemas: Tabla 18. Resumen de comparaciones entre clúster y servidor Concepto Servidor Clúster Adquisición 3045000 1030000 1500000 1500000 Administración (Costo Anual en Pesos) 23481900 43832880 Consumo de Energía (Costo Anual en 148899 1333066 Instalación (Costo) 105 ENERGY STAR. Etiquetado de equipos ofimáticos con eficiencia energética. http://www.euenergystar.org/es/index.html 106Promedio para el servicio comercial 177 Concepto Servidor Clúster 28175799 47695946 0.0468 0.47385 Pesos) Total Espacio físico (m ) 3 Fuente: Propia En general, la implementación de un clúster frente a la de un servidor genera mayores costos anuales si lo que se desea es tener un sistema con equipos dados de baja que se aproxime a las capacidades de uno de los servidores más comunes en las empresas de la región. 178 8. RECOMENDACIONES Teniendo en cuenta las experiencias recogidas durante el desarrollo del presente proyecto, se formulan las siguientes recomendaciones en cuanto a la implementación de un clúster mediante kerrighed (o cualquier otro sistema) y para trabajos posteriores: • La implementación de un sistema como kerrighed o cualquier otro que surja de diferentes proyectos debe guiarse por la facilidad para su instalación y administración, además de la vigencia actual del mismo. El hecho de contar con aplicativos para clúster actualizados, o que usen los núcleos de Linux más recientes permite, entre otras cosas, contar con la capacidad de reconocimiento de mas hardware de los ordenadores que se utilizan como nodos. • El conocimiento necesario del sistema operativo Gnu\Linux para la implementación de un clúster no debe ser básico, toda vez que se necesita realizar operaciones diversas y complejas, especialmente aquellas relacionadas con el núcleo del sistema operativo. En kerrighed es especialmente importante para la administración debido a la falta de herramientas gráficas que permitan realizar estas tareas. • La instalación recomendada por kerrighed indica que se debe tener un nodo maestro con el sistema operativo y el paquete para el clúster, además de una máquina que actúe como servidor DHCP y TFTP desde el cual los nodos puedan arrancar por red y obtener los archivos necesarios para hacer parte del clúster. Aunque configuraciones distintas pueden funcionar, la complejidad aumenta. • Proyectos posteriores sobre clúster de computadores deben encontrar una forma fiable de medir las capacidades de procesamiento de acuerdo a los fines con que se implemente el sistema, esto quiere decir que deben ser proyectos encaminados a solucionar problemas puntuales que permitan conocer el entorno en el cual el clúster trabajará, las cargas de trabajo esperadas, etcétera. • Los altos costos que se generan de la implementación de un clúster que iguales las capacidades de un servidor pequeño indican que se debe pensar en un sistema de prestaciones más modestas pero que igualmente pueda brindar un servicio a la 179 empresa, teniendo en cuenta el poder asumir unos costos que puedan ser sostenidos por la organización. 180 9. CONCLUSIONES La información recopilada en el presente proyecto y los resultados obtenidos de las pruebas realizadas permiten determinar que el diseño de un clúster con ordenadores que ya no son estan activos en una empresa es totalmente posible, y además el paquete kerrighed se muestra como una de las mejores opciones actuales dado que es el único aplicativo soportado y actualizado a la fecha. Sin embargo, es importante señalar que las prestaciones otorgadas por un clúster de la naturaleza que se propone son bajas en relación a servidores de gama media y baja, como los que se pueden encontrar en la mayoría de empresas de la región; además, intentar igualar las capacidades de este último tipo de ordenadores puede generar costos altos que no compensan reemplazar una máquina adecuada para la prestación de servicios por un sistema compuesto por múltiples computadores de características bajas. Lo anterior puede llevar a dos conceptos diferentes: • La mejor opción es la adquisición de un servidor de fabrica con las características necesarias para los procesos que se corren en una empresa. • Implementar un clúster con equipos actuales que entreguen mejores prestaciones y permitan crear un sistema equivalente con menos nodos. En los casos analizados se identifica que los mayores costos en el diseño de un clúster se generan por dos conceptos: • Consumo de energía • Administración del sistema (y posiblemente la instalación que juega un papel importante). El primer problema se podría solucionar, tal y como se dijo, con el uso 181 de equipos recientes (con carácteristicas más actuales o modernas) que disminuyan la cantidad de nodos necesarios , tomando un camino o enfoque diferente al del propuesto en el proyecto. El segundo problema sin embargo resulta más complicado, dado que tanto la instalación como la administración no resultan triviales, y tal como se ha indicado previamente, exigen conocimientos adecuados de los diferentes sistemas que se involucran en la implementación de un clúster (servidores de archivos, de direcciones, kerrighed, etcétera). Lo anterior implica la contratación de una persona con los conocimientos adecuados o la capacitación del personal actual; en cualquiera de los casos se tiene un incremento en los costos. En el aspecto ambiental la propuesta de un clúster con equipos dados de baja realiza un aporte bastante importante, toda vez que una gran parte de las empresas de la región no tiene políticas claras y definidas en relación con los desechos tecnológicos, los cuales generan una contaminación considerable. El hecho de usar los equipos y componentes dados de baja en la empresa representa una disminución en los desechos y un ahorro para la organización en el manejo de los mismos. Finalmente cabe anotar que de las investigaciones realizadas se ha podido determinar que actualmente los sistemas clúster han venido perdiendo vigencia toda vez que soluciones como la virtualización (LVM) han tomado más fuerza y han mostrado ser soluciones más adecuadas. En resumen, las conclusiones para el proyecto se pueden describir en los siguientes puntos: • La implementación de un clúster con equipos dados de baja es perfectamente posible desde el punto de vista técnico, pero no resulta viable desde el enfoque económico y de prestaciones para una empresa si se intenta igualar con las prestaciones de un servidor de gama baja y media. Sin embargo, un clúster de menos prestaciones sigue siendo una buena alternativa para una organización que quiere volver a usar y recuperar sus equipos dados de baja enfocándolo a trabajar con procesos que no consuman excesivos recursos. 182 • La implementación de un clúster genera un aporte importante para el aspecto ambiental y social, excepto en el aspecto del consumo de energía. • La implementación de un clúster no es un proceso trivial, lo mismo sucede con la administración (especialmente para el proyecto kerrighed), lo cual implica personal con conocimiento adecuado del aplicativo para el clúster, el sistema operativo, entre otros. • La relación potencia-costo en comparación con los servidores más usados en las empresas deja en clara desventaja al sistema clúster con computadores que no estan activos en una empresa. • Una propuesta de un proyecto clúster con equipos dados de baja puede ser llevado a las empresas con necesidades especificas en los cuales el poder de procesamiento no sea demasiado alto y el elemento mas importante sea el uso de las máquinas. • Kerrighed se muestra como una opción valida y viable para el diseño de un clúster tipo SSI, para un grupo heterogeneo u homogeneo de computadores, con un soporte que aunque muy limitado aún, puede crecer y mejorar con el tiempo, a medida que el proyecto vaya evolucionando. 183 BIBLIOGRAFÍA BARRIOS DUEÑAS, Joel. Alcance Libre: Implementación de servidores con GNU/Linux. 2007, 491 p. BARAK, Amnon y SHILOH, Amnon. MOSIX2 Cluster, Multi-Cluster and Cloud Management. User's and Administrator's Guides and Manuals. 2009. 118 p BEOWULF.ORG. Beowulf Project Overview. [En linea] . 2009.[Fecha de Consulta: 30 de Noviembre de 2009]. http://www.beowulf.org CÁCERES VILCHES, Juan Esteban y MEDINA AMADOR, Cristian Alejandro. Implementación de un servidor web apache sobre un clúster Linux. Seminario de Titulo Universidad Católica del Maule. 2007, 95 p. CATALAN, Miquel. Nuevo modelado de computación paralela con clusters Linux. IV Congreso HispaLinux Madrid 24 de Septiembre de 2003. 24 p. COLABORADORES DE WAPEDIA. Ley de Amdahl. [En linea]. Wapedia, la wiki para teléfonos móviles. 2009 [Fecha de Consulta: 30 de Noviembre de 2009]. http://wapedia.mobi/es/Amdahl ________. Ley de Gustafson. En linea]. Wapedia, la wiki para teléfonos móviles. 2009 [Fecha de Consulta: 30 de Noviembre de 2009]. http://wapedia.mobi/es/Ley_de_Gustafson COLABORADORES DE WIKIPEDIA. Beowulf. Clúster(Informática). [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] http://es.wikipedia.org/wiki/Cluster_(inform %C3%A1tica) ________. Berkeley Software Distribution.[En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/BSD ________. CentOS.[En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http:// es.wikipedia.org/wiki/CentOS 184 ________. Clúster (Informática).[En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/Cluster_(inform %C3%A1tica) ________.Computación Distribuida. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/Grid ________.Computación Grid. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/Computaci%C3%B3n_grid ________.Computación Paralela. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/Computaci %C3%B3n_paralela _______.Fedora. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http:// es.wikipedia.org/wiki/Fedora _______. FreeBSD. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http:// es.wikipedia.org/wiki/Freebsd ________.Investigación. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/Investigaci %C3%B3n#Tipos_de_investigaci.C3.B3n ________. Licencia de Software. [En linea]. Wikipedia, La enciclopedia Libre. 2010 [Fecha de Consulta: 22 de Febrero de 2010] Disponible en : http://es.wikipedia.org/wiki/Licencia_de_software ________. Mandriva. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/Mandriva ________. Multiprocesamiento Simétrico. [En Linea]. Wikipedia, La enciclopedia Libre. 2010 [Fecha de Consulta: 23 de Febrero de 2010] Disponible en http://es.wikipedia.org/wiki/Multiprocesamiento_simetrico 185 ________.NetBSD. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http:// es.wikipedia.org/wiki/NetBSD ________.Núcleo (Informática) [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/N%C3%BAcleo_(inform %C3%A1tica) ________. OpenBSD. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/Openbsd ________.openMosix. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/OpenMosix ________. Parallel Virtual Machine. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://en.wikipedia.org/wiki/Parallel_Virtual_Machine ________.Red Hat. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http:// es.wikipedia.org/wiki/Red_Hat ________. SETI. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http:// es.wikipedia.org/wiki/SETI ________. Single System Image. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://es.wikipedia.org/wiki/Single_System_Image ________. Single System Image. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible enhttp://en.wikipedia.org/wiki/Singlesystem_image ________.Speedup. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http://en.wikipedia.org/wiki/Speedup ________. Suse. [En linea]. Wikipedia, La enciclopedia Libre. 2009 [Fecha de Consulta: 30 de Noviembre de 2009] Disponible en http:// 186 es.wikipedia.org/wiki/Suse CORTES, Toni; HAI, Jin y RAJKUMAR, Buyya. Single System Image (SSI). [En linea] En Computing Applications, The Gridbus Project. [Fecha de consulta: 30 de Noviembre de 2009] http://www.gridbus.org/papers/SSI-CCWhitePaper.pdf COMPUTER SCIENCE AND MATHEMATICS. An Introduction to PVM Programming. [En linea]. En Computer Science and Mathematics. [Fecha de consulta: 30 de Noviembre de 2009] http://www.csm.ornl.gov HERNÁNDEZ MORA, Hugo R. y DÍAZ ESTRADA, Ernesto. Construcción del centro de computación avanzada del Cáribe. [En linea] Presentación.[Fecha de consulta: 30 de noviembre de 2009] http://www.renata.edu.co/index.php/descargas/doc_download/141construccion-del-centro-de-computacion-avanzada-del-caribe.html 2009. 6 p. CLUSTERS. Definiciones. Administración y Planificación de tareas. Herramientas para la administración de clústers.[En linea] [Fecha de Consulta : 30 de Noviembre de 2009] http://clusterfie.epn.edu.ec/clusters/Definiciones/definiciones4.html Departamento de Informática. Universdad de Valladolid. Iniciación al PVM. 15 p. http://www.infor.uva.es/~bastida/Arquitecturas %20Avanzadas/pvm.pdf DÍAZ, Gilberto; HOEGER, Herbert y NUÑEZ, Luis A. Clúster de PC's. Centro Nacional de Cálculo Científico – Universidad de los Andes – Venezuela. 2002. 27 p. INGENIEMOS. Primer clúster de computación en la Facultad de Ingeniería. En Revista Ingeniemos 2007.[Fecha de Consulta: 30 de Noviembre de 2009] http://ingenieria.udea.edu.co/portal/ingeniemos/versionimpresa/200 706/pag6.pdf HOSTING SOLINGEST. Clúster de servidores ¿Que es y como funciona? [En linea] Hosting Solingest [Fecha de consulta: 30 de Noviembre de 2009] http://hosting.solingest.com/cluster-de-servidores.html INSTITUTO COLOMBIANO DE NORMAS TÉCNICAS Y CERTITIFACIÓN. 187 Norma Técnica Colombiana NTC 1486. Documentación, presentación de tesis, trabajos de grado y otros trabajos de investigación. Sexta Actualización. Santafé de Bogotá. 112 p. INSTITUTO DE FÍSICA. Clúster Grupo de Física y Atómica Molecular – GFAM. [En linea] Universidad de Antioquia. [Fecha de consulta: 30 de Noviembre de 2009] http://pegasus.udea.edu.co/~undheim/webcluster-udea/cluster-gfam.htm Instituto SETI. http://www.seti.org/ ISAZA, Gustavo A y DUQUE MENDEZ, Nestor Dario. Arquitecturas y modelos de programación en computación grid. EnRevista Scientia et Technica Año XIII, No. 37. 2007. pág. 433. KORZYNSKI, Aleksander. Montaje de clusters de alto rendimiento con OpenSSI. En Linux Magazine Número 36. pág 64-67. LAURENTE SAENZ, Simon. Aprenda Linux. Comandos Básicos – Características gnu/linux.[En linea] [ Fecha de Consulta: 30 de Noviembre de 2009] http://www.wikilearning.com/tutorial/aprenda_linux_comandos_basic os-caracteristicas_gnu_linux/7809-3 MANRIQUE M, Daniel. Construcción y evaluación de desempeño de un clúster beowulf para computo de alto rendimiento.[En linea] [Fecha de consulta: 30 de Noviembre de 2009] http://www.tomechangosubanana.com/tesis/escrito-1split/node18.html MERAYA GARCIA, Félix. La supercomputación. Asociación ACTA. 17 p. MILONE Diego H; AZAR, Adrián A y RUFINER, Leonardo. Desarrollo de una supercomputadora basada en clúster de PC's. 2001, 58 pág. MORATILLA TEMPRADO, Enrique; DURAN DÍAZ, Raul y RICO LÓPEZ, Rafael. Computación en Grid: Una solución Asequible para las Simulaciones Medioambientales. Universidad de Alcalá de H (Dpto. De Automática). 2006. 9 p. MUÑOZ A, Ricardo. Instalando un clúster tipo Mosix – Como funciona y para que sirve MOSIX. [En linea][Fecha de consulta: 30 de Noviembre de 2009] http://www.wikilearning.com/tutorial/instalando_un_cluster_tipo_mo six-como_funciona_y_para_que_sirve_mosix/442-2 188 ORTEGA LOPERA, Julio. Redes de altas prestaciones y sus aplicaciones Lección 7: Aprovechamiento del paralelismo. MPI/PVM(Presentación). Departamento de Arquitectura y Tecnología de computadores. ETS Ingeniería Informática. 2004-2005. OSCAR PROJECT. What is Oscar. [En linea] [Fecha de consulta: 30 de Noviembre de 2009] http://svn.oscar.openclustergroup.org/trac/oscar OSCAR. Open Source Cluster Application Resources. [En linea] [Fecha de consulta: 30 de Noviembre de 2009] http://www.csm.ornl.gov/oscar/ PARRA PÉREZ, John Jairo. Desarrollo de un clúster computacional para la compilación de algoritmos en paralelo en el Observatorio Astronómico. Revista Civilizar No. 6. Universidad Sergio Arboleda. RESIDUOS DE APARATOS ELÉCTRICOS Y ELECTRÓNICOS. De residuoa a recurso – Gestión de RAEE en Colombia [En linea] [Fecha de consulta: 30 de Noviembre de 2009] http://www.raee.org.co RIOS, Genghis. Clústers Linux, Grids Computacionales y el proyecto EELA. Dirección de Informática Académica-Pontifica Universidad Católica del Perú. 45 p. ROCKCLUSTER PROJECT. [En linea] [Fecha de Consulta: 30 de Noviembre de 2009] http://www.rocksclusters.org/ ROCKCLUSTER PROJECT. Introduction to Clusters and Rocks Overview. Rocks for Noobs.[En linea] [Fecha de consulta: 30 de Noviembre de 2009] http://www.rocksclusters.org/rocksapalooza/2008/tutorial-1.pdf ROJO, Oscar. Introducción a los sistemas distribuidos.[En linea] [Fecha de Consulta: 30 de Noviembre de 2009] http://www.augcyl.org/?q=glol-intro-sistemas-distribuidos SANTOS MARRERO, Adrian. Introducción a Condor. 2004. 13 p. SANCHEZ TESTAL, J.J. Clúster sencillo con MPI. En Linux Magazine. Numero 38. pág 57-69. THE BERKELEY NOW PROJECT. [En linea] [ Fecha de consulta: 30 de Noviembre de 2009] http://now.cs.berkeley.edu 189 The LAM/MPI Team Open Systems Lab. LAM/MPI User's Guide Version 7.1.4. Pervasive Technology Labs. 2007. 129 p. TORRES, Saulo De Jesus; VELOZA MORA, Juan de Jesus y LOPEZ ECHEVERRY, Ana María. Ajedrez en Grid con accesibilidad para todos. Revista Scientia et Technica Año XIV No. 40. 2008. pág 165. ZULUAGA CALLEJAS, Jorge I y OSPINA SANJUAN, Alvaro E. Instalación y configuración de una sala clúster como una solución de bajo costo para el acceso a tecnología de computación distribuida en Latinoamérica. 10 p. 190