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.
k+m, espejo, unión, concatenación
y lineal, la única que suma capacidades desigualeslineal 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 tantolineal 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 cabeEl 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.
| Tengo cuentas sueltas en varios sitios | Un solo volumen sobre todas, cifrado y con RAID |
| Si el proveedor me suspende la cuenta, lo pierdo todo | Paridad k de n: sobrevive a la pérdida de m proveedores |
| El proveedor puede leer mis archivos | Cifrado en cliente, nombres incluidos |
| Vendor lock-in | Añ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.
Cada archivo se corta en trozos de 16 MiB, direccionados por su hash BLAKE3. Copy-on-write: nada se sobrescribe jamás.
Reed-Solomon k+m. Con rs(4,2) sobre 6 proveedores sobrevives a 2 caídas con 1,5× de sobrecoste.
XChaCha20-Poly1305 por trozo, clave derivada con Argon2id. El proveedor ve blobs opacos.
WinFsp en Windows, FUSE en Linux. En lectura y escritura, con caché y subida en segundo plano.
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.