Todos sabemos que Google es una compañía multimillonaria y es uno de los gigantes en el mundo de Internet (y en otros escenarios). La compañía trabaja con un sistema de computación distribuido para proveer a los usuarios con la infraestructura que necesitan para acceder, crear y alterar datos. Sabiendo esto, podemos imaginar que Google tiene unos servidores y ordenadores súper especiales para poder dar estos servicios.
Lo cierto es que las máquinas que tiene Google no son súper ordenadores como podemos pensar. Son máquinas relativamente baratas que funcionan en sistemas Linux.
¿Cómo puede una de las compañías más influyentes en la Web usar hardware de bajo coste? Esto es debido al sistema de ficheros de Google (GFS), que es capaz de capitalizar los puntos fuertes de los servidores, mientras compensa cualquier debilidad en el hardware. Todo está en el diseño.
Google usa GFS para organizar y manipular ficheros grandes y permitir a los desarrolladores de aplicaciones tener los recursos necesarios para investigar y hacer su trabajo. Este sistema es único a Google y no es algo que está a la venta. Sin embargo, podría servir de modelo para los sistemas de ficheros de organizaciones con necesidades similares.
Algunos detalles del sistema GFS permanecen como un misterio para cualquiera que esté fuera de Google. Por ejemplo, Google no dice cuantos ordenadores usa para que funcione el sistema. Oficialmente, la compañía solo dice que hay “miles” de ordenadores en el sistema. A pesar de este secretismo, Google ha hecho pública una buena parte de la estructura GFS.
Por lo tanto, ¿qué es el sistema GFS y por qué es tan importante? Los desarrolladores de Google tienen que manejar archivos muy grandes diariamente, los cuales pueden llegar a ser muy difíciles de manejar usando un sistema de ficheros tradicional. El tamaño de estos archivos hizo que fuera necesario crear un diseño nuevo que fuera operativo.
Otra preocupación era la escalabilidad, lo cual se refiere a la facilidad de añadir capacidad al sistema. Un sistema es escalable si es fácil aumentar la capacidad del sistema. El rendimiento del sistema no debería sufrir según crece. Google requiere una gran red de ordenadores para poder manejar todos estos ficheros, por lo que la escalabilidad es una de sus prioridades.
Al ser la red tan grande, monitorizarla y mantenerla es todo un desafío. Mientras se estaba desarrollando el sistema GFS, los programadores decidieron automatizar la máximo posible las tareas administrativas requeridas para mantener toda la estructura. Este es el principio clave de la computación autonómica, un concepto donde los ordenadores son capaces de diagnosticar problemas y resolverlos en tiempo real sin la necesidad de intervención humana.
El desafío del equipo encargado del GFS no solo era crear un sistema de monitorización automático, sino también diseñarlo para que pudiese trabajar en un inmensa red de ordenadores.
La clave del diseño del equipo fue el concepto de simplicidad. Llegaron a la conclusión de que según el sistema crece y se hace más complejo, los problemas aparecen más frecuentemente. Un concepto simple es más fácil de control incluso si el sistema es gigantesco. Basándose en esta filosofía, el equipo encargado de GFS decidió que los usuarios tuvieran acceso a comandos de ficheros básicos. Los comandos que se incluyeron fueron “open”, “create”, “read”, “write” y “close”.
También se incluyeron algunos otros comandos más especializados, algunos basándose en las necesidades de la compañía. Por ejemplo, el comando “append” permite a los clientes añadir información a un fichero existente sin sobrescribir datos que estaban previamente escritos. El comando “snapshot” crea una copia rápida del contenido de un ordenador.
Como se ha dicho, los archivos en un sistema GFS tienden a ser muy grandes. Acceder y manipular archivos de este tamaño podían ocupar mucho ancho de banda en la red. El ancho de banda es la capacidad del sistema para mover datos de una localización a otra. GFS maneja este problema partiendo los archivos en pequeños ficheros de 64 MB cada uno. Cada trozo de fichero recibe un número identificativos para diferenciarlos. Mientras que GFS puede procesar archivos más pequeños, los desarrolladores no optimizaron el sistema para este tipo de tareas.
Al requerir que todos los trozos de fichero sean del mismo tamaño, el sistema GFS simplifica los recursos de la aplicación, Es fácil ver qué ordenadores en el sistema están cerca de su máxima capacidad y cuales están poco usadas.
Es también fácil balancear los pequeños ficheros entre recursos y así distribuir el trabajo de forma eficiente. ¿Cuál es el diseño real de GFS? Haz clic en el botón para verlo: