martes, 22 de marzo de 2011

GFS (Sistema de Archivo Google )

El sistema de archivos de google es el cluster de computadores de propósito general más grande de la historia,la infraestructura de google soporta una cantidad masiva de usuarios, la extension continua de los datos y aplicaciones intensivas corriendo en todo tiempo.

El gran punto a favor que tiene el sistema es que en vez de construir disponibilidad a partir de cada componente a un gran costo, se construye disponibilidad alrededor de cada componente a un bajo costo.
El sistema de archivos de google permite mantener redundancia de los datos, tomar imágenes del sistema con un bajo costo para el mismo y aparte de las funciones de crear, borrar, abrir, cerrar, leer y escribir, el sistema provee de una función “añadir grabación”.

Esta última función es extremadamente importante, puesto que Google es alimentado constantemente con información de internet, lo cual implica largas escrituras secuenciales, luego, en vez de sincronizar la sobre-escritura de los datos existentes, es mejor añadir nuevos datos a los ya existentes.

Un cluster para este sistema de archivos se compone simplemente de un servidor “master” y múltiples “servidores de partes” y puede ser accesado por múltiples clientes. Cada uno de estos es simplemente en Linux (dual 2 GHz xeons con 2 GB de RAM y aproximadamente 800GB de disco), entonces estamos hablando de un bajo costo en términos del hardware ocupado.

Los archivos son divididos en partes y cada una de ellas tiene un manejador único de 64 bits. Estas partes son guardadas en el sistema de archivos local como archivos de linux. Deben existir por lo menos 3 copias de cada parte (RAID-6), estas partes en que se dividen los archivos son de 64MB dado el tamaño de los gigantescos archivos que procesa el sistema de archivos de google (estas “partes” o “trozos” serían el equivalente a los bloques o clusters de los ficheros de linux y MS).

Los Meta-datos (información que describe los datos) son guardados en el “Master”, el cual mantiene en memoria toda la información de los archivos, el mapeo de las partes que componen los archivos y la ubicación de las réplicas. Resulta que el “master” le indica a los clientes, mediante pequeños mensajes de unos cuantos bytes, cuáles son los servidoresde partes que contienen los datos que requieren. Entonces los clientes interactúan directamente con los servidores de partes sin interrogar nuevamente al “master”.

El sistema de archivos de google no usa controladoras RAID, fibra óptica, SCSI, etc;con el fin de proveer redundancia de datos … para las réplicas de los servidores (“mirroring“), todos los servidores del cluster están conectados a un switch ethernet, esto significa que cuando entra una nueva parte al servidor, éste puede comenzar a hacer las réplicas con todo el ancho de banda de la red (unos 12MB/s), sin reducir la tasa de datos entrantes, de este modo las réplicas quedan completas tan pronto como la escritura del trozo orignal termine.

En vez de estar consultando a cada servidor de partes, el “master” coloca las nuevas réplicas en servidores que tengan sus discos con un nivel de utilización bajo el promedio de todo el sistema, esto obviamente minimiza el tiempo al no tener que preguntarle a todos los servidores su estado actual y no se deben implementar extraños algoritmos.

Estas caracteristicas y muchas otras, hacen del sistema de archivos de google un sistema completamente escalable y de alta disponibilidad, transparente al usuario y con una gran tolerancia a las fallas, ya que si falla un disco, no es necesario correr a reemplazarlo. Es un sistema único en su tipo y que ha alcanzado una dimension global al estar presente en cualquier parte del planeta en cualquier momento.