Ya, ya lo se :) Aún así, en mi caso la carpeta contiene una mayoría de
archivos de los que sólo se va a leer, no escribir, y muchos son muy
grandes, por lo que un COW, aún a nivel de archivo, haría ganar mucha
velocidad igual. Además, la idea es tener un único snapshot al que
volver, por lo que no importa que se modifique varias veces un mismo
archivo, sólo se copiará una vez para poder volver al inicial, al de
antes de comenzar todas las operaciones.
De todas formas, al final me puse y terminé ya un prototipo de sistema
de ficheros para FUSE que hace lo que quiero. Ahora toca empezar las
pruebas y depurar.
Gracias de todas formas.
El 27/09/15 a las 08:00, NoSpaze escribió:
On Sat, 2015-09-26 at 18:39 +0200, Sergio Costas
wrote:
El problema es que la copia inicial es muy lenta,
tarda demasiado
tiempo.
Si tienes un archivo grande y cambias un bit, sólo hay dos posibilidades
para volver a la versión original: sea restituir el bit o sea restituir
el archivo completo. La decisión la tomas tú, en función de tus
prioridades, y cada opción tiene sus implicaciones.
Si tu prioridad es la velocidad, tendrás que trazar la modificación
(sino solo le has cambiado el enfoque al problema) y restituir el bit.
Lo que puede resultar complejo. Personalmente, no sé si hay sistemas de
versionamiento a nivel de contenidos internos de un archivo. Sería
interesante saberlo. Si existen, tu problema está resuelto.
Si tu prioridad es la sencillez, probablemente puedes restituir todo el
archivo, a costo de la lentitud.
La idea de copy on write es buena, pero sólo te lleva a una solución
incompleta. Si modificas un bit sobre un archivo grande, la copia
seguirá causando demoras. Eso sí, parece mucho más fácil. Qué pasa si
llega una nueva modificación al mismo bit?
Por otro lado los sistemas de bases de datos -hasta donde entiendo-
básicamente almacenan un registro de cambios en memoria RAM hasta que
llega el commit, que es cuando se guarda una nuevo estado de la base.
Talvez algún conocedor de DBMS puede darte luces sobre esto. podrías
representar los archivos en una base de datos (dividirlos en small
chunks permitiría manejarlos con rapidez), modificarlos ahí y
simplemente aplicar los commit... Puedo equivocarme en esto, sólo los
conozco a nivel de usuario.
Saludos.
----------------------------------------------
Rodolfo Alcazar Portillo - rodolfoap(a)gmail.com
otbits.blogspot.com /
counter.li.org: #367962
----------------------------------------------
Freedom is not to being able to choose options. Freedom is being able to
create options.
_______________________________________________
GALPon mailing list
GALPon(a)listas.galpon.org
https://listas.galpon.org/listinfo/galpon
--
Nos leemos
RASTER (Linux user #228804)
raster(a)rastersoft.com
http://www.rastersoft.com