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.