Download GNU/Linux - Ldc Usb - Universidad Simón Bolívar
Document related concepts
Transcript
UNIVERSIDAD SIMÓN BOLÍVAR SISTEMAS DE OPERACIÓN II Abril-Julio 2013 Profesora: Yudith Cardinale GNU/Linux Mónica Del Río Germán León Juan Arocha Matteo Ferrando GNU/Linux Temas: ● ● ● ● ● ● ● ● Componentes Gestión de procesos Gestión de memoria Módulos Controladores para dispositivos Controladores para sistemas de archivos Gestión de la red Seguridad GNU/Linux Componentes GNU/Linux Gestión de procesos ● ● El planificador es el componente del sistema operativo que se encarga de repartir el procesador entre los procesos listos. Todas sus operaciones corren en tiempo constante independientemente de la cantidad de procesos en el sistema. GNU/Linux Gestión de procesos: Prioridades ● ● ● Prioridad Estática: puede ser modificada por el usuario a través del comando nice Prioridad Dinámica: se recalcula cada vez que el proceso abandona el procesador o un dispositivo. Para procesos reales es igual a la prioridad dinámica Rango de Prioridades: [0-139] Procesos de Tiempo Real [0-99] Procesos Normales [100-139] GNU/Linux Gestión de procesos: Timeslice o Quantum El timeslice es calculado simplemente pasando la prioridad estática de la tarea al rango de posibles timeslice. MIN_TIMESLICE = 10 Quantum Mínimo MAX_TIMESLICE = 200 Quantum Máximo MAX_PRIO = 140 Máxima prioridad NICE_TO_PRIO(0) = 120 (p)->static_prio Prioridad del Proceso (MIN_TIMESLICE + ((MAX_TIMESLICE - MIN_TIMESLICE) (MAX_PRIO-1 - (p)->static_prio) / (MAX_USER_PRIO-1) )) * GNU/Linux Gestión de procesos: Estructuras ● ● ● La estructura principal es la runqueue con 140 listas de procesos listos y 140 de procesos con timeslice expirado. Hay además un bitmap que indica si cada lista está vacía o no. La búsqueda del próximo proceso listo consiste en encontrar el primer bit 1 del bitmap y sacar al primer proceso de la lista. GNU/Linux Gestión de procesos: Estructuras GNU/Linux Gestión de procesos: Multiprocesadores ● ● ● Equilibrio de Carga: mover algunas tareas desde una CPU a otra CPU para equilibrar el sistema. Variable cpu_load almacena un valor que representa la carga de la CPU Dominios de Planificación: es un conjunto de CPUs cuya carga debe mantenerse balanceada GNU/Linux Gestión de memoria ● ● El manejo de memoria es una de las partes más importantes de un sistema operativo. Se han desarrollado distintas estrategias para el manejo de memoria en sistemas operativos y las más exitosa ha sido la memoria virtual. El kernel de Linux implementa un sistema de memoria virtual compartida. GNU/Linux Gestión de memoria Sistema de memoria virtual compartida El sistema manejador de memoria de Linux nunca asigna la memoria física directamente a algún proceso. En lugar de esto cada proceso tiene una visión "virtual" de la memoria. Cada proceso cree que es el único proceso que accede a la memoria en el sistema. Es decir no está consciente de las solicitudes de memoria que hacen los demás procesos. El uso de una partición swap permite que los procesos crean que la memoria RAM es más grande de lo que realmente es. GNU/Linux Gestión de memoria La memoria virtual es mapeada luego hacia la memoria real (física) por el sistema manejador de memoria por medio de tablas de páginas de memoria GNU/Linux Gestión de memoria Limitaciones de la cantidad de memoria permitida en un sistema: ● Sistemas con arquitectura de 32 bits: 4Gb: 3Gb para espacio de usuario. 1 Gb: para espacio de kernel. ● Sistemas con arquitectura de 64 bits: 256 Tb para espacio de usuario. 256 Tb para espacio de kernel. GNU/Linux Gestión de memoria Uso de la memoria física como cache El acceso a un dispositivo de almacenamiento secundario como un disco duro es significativamente más lento que acceder a la memoria principal. Por lo tanto, el sistema de manejo de memoria de Linux utiliza una porción de la memoria principal como caché para mantener en memoria los archivos que hayan sido recientemente utilizados y así agilizar futuros accesos a dichos archivos. GNU/Linux Gestión de memoria Tipos de memoria: ● ● ● ● Páginas de kernel - fijas en la memoria RAM Texto de programas - sólo lectura Ligadas a archivos Páginas anónimas - no están ligadas a archivos Las páginas anónimas pueden ser "swappeadas" GNU/Linux Gestión de memoria Soluciones para cuando la memoria RAM está ocupada Cuando una aplicación solicita espacio en memoria y no hay suficiente espacio libre en la RAM. El kernel tiene dos maneras de liberar espacio en disco: ● Reduciendo el tamaño del cache que esta en la RAM ● Utilizando espacio de la partición swap. Desde la versión 2.6 del kernel el usuario puede definir la probabilidad que se le dará a cada una de las dos opciones. Es un valor del 0 al 100 donde 0 se apega a la primera opción (reducir el cache) y 100 (mandar paginas al área de swap) GNU/Linux Módulos En un principio todo el código estaba enlazado estáticamente al kernel. Esto requería que para agregar alguna nueva funcionalidad al kernel se hacía necesario recompilar y reiniciar el kernel. Por otro lado, todos los módulos que formarán parte del kernel (aunque fueran utilizados o no) debían cargarse en memoria pudiendo ocupar espacio innecesariamente. GNU/Linux Módulos LKM (Loadable Kernel Modules) Los LKM presentados en la versión 1.2 del kernel permiten afrontar estos problemas. Los LKM pueden ser enlazados dinámicamente al kernel y ser liberados y desmontados de la memoria RAM cuando ya no son utilizados. Distintos sistemas operativos soportan los LKM, la implementación particular de Linux utiliza la utilidad modprobe para montar y desmontar módulos del kernel dinámicamente. GNU/Linux Controladores para dispositivos ● Unidad mínima de almacenamiento en disco: sector ● Para lectura y/o escritura en disco, se transforma la unidad del sistema de archivos (bloques) en sectores a través de los i-nodos. ● Algoritmos de planificación ○ Completely Fair Queueing (CFQ) ○ NOOP ○ Deadline GNU/Linux Controladores para dispositivos: CFQ ● ● ● Estructuras ○ Conjuntos de colas de peticiones ordenadas por prioridad de E/S de los procesos solicitantes ○ Cola de despacho Algoritmo ○ Loop infinito ■ Si la cola de despacho está vacía ● Se toma la primera petición de cada uno de las colas de peticiones (si existen) ● Se reordenan las peticiones basado en la continuidad de los bloques a leer (para evitar movimiento innecesario de cabezal) ● Se guardan en la cola de despacho ● Se atienden peticiones hasta vaciar la cola. Este es el algoritmo que está "por defecto" en el Kernel de Linux desde el año 2006. GNU/Linux Controladores para dispositivos: NOOP ● ● ● Maneja las peticiones en una cola FIFO. NOOP asume que cualquier optimización en cuanto a la búsqueda en el disco duro se hará en un nivel más bajo en la jerarquía IO Mayormente utilizado en dispositivos que no dependen de un movimiento mecánico para la búsqueda (memoria flash, solid state drives, etc) pues el tiempo en reordenar peticiones sería un desperdicio pues no influye en la misma. GNU/Linux Controladores para dispositivos: Deadline ● ● ● Agrega un atributo deadline (tiempo de expiración) a las peticiones. Estructuras ○ 2 colas ordenadas por sectores: una de operaciones de lectura y otra de escritura (la de lectura tiene más prioridad pues es una operación bloqueante en los procesos ○ 2 colas deadline donde se ordenan los procesos por su tiempo de expiración Algoritmo ○ Mientras existan peticiones. ■ Primero se revisa una de las colas ordenadas (Primeramente la de lectura por prioridad) ■ Luego se revisan la cola de deadline asociada a ver si la primera petición caducó ● Si caducó, se atiende ● Si no caducó, se atiende petición de la siguiente cola ordenada. GNU/Linux Estructura sistemas de archivos Existe un estándar para la jerarquía de los sistema de archivos de las distribuciones GNU/Linux (Filesystems hierarchy standard o FSH) ● ● ● Sub-jerarquías ○ Archivos Estáticos: No cambiantes sin la intervención de algún usuario root (/bin, /sbin, /boot, etc) ○ Archivos Dinámicos: Editables por el dueño o por el root (/var/mail, /home, etc) ○ Compartidos: compartibles entre usuarios (/usr/share...) ○ Restringidos: no compartibles (/etc, /boot, etc) En general, la ruta principal es "/" ya que es allí donde se encuentra toda la jerarquía de archivos. Dado que en "/" se encuentran los archivos de configuración del sistema, suele montarse en particiones diferentes a "/home" para aislar los archivos del usuario de cualquier depuración sobre el sistema. GNU/Linux Estructura sistemas de archivos GNU/Linux Componentes sistemas de archivos ● ● Tabla de i-nodos ○ Ruta o path al archivo. ○ Tamaño. ○ Ubicación física. Bloques de almacenamiento ○ Tamaño preconfigurado al montar el sistema de archivos: entre 512 bytes y 4096 bytes. ○ No necesariamente contiguos. ○ Unidad mínima de almacenamiento en el sistema de archivos. GNU/Linux Componentes sistemas de archivos GNU/Linux Controladores para sistemas de archivos Para las distribuciones GNU/Linux, los formatos usados normalmente son los ext. ● ● ● Ext2: Se define con: ○ la jerarquía estándar y los componentes antes mencionados. ○ no es usado en la actualidad. Ext3: Sucesor de Ext2 ○ Mejora: se puede usar journaling (Para cada transacción, dígase escritura o lectura, se hacer un registro para poder revertirla en caso de error). ○ No es tan común usarlo ya que tiene un sucesor con varias mejoras: Ext4 Ext4: Actualmente el más usado en distribuciones linux. ○ Trae consigo varias memorias desde poder usar un formato extent para la asignación de bloques, hasta aumento de tamaño máximo de disco y directorios. GNU/Linux Gestión de la red Una red consiste de dos o más dispositivos conectados entre sí para comunicarse, esta comunicación puede conformarse de comandos, datos, hardware y otros recursos. Para lograr una comunicación estable y coherente se definieron protocolos de comunicación que se deben a la hora de acceder a una red. GNU/Linux Gestión de la red En Linux Linux ofrece herramientas para facilitar esta comunicación entre dispositivos: ● socket: crea un socket del tipo indicado, usa recursos del sistema, está identificado por un número entero. ● bind: se usa para asociar un socket con una estructura para almacenar la dirección de éste. ● listen: se usa en el servidor, se usa para aceptar llamadas TCP. GNU/Linux Gestión de la red En Linux ● connect: se usa en el cliente, se usa para asignar un puerto libre a un socket, para intentar hacer una nueva conexión TCP ● accept: se usa en el servidor, acepta una conexión TCP que haya sido recibida del cliente, creando un nuevo socket. ● (send & recv) / (write & read) / (sendto / recvfrom): se usan para enviar y recibir datos de sockets remotos. GNU/Linux Gestión de la red En Linux ● close: libera los recursos del sistema que estaban siendo utilizados por el socket, de ser una conexión TCP, termina la conexión. ● gethostbyname & gethostbyaddr: para obtener el IP dado un nombre o una estructura de dirección. GNU/Linux Gestión de la red En Linux En Linux se cuenta con estándares también de configuración de conexiones. En el directorio /etc se consiguen diversos archivos de configuración que pueden ser modificados por el usuario y por herramientas de configuración de redes. Por razones obvias se recomienda usar herramientas de configuración. GNU/Linux Seguridad “The first fact to face is that UNIX was not developed with security, in any realistic sense, in mind; this fact alone guarantees a vast number of holes.” Dennis Ritchie, “On the Security of UNIX”, 1979 La seguridad en Linux está estrechamente ligada al enfoque de seguridad que se dio al desarrollar Unix. Evaluaremos las siguientes categorías que presentan mejoras de seguridad en Linux: ● ● ● ● Autenticación Control de acceso de red Criptografía Linux Security Modules (LSM) GNU/Linux Seguridad Autenticación Tradicionalmente se utiliza el sistema de contraseñas de Linux para autenticar a los usuarios de una máquina. PAM (Pluggable Authentication Modules) es un mecanismo que permite flexibilizar el esquema de autenticación que se desea utilizar en un sistema. Cuando un programa necesita autenticar a un usuario, PAM provee una librería funciones para utilizar el esquema de autenticación que se desee. GNU/Linux Seguridad Controles de seguridad en la red ● Seguridad en la capa IP (IPSec) Es un stack de protocolos que proporcionan autenticación y cifrado de cada paquete IP de una sesión de comunicación. ● IPTables (Firewall) Sistema cortafuegos implementado en el kernel de Linux. Tiene distintos módulos que manejan distintos protocolos: iptables (IPv4), ip6tables (IPv6), arptables (ARP) y ebtables (Tramas Ethernet). GNU/Linux Seguridad Criptografía ● GPG (Gnu Privacy Guard) Implementación libre de OpenPGP ● TrueCrypt Herramienta de cifrado multiplataforma. Soporta distintos algoritmos como AES, Blowfish, entre otros. GNU/Linux Seguridad MAC (Mandatory Access Control) Es un tipo de control de acceso en donde el sistema operativo restringe o controla la habilidad de un sujeto de acceder o realizar cualquier actividad sobre un objeto. En la práctica un sujeto suele referirse a un proceso o un thread mientras que un objeto sería un archivo, directorio, puerto tcp/udp, etc. Un sistema operativo revisa cualquier acción de cualquier sujeto contra un conjunto de políticas para determinar si la acción se puede llevar a cabo. DAC (Discretionary Access Control) Linux implementa esta estrategia por defecto. Restringe el acceso a objetos basados en la identidad o los grupos al que pertenece el sujeto. El acceso es discrecional ya que un sujeto con un permiso particular puede pasarle su permiso a otro sujeto GNU/Linux Seguridad Linux Security Modules (LSM) Es un framework que presenta distintos módulos para evitar favoritismo por una implementación en particular. Cada uno de estos módulos implementa un MAC como sistema de acceso de control. Los siguientes módulos están integrados en el kernel de Linux desde la versión 2.6: ● ● ● ● SELinux TOMOYO Linux AppArmor Smack (Usado en el proyecto Tizen) GNU/Linux Bibliografía [1] http://personales.ya.com/aj2r/Planificador.pdf [2] http://www.fing.edu.uy/inco/cursos/tso/teorico/TSO-Planificador.pdf [3] http://www.infor.uva.es/~fjgonzalez/apuntes/Tema4.pdf [4] http://es.scribd.com/doc/31000802/LINUX-Gestion-de-Procesos [5]http://smultiprocesadorydistribuidos.wikispaces. com/EJEMPLO+SISTEMA+OPERATIVO+MULTIPROCESADOR+DEBIANLINUX [6] http://www.escomposlinux.org/wwol26/wwol26.html [7] http://nthur.lib.nthu.edu.tw/bitstream/987654321/6898/12/432011.pdf [8]http://www.ibiblio.org/pub/linux/docs/LDP/system-adminguide/translations/es/html/ch03s02.html [9] http://www1.frm.utn.edu.ar/soperativos/Archivos/nucleolinux.pdf [10]http://recursostic.educacion.es/observatorio/web/ca/software/software-general/562elvira-misfud- UNIVERSIDAD SIMÓN BOLÍVAR SISTEMAS DE OPERACIÓN II Abril-Julio 2013 Profesora: Yudith Cardinale Cluster Mónica Del Río Germán León Juan Arocha Matteo Ferrando Cluster Temas: ● ● ● ● ● ● Definición y Conceptos Relevantes Historia Ventajas / Desventajas Clasificación Componentes: ○ Nodos ○ Almacenamiento ○ Sistemas operativos ○ Conexiones de red ○ Middleware ○ Protocolos de comunicación y servicios ○ Aplicaciones ○ Ambientes de programación paralela Sistemas de clústeres implementado Cluster Definición y Conceptos Relevantes ● Conjuntos o conglomerados de computadoras construidos mediante la utilización de hardwares comunes y que se comportan como si fuesen una única computadora. ● Un clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio. Cluster Definición y Conceptos Relevantes Un cluster consiste en un tipo de sistema de procesamiento paralelo o distribuido, compuesto por un conjunto de computadoras que trabajan cooperativamente como un único e integrado recurso de cómputo Cluster Definición y Conceptos Relevantes ● Alto rendimiento: altas prestaciones en cuanto a capacidad de cálculo ● Alta disponibilidad: es la capacidad de estar presente, de estar listo en un determinado momento en el que se quiere hacer uso. ● Balanceo de carga: técnica usada para compartir el trabajo a realizar entre varios procesos, ordenadores, discos u otros recursos. ● Escalabilidad: capacidad de un equipo de hacer frente a volúmenes de trabajo cada vez mayores, sin dejar por ello de prestar un nivel de rendimiento aceptable. Cluster Historia ● Las redes de conmutación de paquetes fueron conceptualmente inventados por la corporación RAND en 1962. ● Gene Amdahl de IBM, en 1967 publicó la Ley de Amdahl que describe matemáticamente el aceleramiento que se puede esperar paralelizando cualquier otra serie de tareas realizadas en una arquitectura paralela. ● El proyecto ARPANET logró crear en 1969 lo que fue posiblemente la primera red de computadoras básico basadas en el clúster de computadoras Cluster Historia ● ● ● ● ● En 1983 los protocolos y herramientas para el trabajo remoto, que facilitaron la distribución y el uso compartido de archivos, fueron definidos (en gran medida dentro del contexto de BSD Unix, e implementados por Sun Microsystems). El primer producto comercial de tipo clúster fue ARCnet, desarrollada en 1977 por Datapoint. 1984 VAXcluster produce el sistema operativo VAX/VMS. En 1994 se crea Tandem Himalaya. IBM S/390 Parallel Sysplex se crea en 1994, principalmente para el uso de la empresa. Cluster Historia ● ● ● PVM (parallel virtual machine: ‘máquina virtual paralela’). En 1993 se inicia un proyecto de la NASA para construir supercomputadoras de clústeres. En 1995, la invención de la Beowulf una granja de computación. Cluster Ventajas ● Mayor velocidad de computación, al interactuar un gran número de computadoras como si de una sola se tratase. "Procesamiento en paralelo" ● Mayor disponibilidad, evita la no disponibilidad de un sitio web, por la caída de uno de sus servidores al direccionar su contenido directamente a otro servidor. ● Ahorro en infraestructura Cluster Desventajas ● Requieren en muchos casos de un elevado nivel de conocimientos para su montaje y configuración. ● En muchos casos, para alcanzar capacidades de procesamiento similares a las de equipos actuales se requiere un gran espacio para el elevado número de computadoras. ● Existen muchos programas los cuales son incompatibles para procesar en paralelo, o no son capaces de migrar el 100% de los procesos. Cluster Clasificación ● High Performance o Alto Rendimiento ● High Availability o Alta Disponibilidad ● High Reliability o Alta Confiabilidad ● Homogéneos ● Heterogéneos Cluster Clasificación: High Performance o Alto Rendimiento El objetivo es mejorar el rendimiento, de tiempo o precisión, para la solución de un problema, que pueden ser de este tipo: ● Cálculos matemáticos ● Mejora de gráficos ● Compilación de programas ● Descifrado de códigos ● Rendimiento del sistema operativo Cluster Clasificación: High Availability o Alta Disponibilidad Están destinados a mejorar los servicios que ofrecen las empresas de cara a los clientes de una red, ya sea local o de internet. Fundamentalmente tienen dos características: ● Fiabilidad ● Disponibilidad Cluster Clasificación: High Reliability o Alta Confiabilidad Con alta confiabilidad se trata de aportar la máxima confianza en un entorno en el cual se necesita saber que el sistema siempre se va a comportar de una forma determinada, como por ejemplo sistemas de respuesta a tiempo real. Suele ser usado para entornos de tipo empresarial, necesitando un hardware especializado. Cluster Clasificación ● Clúster homogéneo: tienen todos la misma configuración de hardware y sistema operativo. ● Clúster semihomogéneo: diferente rendimiento pero con arquitecturas y sistemas operativos similares. ● Clúster heterogéneo: tienen hardware y sistema operativo diferente Cluster Componentes ● ● ● ● ● ● ● ● Nodos Almacenamiento Sistemas operativos Conexiones de red Middleware Protocolos de comunicación y servicios Aplicaciones Ambientes de programación paralela Cluster Componentes: Nodos ● Cada una de las máquinas involucradas es un nodo. ● Pueden ser simples computadoras, sistemas multiprocesador o estaciones de trabajo. ● Dedicados / no dedicados. ● ○ Exclusividad de uso por la máquina "maestro". ○ La máquina "maestro" usa los ciclos de reloj libres de las máquinas "esclavos". Similitud ○ Arquitectura ○ Sistemas operativos Cluster Componentes: Almacenamiento Comparten la capacidad de almacenamiento, logrando un gran disco duro distribuido entre todos los nodos del clúster ● ● Se comunican usando el protocolo NFS (Network File System) Puede consistir de ○ NAS(Network-Attached Storage) ■ Comparte la capacidad de un servidor con clientes a través de una red. ■ Todos los nodos acceden a un NAS Head, que actúa como interfaz entre los clientes. ■ Hacen peticiones de archivos al NAS Head y trabajan con estos localmente. ■ Normalmente usa el protocolo TCP/IP ■ Hacen uso del tráfico de la red de clústeres. ○ SAN(Storage Area Network) ■ Consta de una red de alta velocidad, un equipo de interconexión y discos duros. ■ Tráfico de datos es totalmente independiente del tráfico de usuario, es una conexión dedicada. ■ Brinda mayor velocidad, seguridad y fiabilidad. Cluster Componentes: Sistemas Operativos ● Para un clúster se debe contar con un sistema operativo multiproceso y multiusuario. ● Debe tener tolerancia a fallos y capacidad de recuperación después de una falla, los procesos activos en el resto del sistema deben haciendo caso omiso al error. ○ Cuando deja de funcionar apropiadamente un nodo. ○ Cuando quitan un nodo del clúster. ● Es importante la escalabilidad y que esté altamente disponible. ● Logrando ver al sistema como una sola máquina, para el usuario y para la red. Cluster Componentes: Sistemas Operativos Algunos sistemas operativos para clúster para Unix son: ● ● ● ● Solaris MC ○ Desarrollado en Sun Microsystems ○ Implementado como una extensión del sistema base Solaris. UnixWare ○ Desarrollado en Lancaster University, 1990s ○ Basado en UnixWare 7 MOSIX ○ Desarrollado en The Hebrew University of Jerusalem, 1990s ○ Adapta el kernel Linux/UNIX para tener capacidades de clúster. GLUnix ○ Desarrollado en la Universidad de California, 1980s ○ Basado en Solaris 2.3-2.6 Cluster Componentes: Conexiones de red Hay diversas maneras de hacer llevar a cabo la conexión entre nodos del clúster ● ● Ethernet ○ La forma más básica de conexión. ○ Actualmente es la más utilizada por su bajo costo. ○ Normalmente con un ancho de banda de 1 Gbit/s ○ Latencia de 30 a 100 µs ( 1 s = 1.000.000 µs) Myrinet (2000 / Myri-10G) ○ Tiene ancho de banda de 2 Gbit/s (2000) a 10 Gbit/s (10G) ○ Tiene una latencia de 3 a 10 µs ○ La red de baja latencia más usada en clústeres Cluster Componentes: Conexiones de red ● InfiniBand ○ Deriva de un estándar desarrollado específicamente para comunicación en clústeres. ○ Con agregación de canales, que puede ser en grupos de 4 o de 12, se alcanzan niveles de ancho de banda increibles. ○ Tiene diferentes tasas de transferencia de datos. ○ Con una tasa de transferencia de datos EDR (Enhanced Data Rate) y una agrupación de 12 canales se logra un ancho de banda de 300 Gbit/s ○ Lo logra permitiendo que varios nodos usen la red al mismo tiempo. ○ Define conexiones entre un nodo de computación, que lleva a cabo los cálculos, y un nodo de I/O, para almacenamiento de datos generados o lectura de datos necesarios Cluster Componentes: Conexiones de red ● SCI (Scalable Coherent Interface) ○ Tiene una latencia de 1,43 µs ○ Ancho de banda de 5333 Mbit/s ○ No necesita un conmutador (switch) ○ Adecuada para clústeres de mediano o pequeño tamaño ○ Se pueden llevar a cabo todas las comunicaciones a través de SCI-SOCKETS, dejando transparencia al usuario Cluster Componentes: Middleware El middleware es un software que se encuentra entre el sistema operativo y las aplicaciones. En un cluster se utiliza para proveer al mismo lo siguiente: ● Proveer una interfaz única de acceso al sistema conocida como SSI (Single System Image). ● Herramientas para optimización, mantenimiento y administración del sistema. Debe permitir manejo de procesos, balanceo de cargas, tolerancia a fallos, etc. ● Escalabilidad. Cluster Componentes: Middleware Existen varias implementaciones de middleware para clústeres, entre las más populares se encuentran: ● MOSIX (Propietario) es un sistema operativo distribuido. ● LinuxPMI: Linux Process Migration Infrastructure está basado en el abandonado proyecto OpenMOSIX (Open Source) el cual a su vez fue un fork de MOSIX cuando este pasó a ser propietario. ● HTCondor (anteriormente llamado Condor). ● OpenSSI: es un software de para clusters que permite tratar a un conjunto de computadoras como si fuera un único gran computador. Cluster Componentes: Aplicaciones Los clusters son utilizables en muchas situaciones en donde se requieran de una gran cantidad de recursos como lo son: ● Aplicaciones científicas: simuladores, genómica computacional, predicción meteorológica, simulación de corrientes y vertidos en el mar, aplicaciones en química computacional. ● Aplicaciones empresariales: se utiliza para empresas que requieren alta disponibilidad y entrega inmediata. Es usual que en un cluster se aloje un sistema que maneje varios servicios, por ejemplo, en un nodo puede estar alojado el manejador de bases de datos, en otro nodo el servidor web y así sucesivamente mientras más servicios sean manejados. Ejemplos de estos son: Flickr , Wikipedia, Google, etc. Cluster Componentes: Ambientes de programación paralela Librerías ● Atlas: es una implementación mejorada del estándar BLAS (Basic Linear Algebra Subproblems) con algunas rutinas LAPack adicionales. Maneja cálculos vectoriales, gráficos y de álgebra lineal. ● GSL (GNU Scientific Library) es un extenso conjunto de rutinas para cómputos numéricos y científicos orientada a programadores del lenguaje C. ● GMP (GNU Multiple Precision Library): es utilizada para permitir el manejo exacto de muy grandes y muy pequeños números enteros, racionales y reales. Cluster Componentes: Ambientes de programación paralela Hay distintos modelos de programación paralela pero el más común, particularmente en clusters Linux es el paso de mensajes. Las dos especificaciones más populares para el paso de mensajes son: ● PVM (Parallel Virtual Machine) ● MPI (Message Passing Interface) Ambas definen especificaciones para crear librerías y APIs que puedan ser usadas en distintos lenguajes como Fortran, C, C++, Python, Java, entre otros. MPI, el cual es más nuevo que PVM, tiene algunas ventajas y es considerado un open standard, las implementaciones más populares de éste son LAM (Local Area Multicomputer) y MPICH. Cluster Sistemas de clústeres implementado ● ● ● ● Google RoadRunner IBM (Los Álamos National Laboratory): ○ 122400 cores ○ 1042-1375 TFlops/s ○ 2345 KW de poder ○ Linux ○ 22 top 500 Noviembre 2012 Beowulf: Formado a partir de hardware de bajo costo y con sistemas operativos en base a Unix PS2: 70 consolas play station 2, con sistema operativo Sony Linux Kit Cluster Sistemas de clústeres implementado Google RoadRunner Cluster Sistemas de clústeres implementado Ps2 Cluster Beowulf Cluster Bibliografía [1] http://es.wikipedia.org/wiki/Cluster_(informática) [2] http://root-neztgul.blogsp ot.com/2008/11/sistemas-distribuidos-cluster.html [3] http://wwwclusterinformatica.blogspot.com/2011/05/cluster-informatica.html [4] http://www.telefonica.net/web2/victormn128/cluster_cinco.htm [5]http://www.ibiblio.org/pub/linux/docs/LuCaS/Manuales-LuCAS/doc-clustercomputadoras/doc-cluster-computadoras-html/node7.html [6]http://icaro.eii.us.es/descargas/segunda%20parte%20Sistemas%20Multiprocesadores% 202006_2007.pdf [7] http://www.fing.edu.u://es.m.wikipedia.org/wiki/Cl%C3%BAster_(inform%C3%A1tica) [8] http://www.fing.edu.uy/inco/cursos/hpc/material/clases/Clusters.pdf [9] http://www.uhu.es/josem.bravo/AD/Tema3.pdf [10] http://technet.microsoft.com/es-es/library/bb124225(v=exchg.65).aspx [11] http://www.ac.uma.es/~sromero/ad/AD4_Clusters.pdf [12] http://xxito.files.wordpress.com/2008/11/trabajo-final-beowulf.pdf