Pre-alfa · ya se monta

MultiDrive

Una sola unidad. Muchas nubes.

MultiDrive agrega varios servicios de almacenamiento en la nube —S3, Backblaze B2, Cloudflare R2, Storj, Nextcloud/WebDAV, Google Drive, OneDrive— en un único volumen con semántica tipo RAID y cifrado de conocimiento cero. El objetivo es que se monte como una unidad más del sistema en Windows y Linux, y ya lo hace: abajo se explica exactamente qué está probado y qué no.

Si RAID convirtió varios discos poco fiables en un volumen fiable, MultiDrive hace lo mismo con varias cuentas de nube: ningún proveedor tiene tus datos completos, ninguno puede leerlos, y la caída de uno no te deja sin volumen.

Estado

Funciona y está probado

  • Cifrado por trozo. XChaCha20-Poly1305 con clave Argon2id, nombres de fichero incluidos
  • Cinco topologías. Reed-Solomon k+m, espejo, unión, concatenación y lineal, la única que suma capacidades desiguales
  • Se monta como una unidad. WinFsp en Windows y FUSE en Linux, en lectura y escritura: el Explorador lista carpetas y cualquier programa abre ficheros
  • Interfaz de escritorio. Añadir proveedores, crear el volumen, montarlo, revisar su salud, ver cuánto espacio queda en cada cuenta, ampliarlo con una cuenta más y retirarlo
  • Conectar una cuenta de nube es pulsar un botón. Se abre el navegador, entras en tu cuenta y das permiso; tus credenciales no pasan por MultiDrive. A Google se le pide solo acceso a los ficheros que MultiDrive crea, no al resto de tu Drive
  • Rebalanceo. Añadir o retirar proveedores eligiendo qué priorizar, sin dejar de poder leer el volumen mientras tanto. Retirar funciona aunque la cuenta ya no responda
  • Ampliar un volumen lineal cuesta lo que aporta la cuenta nueva. Añadir una cuenta de 15 GB a un volumen de 1 TB mueve unos 15 GB, no el terabyte: solo cambia de sitio la fracción que le toca al que llega, y el volumen se sigue leyendo mientras tanto
  • Escritura diferida con diario. Escribir vuelve enseguida y un hilo de fondo sube; nunca se publica una raíz que apunte a trozos que no están arriba todavía
  • Caché en memoria y en disco. La de disco guarda los trozos cifrados y sobrevive al reinicio. Releer 7,6 MiB pasa de 2 718 ms a 23 ms
  • Instalador para Windows que trae WinFsp, y servicio: la unidad se conecta desde el Explorador y Windows pide la frase de paso, que no se guarda
  • Rescate. Si se pierde el puntero de raíz, el volumen se reconstruye enumerando y descifrando lo que quede en los proveedores
  • Google Drive y OneDrive pasan la suite de conformidad contra cuentas reales, y hay un volumen real probado de punta a punta sobre las dos

Todavía no

  • No hay versión publicada. El formato en disco puede cambiar sin aviso
  • Los instaladores no van firmados. Windows los anuncia como de editor desconocido hasta que haya un certificado
  • De un volumen lineal no se puede retirar un proveedor. Añadirlos sí. Retirar obliga a colocar en los que quedan todo lo que tenía el que se va, y antes hay que comprobar que les cabe
  • No hay índice local. Recorrer el árbol paga una petición por nivel
  • Un solo escritor. Varias máquinas escribiendo a la vez está fuera de alcance

Medido, no prometido

El proyecto se apoya en medidas contra cuentas reales, no en estimaciones. Y también en lo que no se reprodujo al repetirlas:

En Google Drive, preguntar por un objeto que no existe cuesta 2,6 veces una operación normal Es su peor caso, y es justo lo que hace revisar un volumen. Por eso la revisión enumera en vez de preguntar, y pasa de semanas a minutos
Enumerar cuesta una petición por directorio, no una en total Drive y OneDrive son jerárquicos. El reparto de los trozos en carpetas tiene un precio que hay que medir antes de fijarlo
Ninguna proporción entre las dos nubes ha sobrevivido a tres tandas de medidas Una salió 4,7×, 1,6× y 2,5×; otra cambió de sentido. Se miden proporciones dentro de un proveedor, que sí se repiten, y se desconfía de las que comparan dos

La prueba que importa, hecha contra cuentas reales: un volumen rs(2,1) repartido entre Google Drive, OneDrive y un disco local. Se sube un fichero, se destruye un proveedor entero, el fichero se sigue leyendo byte a byte idéntico, y rebuild regenera los fragmentos que faltaban en 34 segundos. Con una salvedad honesta: fue 1 MB, no 10 GB.

Qué resuelve

Tengo cuentas sueltas en varios sitiosUn solo volumen sobre todas, cifrado y con RAID
Si el proveedor me suspende la cuenta, lo pierdo todoParidad k de n: sobrevive a la pérdida de m proveedores
El proveedor puede leer mis archivosCifrado en cliente, nombres incluidos
Vendor lock-inAñade o retira proveedores y el volumen se rebalancea

Sobre el espacio, elige la topología sabiendo esto. Las que reparten cada trozo entre todos —espejo, paridad, unión— están limitadas por el proveedor con menos sitio: los fragmentos son iguales, así que cuando el más pequeño se llena no cabe nada más aunque a los otros les sobre. Con 15 GB, 5 GB y 1 TB salen 5 GB en espejo y 15 GB en unión. Solo lineal suma: pone cada trozo entero en un proveedor, elegido en proporción a lo que cada uno aporta, y con esos mismos números da 1,02 TB. A cambio no añade ni una caída de margen, igual que unión.

Cómo funciona

Trozos inmutables

Cada archivo se corta en trozos de 16 MiB, direccionados por su hash BLAKE3. Copy-on-write: nada se sobrescribe jamás.

Erasure coding

Reed-Solomon k+m. Con rs(4,2) sobre 6 proveedores sobrevives a 2 caídas con 1,5× de sobrecoste.

Cifrado en cliente

XChaCha20-Poly1305 por trozo, clave derivada con Argon2id. El proveedor ve blobs opacos.

Montaje nativo

WinFsp en Windows, FUSE en Linux. En lectura y escritura, con caché y subida en segundo plano.

Topologías

modo        fórmula                 sobrevive a   sobrecoste
concat      1 de 1                  nada          1,0×
union:n     n de n                  nada          1,0×
lineal:n    1 de 1, donde le toque  nada          1,0×
espejo:n    1 de n                  n−1 caídas    n×
rs(k,m)     k de k+m                m caídas      (k+m)/k ×

lineal es la única que suma capacidades desiguales: pone cada trozo entero en un proveedor, elegido en proporción a lo que aporta. Las demás cortan cada trozo en partes iguales, así que manda el más pequeño. Leer cuesta una petición en vez de n, y añadir un proveedor mueve solo la fracción que le toca en vez del volumen entero. No añade ni una caída de margen.

Qué NO es