Los grandes sistemas de archivos distribuidos necesitaban tradicionalmente metadatos que indicaran dónde vivía cada bloque u objeto. A escala de petabytes, esos mapas de asignación se convertían en problemas de coordinación, recuperación y reequilibrio.

La respuesta de Ceph fue CRUSH: una función de colocación pseudoaleatoria. Los clientes y los nodos de almacenamiento podían calcular la ubicación de un objeto a partir del nombre del objeto y del mapa del clúster, en lugar de consultar una tabla central.

El artículo de OSDI informó que Ceph soportaba más de 250.000 operaciones de metadatos por segundo, y la publicación de CRUSH planteó el algoritmo para decenas o cientos de miles de dispositivos de almacenamiento evitando un directorio central.

Convertir la colocación en una función

Una función de colocación determinista permite que cada participante encuentre de forma independiente el mismo objeto.

Los pesos y las reglas de dominio de fallo preservan restricciones del mundo real, como los racks y los tamaños de los dispositivos.

Los pequeños cambios de topología mueven solo los datos que deben moverse, lo que hace que el crecimiento y los fallos sean menos disruptivos.

Eliminar las listas de asignación reduce la tarea del servidor de metadatos al espacio de nombres, no a la dirección de cada byte.

A escala extrema, eliminar la coordinación puede importar más que optimizarla; una función determinista compartida puede reemplazar un directorio mutable compartido.

CRUSH se convirtió en una de las ideas distintivas de Ceph y ayudó a hacer del proyecto un sistema de almacenamiento de código abierto duradero. Su belleza es arquitectónica: el mejor directorio a escala de petabytes era no tener directorio alguno.

CONSULTA LAS PRUEBAS

Las fuentes

  1. CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data Storage Systems Research Center, UC Santa Cruz · ssrc.us
  2. Ceph: A Scalable, High-Performance Distributed File System USENIX · usenix.org ·