Migración de archivos binarios
La próxima versión principal6.0 de Server Pro y Community Edition reducirá a la mitad el uso de almacenamiento de los archivos binarios. La versión 5.5.7 incluye una migración en línea, que permite un tiempo de inactividad mínimo como parte de la actualización.
Desde Server Pro 4.x, los archivos binarios se almacenan dos veces: en el almacenamiento de archivos activos de “filestore” y en el sistema de historial completo de los proyectos. A partir de ahora, se almacenará una única copia de cada archivo en el sistema de historial completo de los proyectos.
La migración al sistema de almacenamiento consolidado consta de dos partes: un nuevo indicador para controlar la fase de la migración y un script que procesa todos los proyectos activos y eliminados de forma no definitiva (soft-deleted).
Fases:
OVERLEAF_FILESTORE_MIGRATION_LEVEL=0(predeterminado): los archivos se leen y escriben en filestore. Los archivos se escriben en el historial de forma asíncrona.OVERLEAF_FILESTORE_MIGRATION_LEVEL=1: los archivos se leen del historial, con filestore como alternativa, y se escriben tanto en filestore como en el historial. Es posible volver aOVERLEAF_FILESTORE_MIGRATION_LEVEL=0.OVERLEAF_FILESTORE_MIGRATION_LEVEL=2: los archivos se leen y escriben únicamente en el historial. No es posible volver aOVERLEAF_FILESTORE_MIGRATION_LEVEL=1, a menos que la migración se haya realizado “sin conexión”.
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) y el historial (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID): concede al usuario de filestore acceso de lectura al bucket del historial para blobs OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET. A partir de ahora, el servicio filestore atenderá las lecturas del servicio de compilación.
La licencia estándar de Server Pro te permite ejecutar la aplicación en un entorno de producción y también en uno que no sea de producción/sandbox; se recomienda encarecidamente que aprovisiones un entorno que no sea de producción para las pruebas.
Si actualizas a la versión
6.0 de Server Pro/CE y más adelante decides volver a una versión anterior, deberás restaurar a partir de una copia de seguridad completa del sistema.Procedimiento de migración
1
Crear una copia de seguridad
Crea una copia de seguridad completa de tu instancia con una instantánea coherente de los directorios mongo, redis y sharelatex.
2
Actualizar
Toolkit: usa el script
$ bin/upgrade para actualizar el toolkit a la última versión. Cuando se te pregunte, no confirmes la pregunta Upgrade image?; en su lugar, edita manualmente el archivo config/version y establece el valor en 5.5.7.docker-compose.yml heredado: actualiza la versión del servicio sharelatex a 5.5.7.3
Estimar el número de proyectos afectados
4
Vaciar las colas del historial de proyectos
"project_ids":0).Si “failedProjects” no es cero, contacta con el soporte y no continúes con la migración de archivos binarios.
5
Avanzar la fase de migración a 1
Toolkit: establece
OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 en config/variables.env.docker-compose.yml heredado: establece OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' en la sección environment del servicio sharelatex.6
Aplicar el cambio de configuración e iniciar la instancia
Toolkit:
bin/up -ddocker-compose.yml heredado: docker compose up -d7
Verificar el acceso a los archivos binarios
Abre un proyecto en el editor de Overleaf en el navegador y selecciona un archivo binario, como una imagen.
8
Ejecutar el script de migración
Si conservas los archivos de log fuera del contenedor sharelatex, asegúrate de que el propietario del directorio de logs sea el usuario
www-data (uid=33) para que se pueda escribir el archivo de log generado.0 y las últimas líneas indicarán que no hay errores:9
Detener la instancia
Toolkit:
bin/stop sharelatexdocker-compose.yml heredado: docker compose stop sharelatex10
Hacer que los archivos antiguos sean inaccesibles para la aplicación
Ahora puedes mover los archivos antiguos a un almacenamiento secundario. Te recomendamos conservar los archivos durante un tiempo por si surgen problemas más adelante.
11
Avanzar la fase de migración a 2
Toolkit: establece
OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 en config/variables.env.docker-compose.yml heredado: establece OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' en la sección environment del servicio sharelatex.12
Aplicar el cambio de configuración e iniciar la instancia
Toolkit:
bin/up -ddocker-compose.yml heredado: docker compose up -d13
Verificar el acceso a los archivos binarios
Abre un proyecto en el editor de Overleaf en el navegador y selecciona un archivo binario, como una imagen.
Migración sin conexión
Si quieres impedir que los usuarios puedan iniciar sesión mientras se ejecuta el script de migración de archivos binarios, sigue estos pasos:- Inicia sesión en tu instancia de Overleaf con una cuenta de administrador
- Haz clic en el botón Admin y elige Manage Site
- Haz clic en la pestaña Open/Close Editor
- Haz clic en el botón Close Editor
- Haz clic en el botón Disconnect all users
Migración en línea
Es posible ejecutar los scripts de migración mientras la aplicación sigue en funcionamiento. Hay algunas consideraciones que debes tener en cuenta:- El proceso de migración hace un uso intensivo de E/S; debes supervisar el uso de recursos mientras se ejecuta el script.
- Con una concurrencia de procesamiento alta, el bucle de eventos del servicio
filestorepodría sufrir algunos bloqueos, lo que empeoraría la experiencia de usuario. Te recomendamos empezar con los valores predeterminados--concurrency=10y--concurrent-batches=1. - Puedes detener el script en cualquier momento. Al volver a iniciarlo, validará los proyectos anteriores y omitirá los archivos que ya se hayan procesado. Esto resulta útil si prefieres ejecutar la migración en horas de menor actividad (p. ej., por la noche).
--report). Si el número de proyectos es elevado, puedes ejecutar el script y supervisar su progreso, y luego decidir si continuar ejecutándolo en línea o sin conexión según tu caso particular.
Limpiar los datos heredados de archivos binarios
Cuando hayas terminado la migración y verificado que los proyectos siguen pudiendo acceder a todos sus archivos, puedes eliminar el almacenamiento de archivos antiguo en/var/lib/overleaf/data/user_files. Te recomendamos encarecidamente conservar estos archivos durante un tiempo; puedes hacerlos inaccesibles para la aplicación renombrando primero la carpeta.
Solución de problemas
Añadiremos aquí consejos para la solución de problemas. Ten en cuenta que, aunque normalmente solo ofrecemos soporte a los clientes de Server Pro, dada la naturaleza de esta migración, también haremos lo posible por ayudar a los clientes de CE que tengan problemas específicos de la migración de archivos binarios. Si el script de migración de archivos binarios falla (es decir, sale con un error o muestra un número de proyectos fallidos distinto de cero), envía los siguientes detalles a nuestro equipo de soporte por correo electrónico a support+filestoremigration@overleaf.com, indicando: Asunto: Binary file migration problem Cuerpo:- Tipo de instancia: CE o Server Pro (elimina lo que no corresponda)
- Tipo de instalación: Overleaf toolkit,
docker-compose.ymlu otro (elimina lo que no corresponda) - Versión: 5.5.x (toolkit:
$ cat config/version) - Salida del script de migración (que debería encontrarse en el contenedor en
/var/log/overleaf) - Informe: (ejecuta el script de migración con
--report) - Proyectos procesados: (según la última ejecución del script)
- Duración de la migración:
- Salida de
bin/doctor(si usas el toolkit) - Versión del Toolkit:
$ git rev-parse HEAD(si usas el Toolkit)
filestore. Puedes encontrarlos en /var/log/overleaf/filestore.log dentro del contenedor sharelatex y exportarlos así:
Archivos que faltan
Las versiones anteriores de Server Pro/CE creaban las entradas del árbol de archivos antes de que terminaran las subidas de los usuarios, lo que podía hacer que los archivos aparecieran como ausentes cuando una subida fallaba. Es posible que encuentres algunos de estos casos notificados como errores al procesar todos los árboles de archivos. Si el número de archivos que faltan es bajo, considera revisar estos casos manualmente y eliminarlos desde el editor en el navegador. Si el número de archivos que faltan es alto, considera contactar con el soporte; consulta la plantilla de correo anterior.Encontrar árboles de archivos dañados
La migración puede fallar en los proyectos que tengan un árbol de archivos mal formado (por ejemplo, con nombres de archivo vacíos). Puedes obtener una lista de estos problemas con el scriptfind_malformed_filetrees, que comprueba todos los proyectos de la base de datos:
fix_malformed_filetree, ejecutando el comando una vez por cada ruta incorrecta:

