Skip to main content

Migrering av binärfiler

Den kommande huvudversionen 6.0 av Server Pro och Community Edition halverar lagringsanvändningen för binärfiler. En onlinemigrering ingår i version 5.5.7, vilket ger minimal driftstopp i samband med uppgraderingen. Sedan Server Pro 4.x lagras binärfiler två gånger: i lagringen för aktiva filer i “filestore” och i systemet för fullständig projekthistorik. Framöver lagras en enda kopia av varje fil i systemet för fullständig projekthistorik. Migreringen till det konsoliderade lagringssystemet består av två delar: en ny flagga för att styra migreringens fas och ett skript som bearbetar alla aktiva och mjukt borttagna projekt. Faser:
  • OVERLEAF_FILESTORE_MIGRATION_LEVEL=0 (standard): filer läses från och skrivs till filestore. Filer skrivs asynkront till historiken.
  • OVERLEAF_FILESTORE_MIGRATION_LEVEL=1: filer läses från historiken med filestore som reserv och skrivs till både filestore och historiken. Nedgradering till OVERLEAF_FILESTORE_MIGRATION_LEVEL=0 är möjlig.
  • OVERLEAF_FILESTORE_MIGRATION_LEVEL=2: filer läses från och skrivs endast till historiken. Nedgradering till OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 är inte möjlig, såvida den inte utfördes “offline”.
När data lagras i S3 och separata tjänstekonton används för filestore (OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) och historik (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID): ge filestore-användaren läsbehörighet till historikens bucket för blobbar, OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET. Framöver kommer filestore-tjänsten att hantera läsningar från kompileringstjänsten.
Det rekommenderas starkt att du först utför migreringen av binärfiler i en miljö som inte är produktion, eller i en sandlådemiljö.
Standardlicensen för Server Pro tillåter att du kör applikationen både i en produktionsmiljö och i en miljö som inte är produktion (sandlåda); det rekommenderas starkt att du sätter upp en miljö utanför produktion för tester.
Om du uppgraderar till Server Pro/CE version 6.0 och senare bestämmer dig för att nedgradera till en tidigare version bör du återställa från en fullständig säkerhetskopia av systemet.

Migreringsprocedur

1

Skapa en säkerhetskopia

Skapa en fullständig säkerhetskopia av din instans med en konsekvent ögonblicksbild av katalogerna mongo, redis och sharelatex.
2

Uppdatera

Toolkit: Använd skriptet $ bin/upgrade för att uppgradera toolkit till den senaste versionen. När du tillfrågas ska du inte bekräfta frågan Upgrade image? — redigera i stället filen config/version manuellt och sätt värdet till 5.5.7.Äldre docker-compose.yml: Uppdatera versionen av tjänsten sharelatex till 5.5.7.
3

Uppskatta antalet berörda projekt

Exempel på utdata:
4

Töm köerna för projekthistorik

Upprepa tömningen tills alla projekt har tömts ("project_ids":0).
Om “failedProjects” inte är noll ska du kontakta supporten och inte fortsätta med migreringen av binärfiler.
5

Flytta fram migreringsfasen till 1

Toolkit: Sätt OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 i config/variables.env.Äldre docker-compose.yml: Sätt OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' i avsnittet environment för tjänsten sharelatex.
6

Tillämpa konfigurationsändringen och starta instansen

Toolkit: bin/up -dÄldre docker-compose.yml: docker compose up -d
7

Verifiera åtkomsten till binärfiler

Öppna ett projekt i Overleaf-editorn i webbläsaren och välj en binärfil, till exempel en bild.
8

Kör migreringsskriptet

Om du sparar loggfiler utanför containern sharelatex ska du se till att loggkatalogens ägare är användaren www-data (uid=33) så att loggfilen kan skrivas.
Utdatan bör se ut så här:
Om migreringen lyckas får du avslutningskoden 0, och de sista raderna visar att inga fel uppstod:
Loggfilen ser ut så här (använd sökvägen som skriptet skriver ut):
9

Stoppa instansen

Toolkit: bin/stop sharelatexÄldre docker-compose.yml: docker compose stop sharelatex
10

Gör gamla filer oåtkomliga för applikationen

Nu kan du flytta de gamla filerna till sekundär lagring. Vi rekommenderar att du behåller filerna ett tag ifall problem skulle uppstå senare.
11

Flytta fram migreringsfasen till 2

Toolkit: Sätt OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 i config/variables.env.Äldre docker-compose.yml: Sätt OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' i avsnittet environment för tjänsten sharelatex.
12

Tillämpa konfigurationsändringen och starta instansen

Toolkit: bin/up -dÄldre docker-compose.yml: docker compose up -d
13

Verifiera åtkomsten till binärfiler

Öppna ett projekt i Overleaf-editorn i webbläsaren och välj en binärfil, till exempel en bild.

Offlinemigrering

Om du vill förhindra att användare kan logga in medan migreringsskriptet för binärfiler körs följer du dessa steg:
  • Logga in på din Overleaf-instans med ett administratörskonto
  • Klicka på knappen Admin och välj Manage Site
  • Klicka på fliken Open/Close Editor
  • Klicka på knappen Close Editor
  • Klicka på knappen Disconnect all users
När detta är gjort omdirigeras eventuella inloggade användare till underhållssidan, och nya användare som besöker inloggningssidan ser underhållssidan och kan inte logga in. Du måste upprepa dessa steg när instansen startas om. För att öppna webbplatsen igen startar du helt enkelt om instansen.

Onlinemigrering

Det går att köra migreringsskripten medan applikationen fortfarande körs. Det finns några saker att ta hänsyn till:
  • Migreringsprocessen är I/O-intensiv, så du bör övervaka resursanvändningen medan skriptet körs.
  • Med hög samtidighet i bearbetningen kan händelseloopen i tjänsten filestore blockeras i viss mån, vilket försämrar användarupplevelsen. Vi rekommenderar att du börjar med standardvärdena --concurrency=10 och --concurrent-batches=1.
  • Du kan stoppa skriptet när som helst. När det startas igen valideras tidigare projekt och filer som redan har bearbetats hoppas över. Det är användbart om du föredrar att köra migreringen under lugnare timmar (t.ex. på natten).
Vår rekommendation är att stänga webbplatsen och köra migreringen offline under ett underhållsfönster om du har färre än 1000 projekt (se utdatan från migreringsskriptet när det körs med --report). Om antalet projekt är stort kan du köra skriptet och övervaka förloppet, och sedan avgöra om du ska fortsätta köra det online eller offline utifrån din situation.

Rensa äldre binärfilsdata

När du är klar med migreringen och har verifierat att projekten fortfarande kan komma åt alla sina filer kan du ta bort den gamla fillagringen i /var/lib/overleaf/data/user_files. Vi rekommenderar starkt att du behåller filerna ett tag – du kan göra dem oåtkomliga för applikationen genom att först byta namn på mappen.

Felsökning

Vi kommer att lägga till felsökningsråd här. Observera att även om vi normalt bara erbjuder support till Server Pro-kunder kommer vi, med tanke på den här migreringens natur, att göra vårt bästa för att även hjälpa CE-kunder som får problem som är specifika för migreringen av binärfiler. Om migreringsskriptet för binärfiler misslyckas (dvs. avslutas med ett fel eller skriver ut ett antal misslyckade projekt som inte är noll) skickar du följande uppgifter till vårt supportteam via e-post till support+filestoremigration@overleaf.com, med följande: Ämne: Binary file migration problem Brödtext:
  • Instance Type: CE eller Server Pro (stryk det som inte gäller)
  • Installation Type: Overleaf toolkit eller docker-compose.yml eller annat (stryk det som inte gäller)
  • Version: 5.5.x (toolkit: $ cat config/version)
  • Utdata från migreringsskriptet (som bör finnas i containern under /var/log/overleaf)
  • Rapport: (kör migreringsskriptet med --report)
  • Bearbetade projekt: (enligt skriptets senaste körning)
  • Migreringens varaktighet:
  • Utdata från bin/doctor (vid användning av toolkit)
  • Toolkit-version: $ git rev-parse HEAD (vid användning av Toolkit)
Överväg att bifoga loggfilerna för tjänsten filestore i e-postmeddelandet. Du hittar dem på /var/log/overleaf/filestore.log i containern sharelatex och kan exportera dem så här:
Ta bort all känslig information från loggfilerna innan du bifogar dem.

Saknade filer

Äldre versioner av Server Pro/CE skapade poster i filträdet innan användarnas uppladdningar var klara, vilket kunde göra att filer såg ut att saknas när en uppladdning misslyckades. Du kan hitta några sådana fall rapporterade som fel när alla filträd bearbetas. Om antalet saknade filer är litet kan du överväga att granska dessa fall manuellt och ta bort dem från editorn i webbläsaren. Om antalet saknade filer är stort kan du överväga att kontakta supporten, se e-postmallen ovan.

Hitta trasiga filträd

Migreringen kan misslyckas för projekt som har ett felaktigt filträd (till exempel där filnamn är tomma). Du kan få en lista över sådana problem med skriptet find_malformed_filetrees, som kontrollerar alla projekt i databasen:
För att åtgärda de ogiltiga sökvägarna använder du skriptet fix_malformed_filetree och kör kommandot en gång för varje felaktig sökväg:
Senast ändrad 5 oktober 2026