Migrazione dei file binari
La prossima versione principale6.0 di Server Pro e Community Edition dimezzerà lo spazio di archiviazione utilizzato dai file binari. Nella versione 5.5.7 è inclusa una migrazione online, che consente di ridurre al minimo i tempi di inattività durante l’aggiornamento.
A partire da Server Pro 4.x, i file binari vengono memorizzati due volte: nell’archivio dei file attivi in “filestore” e nel sistema di cronologia completa dei progetti. D’ora in poi, verrà memorizzata un’unica copia di ciascun file nel sistema di cronologia completa dei progetti.
La migrazione al sistema di archiviazione consolidato si compone di due parti: un nuovo flag per controllare la fase della migrazione e uno script che elabora tutti i progetti attivi ed eliminati in modo reversibile (soft-deleted).
Fasi:
OVERLEAF_FILESTORE_MIGRATION_LEVEL=0(predefinito): i file vengono letti e scritti nel filestore. I file vengono scritti nella cronologia in modo asincrono.OVERLEAF_FILESTORE_MIGRATION_LEVEL=1: i file vengono letti dalla cronologia con fallback sul filestore e scritti sia nel filestore sia nella cronologia. È possibile tornare aOVERLEAF_FILESTORE_MIGRATION_LEVEL=0.OVERLEAF_FILESTORE_MIGRATION_LEVEL=2: i file vengono letti e scritti solo nella cronologia. Non è possibile tornare aOVERLEAF_FILESTORE_MIGRATION_LEVEL=1, a meno che la migrazione non sia stata eseguita “offline”.
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) e history (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID): concedi all’utente del filestore l’accesso in lettura al bucket della cronologia per i blob OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET. D’ora in poi il servizio filestore gestirà le letture provenienti dal servizio di compilazione.
La licenza standard di Server Pro consente di eseguire l’applicazione in un ambiente di produzione e in uno non di produzione/sandbox; ti consigliamo vivamente di predisporre un ambiente non di produzione per i test.
Se esegui l’aggiornamento a Server Pro/CE versione
6.0 e in seguito decidi di tornare a una versione precedente, dovrai eseguire il ripristino da un backup completo del sistema.Procedura di migrazione
1
Creare un backup
Crea un backup completo della tua istanza con uno snapshot coerente delle directory mongo, redis e sharelatex.
2
Aggiornare
Toolkit: usa lo script
$ bin/upgrade per aggiornare il toolkit all’ultima versione. Quando richiesto, non confermare la domanda Upgrade image?; modifica invece manualmente il file config/version e imposta il valore su 5.5.7.docker-compose.yml legacy: aggiorna la versione del servizio sharelatex a 5.5.7.3
Stimare il numero di progetti interessati
4
Svuotare le code della cronologia dei progetti
"project_ids":0).Se “failedProjects” è diverso da zero, contatta il supporto e non proseguire con la migrazione dei file binari.
5
Avanzare la fase di migrazione a 1
Toolkit: imposta
OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 in config/variables.env.docker-compose.yml legacy: imposta OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' nella sezione environment del servizio sharelatex.6
Applicare la modifica alla configurazione e avviare l'istanza
Toolkit:
bin/up -dLegacy docker-compose.yml: docker compose up -d7
Verificare l'accesso ai file binari
Apri un progetto nell’editor di Overleaf nel browser e seleziona un file binario, ad esempio un’immagine.
8
Eseguire lo script di migrazione
Se stai rendendo persistenti i file di log all’esterno del container sharelatex, assicurati che il proprietario della directory dei log sia l’utente
www-data (uid=33), in modo che il file di log prodotto possa essere scritto.0 e le ultime righe non indicheranno errori:9
Arrestare l'istanza
Toolkit:
bin/stop sharelatexLegacy docker-compose.yml: docker compose stop sharelatex10
Rendere i vecchi file inaccessibili all'applicazione
Ora puoi spostare i vecchi file su uno storage secondario. Ti consigliamo di conservarli per un po’ di tempo nel caso in cui emergano problemi in seguito.
11
Avanzare la fase di migrazione a 2
Toolkit: imposta
OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 in config/variables.env.docker-compose.yml legacy: imposta OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' nella sezione environment del servizio sharelatex.12
Applicare la modifica alla configurazione e avviare l'istanza
Toolkit:
bin/up -dLegacy docker-compose.yml: docker compose up -d13
Verificare l'accesso ai file binari
Apri un progetto nell’editor di Overleaf nel browser e seleziona un file binario, ad esempio un’immagine.
Migrazione offline
Se vuoi impedire agli utenti di accedere mentre è in esecuzione lo script di migrazione dei file binari, segui questi passaggi:- Accedi alla tua istanza di Overleaf con un account amministratore
- Fai clic sul pulsante Admin e scegli Manage Site
- Fai clic sulla scheda Open/Close Editor
- Fai clic sul pulsante Close Editor
- Fai clic sul pulsante Disconnect all users
Migrazione online
È possibile eseguire gli script di migrazione mentre l’applicazione è ancora in esecuzione. Ci sono alcune considerazioni da tenere presenti:- Il processo di migrazione è intensivo in termini di I/O; dovresti monitorare l’utilizzo delle risorse durante l’esecuzione dello script.
- Con un’elevata concorrenza di elaborazione, l’event loop del servizio
filestorepotrebbe subire dei blocchi, con un conseguente peggioramento dell’esperienza utente. Ti consigliamo di iniziare con i valori predefiniti--concurrency=10e--concurrent-batches=1. - Puoi interrompere lo script in qualsiasi momento. Riavviandolo, verranno convalidati i progetti precedenti e saltati i file già elaborati. Ciò è utile se preferisci eseguire la migrazione nelle ore di minor traffico (ad es. di notte).
--report). Se il numero di progetti è elevato, puoi eseguire lo script e monitorarne l’avanzamento, quindi decidere se continuare l’esecuzione online o offline in base al tuo caso specifico.
Pulire i dati legacy dei file binari
Una volta completata la migrazione e verificato che i progetti possano ancora accedere a tutti i propri file, puoi rimuovere il vecchio archivio dei file in/var/lib/overleaf/data/user_files. Ti consigliamo vivamente di conservare questi file per un po’ di tempo: puoi prima renderli inaccessibili all’applicazione rinominando la cartella.
Risoluzione dei problemi
Aggiungeremo qui dei consigli per la risoluzione dei problemi. Tieni presente che, sebbene normalmente offriamo supporto solo ai clienti di Server Pro, data la natura di questa migrazione faremo del nostro meglio per assistere anche i clienti CE che riscontrano problemi specifici della migrazione dei file binari. Se lo script di migrazione dei file binari fallisce (ovvero termina con un errore o stampa un numero di progetti non riusciti diverso da zero), invia i seguenti dettagli al nostro team di supporto via email support+filestoremigration@overleaf.com, indicando: Oggetto: Binary file migration problem Corpo:- Tipo di istanza: CE o Server Pro (elimina la voce non pertinente)
- Tipo di installazione: Overleaf toolkit,
docker-compose.ymlo altro (elimina le voci non pertinenti) - Versione: 5.5.x (toolkit:
$ cat config/version) - Output dello script di migrazione (che dovrebbe trovarsi nel container in
/var/log/overleaf) - Report: (esegui lo script di migrazione con
--report) - Progetti elaborati: (secondo l’ultima esecuzione dello script)
- Durata della migrazione:
- Output di
bin/doctor(se usi il toolkit) - Versione del Toolkit:
$ git rev-parse HEAD(se usi il Toolkit)
filestore. Li trovi in /var/log/overleaf/filestore.log all’interno del container sharelatex e puoi esportarli così:
File mancanti
Le versioni precedenti di Server Pro/CE creavano le voci dell’albero dei file prima del completamento dei caricamenti degli utenti, il che poteva far apparire i file come mancanti quando un caricamento falliva. Durante l’elaborazione di tutti gli alberi dei file potresti trovare alcuni di questi casi segnalati come errori. Se il numero di file mancanti è basso, valuta di esaminare manualmente questi casi ed eliminarli dall’editor nel browser. Se il numero di file mancanti è elevato, valuta di contattare il supporto; vedi il modello di email riportato sopra.Individuare gli alberi dei file danneggiati
La migrazione potrebbe non riuscire per i progetti con un albero dei file malformato (ad esempio, con nomi di file vuoti). Puoi trovare un elenco di questi problemi usando lo scriptfind_malformed_filetrees, che controlla tutti i progetti nel database:
fix_malformed_filetree, eseguendo il comando una volta per ogni percorso errato:

