Migration von Binärdateien
Das kommende Hauptversions-Release6.0 von Server Pro und Community Edition halbiert den Speicherbedarf von Binärdateien. Version 5.5.7 enthält eine Online-Migration, die im Rahmen des Upgrades nur minimale Ausfallzeiten verursacht.
Seit Server Pro 4.x werden Binärdateien doppelt gespeichert: im Speicher für aktive Dateien in „filestore” und im System für den vollständigen Projektverlauf. Künftig wird nur noch eine einzige Kopie jeder Datei im System für den vollständigen Projektverlauf gespeichert.
Die Migration auf das konsolidierte Speichersystem besteht aus zwei Teilen: einem neuen Flag zur Steuerung der Migrationsphase und einem Skript, das alle aktiven und vorläufig gelöschten Projekte verarbeitet.
Phasen:
OVERLEAF_FILESTORE_MIGRATION_LEVEL=0(Standard): Dateien werden aus filestore gelesen und dorthin geschrieben. Dateien werden asynchron in den Verlauf geschrieben.OVERLEAF_FILESTORE_MIGRATION_LEVEL=1: Dateien werden aus dem Verlauf gelesen, mit filestore als Fallback, und sowohl in filestore als auch in den Verlauf geschrieben. Ein Downgrade aufOVERLEAF_FILESTORE_MIGRATION_LEVEL=0ist möglich.OVERLEAF_FILESTORE_MIGRATION_LEVEL=2: Dateien werden ausschließlich aus dem Verlauf gelesen und dorthin geschrieben. Ein Downgrade aufOVERLEAF_FILESTORE_MIGRATION_LEVEL=1ist nicht möglich, es sei denn, die Migration wurde „offline” durchgeführt.
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) und den Verlauf (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID) verwenden: Gewähren Sie dem filestore-Benutzer bitte Lesezugriff auf den History-Bucket für Blobs OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET. Der filestore-Dienst bedient künftig die Lesezugriffe des Compiler-Dienstes.
Die Standardlizenz von Server Pro erlaubt Ihnen, die Anwendung sowohl in einer Produktionsumgebung als auch in einer Nicht-Produktions-/Sandbox-Umgebung zu betreiben; wir empfehlen dringend, eine Nicht-Produktionsumgebung zum Testen bereitzustellen.
Wenn Sie auf Server Pro/CE Version
6.0 aktualisieren und später auf eine frühere Version zurückstufen möchten, sollten Sie ein vollständiges System-Backup wiederherstellen.Migrationsablauf
1
Ein Backup erstellen
Erstellen Sie ein vollständiges Backup Ihrer Instanz mit einem konsistenten Snapshot der Verzeichnisse mongo, redis und sharelatex.
2
Aktualisieren
Toolkit: Verwenden Sie das Skript
$ bin/upgrade, um das Toolkit auf die neueste Version zu aktualisieren. Bestätigen Sie die Abfrage Upgrade image? nicht – bearbeiten Sie stattdessen manuell die Datei config/version und setzen Sie den Wert auf 5.5.7.Legacy docker-compose.yml: Aktualisieren Sie die Version des Dienstes sharelatex auf 5.5.7.3
Anzahl der betroffenen Projekte abschätzen
4
Warteschlangen des Projektverlaufs leeren
"project_ids":0).Falls “failedProjects” nicht null ist, wenden Sie sich bitte an den Support und setzen Sie die Migration der Binärdateien nicht fort.
5
Migrationsphase auf 1 erhöhen
Toolkit: Setzen Sie
OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 in config/variables.env.Legacy docker-compose.yml: Setzen Sie OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' im Abschnitt environment des Dienstes sharelatex.6
Konfigurationsänderung anwenden und Instanz starten
Toolkit:
bin/up -dLegacy docker-compose.yml: docker compose up -d7
Zugriff auf Binärdateien überprüfen
Öffnen Sie ein Projekt im Overleaf-Editor im Browser und wählen Sie eine Binärdatei aus, etwa ein Bild.
8
Migrationsskript ausführen
Wenn Sie Log-Dateien persistent außerhalb des Containers sharelatex speichern, stellen Sie sicher, dass der Eigentümer des Log-Verzeichnisses der Benutzer
www-data (uid=33) ist, damit die ausgegebene Log-Datei geschrieben werden kann.0, und die letzten Zeilen zeigen an, dass keine Fehler aufgetreten sind:9
Instanz stoppen
Toolkit:
bin/stop sharelatexLegacy docker-compose.yml: docker compose stop sharelatex10
Alte Dateien für die Anwendung unzugänglich machen
Sie können die alten Dateien jetzt auf einen sekundären Speicher verschieben. Wir empfehlen, die Dateien noch eine Weile aufzubewahren, falls später Probleme auftreten.
11
Migrationsphase auf 2 erhöhen
Toolkit: Setzen Sie
OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 in config/variables.env.Legacy docker-compose.yml: Setzen Sie OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' im Abschnitt environment des Dienstes sharelatex.12
Konfigurationsänderung anwenden und Instanz starten
Toolkit:
bin/up -dLegacy docker-compose.yml: docker compose up -d13
Zugriff auf Binärdateien überprüfen
Öffnen Sie ein Projekt im Overleaf-Editor im Browser und wählen Sie eine Binärdatei aus, etwa ein Bild.
Offline-Migration
Wenn Sie verhindern möchten, dass sich Benutzer anmelden können, während das Migrationsskript für Binärdateien läuft, gehen Sie wie folgt vor:- Melden Sie sich mit einem Administratorkonto bei Ihrer Overleaf-Instanz an
- Klicken Sie auf die Schaltfläche Admin und wählen Sie Manage Site
- Klicken Sie auf den Tab Open/Close Editor
- Klicken Sie auf die Schaltfläche Close Editor
- Klicken Sie auf die Schaltfläche Disconnect all users
Online-Migration
Es ist möglich, die Migrationsskripte auszuführen, während die Anwendung weiterläuft. Dabei sind einige Punkte zu beachten:- Der Migrationsprozess ist I/O-intensiv; Sie sollten die Ressourcennutzung überwachen, während das Skript läuft.
- Bei hoher Verarbeitungsparallelität kann die Event-Loop im Dienst
filestoreteilweise blockiert werden, was die Benutzererfahrung beeinträchtigt. Wir empfehlen, mit den Standardwerten--concurrency=10und--concurrent-batches=1zu beginnen. - Sie können das Skript jederzeit stoppen. Beim erneuten Start werden die vorherigen Projekte validiert und bereits verarbeitete Dateien übersprungen. Das ist nützlich, wenn Sie die Migration lieber zu weniger ausgelasteten Zeiten (z. B. nachts) durchführen möchten.
--report). Bei einer großen Anzahl von Projekten können Sie das Skript ausführen, seinen Fortschritt beobachten und dann je nach Ihrem konkreten Fall entscheiden, ob Sie es online oder offline weiterlaufen lassen.
Alte Binärdateien bereinigen
Wenn die Migration abgeschlossen ist und Sie überprüft haben, dass Projekte weiterhin auf alle ihre Dateien zugreifen können, können Sie den alten Dateispeicher unter/var/lib/overleaf/data/user_files entfernen. Wir empfehlen dringend, diese Dateien noch eine Weile aufzubewahren – Sie können sie für die Anwendung unzugänglich machen, indem Sie den Ordner zunächst umbenennen.
Fehlerbehebung
Wir werden hier Hinweise zur Fehlerbehebung ergänzen. Bitte beachten Sie: Obwohl wir normalerweise nur Server Pro-Kunden Support leisten, werden wir uns angesichts der Art dieser Migration auch bemühen, CE-Kunden zu unterstützen, die Probleme speziell mit der Migration der Binärdateien haben. Schlägt das Migrationsskript für Binärdateien fehl (d. h. es beendet sich mit einem Fehler oder gibt eine Anzahl fehlgeschlagener Projekte ungleich null aus), senden Sie bitte die folgenden Angaben per E-Mail an unser Support-Team unter support+filestoremigration@overleaf.com, mit folgenden Details: Betreff: Binary file migration problem Nachricht:- Instanztyp: CE oder Server Pro (Nichtzutreffendes streichen)
- Installationstyp: Overleaf Toolkit oder
docker-compose.ymloder andere (Nichtzutreffendes streichen) - Version: 5.5.x (Toolkit:
$ cat config/version) - Ausgabe des Migrationsskripts (sollte sich im Container unter
/var/log/overleafbefinden) - Bericht: (Migrationsskript mit
--reportausführen) - Verarbeitete Projekte: (laut letztem Lauf des Skripts)
- Dauer der Migration:
- Ausgabe von
bin/doctor(bei Verwendung des Toolkits) - Toolkit-Version:
$ git rev-parse HEAD(bei Verwendung des Toolkits)
filestore an die E-Mail anzuhängen. Sie finden sie unter /var/log/overleaf/filestore.log im Container sharelatex und können sie wie folgt exportieren:
Fehlende Dateien
Ältere Versionen von Server Pro/CE haben Einträge im Dateibaum erstellt, bevor Uploads von Benutzern abgeschlossen waren. Schlug ein Upload fehl, konnten Dateien dadurch als fehlend erscheinen. Bei der Verarbeitung aller Dateibäume werden einige dieser Fälle möglicherweise als Fehler gemeldet. Ist die Anzahl fehlender Dateien gering, sollten Sie diese Fälle manuell prüfen und im Editor im Browser löschen. Ist die Anzahl fehlender Dateien hoch, sollten Sie sich an den Support wenden, siehe die E-Mail-Vorlage oben.Beschädigte Dateibäume finden
Die Migration kann bei Projekten mit fehlerhaftem Dateibaum (zum Beispiel mit leeren Dateinamen) fehlschlagen. Eine Liste dieser Probleme erhalten Sie mit dem Skriptfind_malformed_filetrees, das alle Projekte in der Datenbank prüft:
fix_malformed_filetree und führen den Befehl für jeden fehlerhaften Pfad einmal aus:

