Thundersnap: un sistema de archivos distribuido con instantáneas y replicación tipo git

Fuentes: Thundersnap: a distributed filesystem with git-like snapshots and mesh replication

Thundersnap es un proyecto experimental de Tailscale que explora un enfoque diferente al almacenamiento distribuido, basado en instantáneas con direccionamiento por contenido y replicación en malla, en lugar de sincronización en tiempo real. Su autora, Avery Pennarun, lo presenta como un 'juguete' no apto para producción y lo define como una colección de ideas, nuevas y antiguas, en el diseño de sistemas de archivos distribuidos. El nombre alude a los dos modos de fallo probables: el 'thundering herd' de su protocolo de replicación en malla y un 'Thanos Snap' que podría perder aproximadamente la mitad de los datos.

El proyecto asume que los sistemas distribuidos modernos deben apoyarse en instantáneas, ya que la sincronización continua entre réplicas distribuidas geográficamente es una ilusión por la latencia y la fiabilidad. De este modo, Thundersnap aplica a los sistemas de archivos lo que git hace con los árboles de código fuente, inspirándose además en su proyecto previo bup, de 2010. Para tomar instantáneas se apoya en btrfs, aunque su arquitectura no depende de ese sistema de archivos.

La unidad de ejecución se compone de tres instantáneas independientes: raíz (/), /home y /work, que pueden intercambiarse de forma separada. Los contenedores se lanzan mediante comandos como ts frame y ts go, con tiempos cercanos al inicio de un proceso Unix, y el sistema incorpora una función de deshacer (ts undo) que retrocede a instantáneas anteriores. Thundersnap requiere Tailscale para autenticación y replicación segura, y es compatible con Headscale, el servidor de control de código abierto.