Migration des fichiers binaires
La prochaine version majeure6.0 de Server Pro et de la Community Edition réduira de moitié l’espace de stockage utilisé par les fichiers binaires. Une migration en ligne est incluse dans la version 5.5.7, permettant de limiter au maximum l’interruption de service lors de la mise à niveau.
Depuis Server Pro 4.x, les fichiers binaires sont stockés deux fois : dans le stockage des fichiers actifs de « filestore » et dans le système d’historique complet des projets. Désormais, une seule copie de chaque fichier sera stockée dans le système d’historique complet des projets.
La migration vers le système de stockage consolidé se compose de deux parties : un nouvel indicateur permettant de contrôler la phase de la migration, et un script qui traite tous les projets actifs et supprimés de manière réversible (soft-deleted).
Phases :
OVERLEAF_FILESTORE_MIGRATION_LEVEL=0(par défaut) : les fichiers sont lus et écrits dans filestore. Les fichiers sont écrits dans l’historique de manière asynchrone.OVERLEAF_FILESTORE_MIGRATION_LEVEL=1: les fichiers sont lus depuis l’historique avec repli sur filestore, et écrits à la fois dans filestore et dans l’historique. Un retour àOVERLEAF_FILESTORE_MIGRATION_LEVEL=0est possible.OVERLEAF_FILESTORE_MIGRATION_LEVEL=2: les fichiers sont lus et écrits uniquement dans l’historique. Un retour àOVERLEAF_FILESTORE_MIGRATION_LEVEL=1n’est pas possible, sauf si la migration a été effectuée « hors ligne ».
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) et l’historique (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID) : accordez à l’utilisateur filestore un accès en lecture au bucket de l’historique pour les blobs OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET. Le service filestore servira désormais les lectures du service de compilation.
La licence Server Pro standard vous permet d’exécuter l’application dans un environnement de production ainsi que dans un environnement hors production/sandbox ; nous vous recommandons vivement de prévoir un environnement hors production pour les tests.
Si vous passez à Server Pro/CE version
6.0 et décidez ensuite de revenir à une version antérieure, vous devrez restaurer une sauvegarde complète du système.Procédure de migration
1
Créer une sauvegarde
Créez une sauvegarde complète de votre instance avec un instantané cohérent des répertoires mongo, redis et sharelatex.
2
Mettre à jour
Toolkit : utilisez le script
$ bin/upgrade pour mettre à jour le toolkit vers la dernière version. Lorsque la question Upgrade image? vous est posée, ne la confirmez pas — modifiez plutôt manuellement le fichier config/version et définissez la valeur sur 5.5.7.Ancien docker-compose.yml : mettez à jour la version du service sharelatex vers 5.5.7.3
Estimer le nombre de projets concernés
4
Vider les files d'attente de l'historique des projets
"project_ids":0).Si « failedProjects » n’est pas égal à zéro, contactez le support et ne poursuivez pas la migration des fichiers binaires.
5
Passer la migration en phase 1
Toolkit : définissez
OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 dans config/variables.env.Ancien docker-compose.yml : définissez OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' dans la section environment du service sharelatex.6
Appliquer la modification de configuration et démarrer l'instance
Toolkit :
bin/up -dAncien docker-compose.yml : docker compose up -d7
Vérifier l'accès aux fichiers binaires
Ouvrez un projet dans l’éditeur Overleaf depuis le navigateur et sélectionnez un fichier binaire, comme une image.
8
Exécuter le script de migration
Si vous conservez les fichiers journaux en dehors du conteneur sharelatex, assurez-vous que le propriétaire du répertoire des journaux est l’utilisateur
www-data (uid=33) afin que le fichier journal produit puisse être écrit.0 et les dernières lignes n’indiqueront aucun échec :9
Arrêter l'instance
Toolkit :
bin/stop sharelatexAncien docker-compose.yml : docker compose stop sharelatex10
Rendre les anciens fichiers inaccessibles à l'application
Vous pouvez maintenant déplacer les anciens fichiers vers un stockage secondaire. Nous vous recommandons de les conserver un certain temps au cas où des problèmes surviendraient par la suite.
11
Passer la migration en phase 2
Toolkit : définissez
OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 dans config/variables.env.Ancien docker-compose.yml : définissez OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' dans la section environment du service sharelatex.12
Appliquer la modification de configuration et démarrer l'instance
Toolkit :
bin/up -dAncien docker-compose.yml : docker compose up -d13
Vérifier l'accès aux fichiers binaires
Ouvrez un projet dans l’éditeur Overleaf depuis le navigateur et sélectionnez un fichier binaire, comme une image.
Migration hors ligne
Si vous souhaitez empêcher les utilisateurs de se connecter pendant l’exécution du script de migration des fichiers binaires, suivez ces étapes :- Connectez-vous à votre instance Overleaf avec un compte administrateur
- Cliquez sur le bouton Admin et choisissez Manage Site
- Cliquez sur l’onglet Open/Close Editor
- Cliquez sur le bouton Close Editor
- Cliquez sur le bouton Disconnect all users
Migration en ligne
Il est possible d’exécuter les scripts de migration pendant que l’application continue de fonctionner. Quelques points sont à prendre en compte :- Le processus de migration est gourmand en E/S ; surveillez l’utilisation des ressources pendant l’exécution du script.
- Avec une forte concurrence de traitement, la boucle d’événements du service
filestorepeut subir des blocages, ce qui dégraderait l’expérience utilisateur. Nous recommandons de commencer avec les valeurs par défaut--concurrency=10et--concurrent-batches=1. - Vous pouvez arrêter le script à tout moment. En le relançant, il validera les projets précédents et ignorera les fichiers déjà traités. C’est utile si vous préférez exécuter la migration pendant les heures creuses (par ex. la nuit).
--report). Si le nombre de projets est élevé, vous pouvez lancer le script, surveiller sa progression, puis décider de poursuivre en ligne ou hors ligne selon votre situation.
Nettoyer les anciennes données des fichiers binaires
Une fois la migration terminée et après avoir vérifié que les projets ont toujours accès à tous leurs fichiers, vous pouvez supprimer l’ancien stockage de fichiers dans/var/lib/overleaf/data/user_files. Nous vous recommandons vivement de conserver ces fichiers un certain temps — vous pouvez d’abord les rendre inaccessibles à l’application en renommant le dossier.
Dépannage
Nous ajouterons ici des conseils de dépannage. Notez que, bien que nous ne proposions normalement du support qu’aux clients Server Pro, compte tenu de la nature de cette migration, nous ferons également de notre mieux pour aider les utilisateurs de CE qui rencontrent des problèmes spécifiques à la migration des fichiers binaires. Si le script de migration des fichiers binaires échoue (c’est-à-dire s’il se termine avec une erreur ou affiche un nombre non nul de projets en échec), envoyez les informations suivantes à notre équipe de support par e-mail support+filestoremigration@overleaf.com, en précisant : Objet : Binary file migration problem Corps du message :- Type d’instance : CE ou Server Pro (rayez la mention inutile)
- Type d’installation : Overleaf toolkit,
docker-compose.ymlou autre (rayez la mention inutile) - Version : 5.5.x (toolkit :
$ cat config/version) - Sortie du script de migration (qui devrait se trouver dans le conteneur sous
/var/log/overleaf) - Rapport : (exécutez le script de migration avec
--report) - Projets traités : (d’après la dernière exécution du script)
- Durée de la migration :
- Sortie de
bin/doctor(si vous utilisez le toolkit) - Version du Toolkit :
$ git rev-parse HEAD(si vous utilisez le Toolkit)
filestore. Vous les trouverez dans /var/log/overleaf/filestore.log à l’intérieur du conteneur sharelatex et pouvez les exporter ainsi :
Fichiers manquants
Les anciennes versions de Server Pro/CE créaient les entrées de l’arborescence de fichiers avant la fin des téléversements des utilisateurs, ce qui pouvait faire apparaître des fichiers comme manquants en cas d’échec d’un téléversement. Il est possible que quelques-uns de ces cas soient signalés comme erreurs lors du traitement de l’ensemble des arborescences de fichiers. Si le nombre de fichiers manquants est faible, envisagez d’examiner ces cas manuellement et de les supprimer depuis l’éditeur dans le navigateur. Si le nombre de fichiers manquants est élevé, envisagez de contacter le support ; voir le modèle d’e-mail ci-dessus.Trouver les arborescences de fichiers endommagées
La migration peut échouer pour les projets dont l’arborescence de fichiers est malformée (par exemple, lorsque des noms de fichiers sont vides). Vous pouvez obtenir la liste de ces problèmes à l’aide du scriptfind_malformed_filetrees, qui vérifie tous les projets de la base de données :
fix_malformed_filetree, en exécutant la commande une fois pour chaque chemin incorrect :

