Migratie van binaire bestanden
De komende hoofdversie6.0 van Server Pro en Community Edition halveert het opslaggebruik van binaire bestanden. Versie 5.5.7 bevat een online migratie, zodat de downtime als onderdeel van de upgrade minimaal blijft.
Sinds Server Pro 4.x worden binaire bestanden twee keer opgeslagen: in de opslag voor actieve bestanden in “filestore” en in het systeem voor de volledige projectgeschiedenis. Voortaan wordt er één kopie van elk bestand opgeslagen in het systeem voor de volledige projectgeschiedenis.
De migratie naar het geconsolideerde opslagsysteem bestaat uit twee delen: een nieuwe vlag om de fase van de migratie te bepalen en een script dat alle actieve en zacht verwijderde projecten verwerkt.
Fasen:
OVERLEAF_FILESTORE_MIGRATION_LEVEL=0(standaard): bestanden worden gelezen uit en geschreven naar filestore. Bestanden worden asynchroon naar de geschiedenis geschreven.OVERLEAF_FILESTORE_MIGRATION_LEVEL=1: bestanden worden gelezen uit de geschiedenis met filestore als fallback, en geschreven naar zowel filestore als de geschiedenis. Terugschakelen naarOVERLEAF_FILESTORE_MIGRATION_LEVEL=0is mogelijk.OVERLEAF_FILESTORE_MIGRATION_LEVEL=2: bestanden worden alleen gelezen uit en geschreven naar de geschiedenis. Terugschakelen naarOVERLEAF_FILESTORE_MIGRATION_LEVEL=1is niet mogelijk, tenzij dit “offline” is uitgevoerd.
OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) en history (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID): geef de filestore-gebruiker leestoegang tot de history-bucket voor blobs OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET. De filestore-service bedient voortaan de leesverzoeken van de compilerservice.
Met de standaardlicentie van Server Pro mag u de applicatie zowel in een productieomgeving als in een niet-productie-/sandboxomgeving draaien; het wordt sterk aanbevolen om een niet-productieomgeving in te richten om te testen.
Als u upgradet naar Server Pro/CE versie
6.0 en later besluit terug te gaan naar een eerdere versie, moet u een volledige systeemback-up terugzetten.Migratieprocedure
1
Een back-up maken
Maak een volledige back-up van uw instantie met een consistente momentopname van de mappen mongo, redis en sharelatex.
2
Bijwerken
Toolkit: gebruik het script
$ bin/upgrade om de toolkit naar de nieuwste versie te upgraden. Bevestig de vraag Upgrade image? niet wanneer daarom wordt gevraagd — bewerk in plaats daarvan handmatig het bestand config/version en stel de waarde in op 5.5.7.Legacy docker-compose.yml: werk de versie van de service sharelatex bij naar 5.5.7.3
Het aantal betrokken projecten schatten
4
Wachtrijen van de projectgeschiedenis leegmaken
"project_ids":0).Als “failedProjects” niet nul is, neem dan contact op met support en ga niet verder met de migratie van binaire bestanden.
5
De migratiefase naar 1 verhogen
Toolkit: stel
OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 in in config/variables.env.Legacy docker-compose.yml: stel OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' in in de sectie environment van de service sharelatex.6
De configuratiewijziging toepassen en de instantie starten
Toolkit:
bin/up -dLegacy docker-compose.yml: docker compose up -d7
Toegang tot binaire bestanden controleren
Open een project in de Overleaf-editor in de browser en selecteer een binair bestand, zoals een afbeelding.
8
Het migratiescript uitvoeren
Als u logbestanden persistent opslaat buiten de container sharelatex, zorg er dan voor dat de eigenaar van de logmap is ingesteld op de gebruiker
www-data (uid=33), zodat het uitgevoerde logbestand kan worden geschreven.0 en geven de laatste regels aan dat er geen fouten waren:9
De instantie stoppen
Toolkit:
bin/stop sharelatexLegacy docker-compose.yml: docker compose stop sharelatex10
Oude bestanden ontoegankelijk maken voor de applicatie
U kunt de oude bestanden nu naar secundaire opslag verplaatsen. We raden aan de bestanden nog een tijdje te bewaren voor het geval er later problemen optreden.
11
De migratiefase naar 2 verhogen
Toolkit: stel
OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 in in config/variables.env.Legacy docker-compose.yml: stel OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' in in de sectie environment van de service sharelatex.12
De configuratiewijziging toepassen en de instantie starten
Toolkit:
bin/up -dLegacy docker-compose.yml: docker compose up -d13
Toegang tot binaire bestanden controleren
Open een project in de Overleaf-editor in de browser en selecteer een binair bestand, zoals een afbeelding.
Offline migratie
Als u wilt voorkomen dat gebruikers kunnen inloggen terwijl het migratiescript voor binaire bestanden draait, volgt u deze stappen:- Log in op uw Overleaf-instantie met een beheerdersaccount
- Klik op de knop Admin en kies Manage Site
- Klik op het tabblad Open/Close Editor
- Klik op de knop Close Editor
- Klik op de knop Disconnect all users
Online migratie
Het is mogelijk om de migratiescripts uit te voeren terwijl de applicatie nog draait. Er zijn enkele aandachtspunten:- Het migratieproces is IO-intensief; u moet het resourcegebruik in de gaten houden terwijl het script draait.
- Bij een hoge verwerkingsparallelliteit kan de event loop in de service
filestoregeblokkeerd raken, wat tot een slechtere gebruikerservaring leidt. We raden aan te beginnen met de standaardwaarden--concurrency=10en--concurrent-batches=1. - U kunt het script op elk moment stoppen. Als u het opnieuw start, worden de eerdere projecten gevalideerd en worden bestanden die al zijn verwerkt overgeslagen. Dat is handig als u de migratie liever tijdens rustigere uren uitvoert (bijv. ’s nachts).
--report uitvoert). Als het aantal projecten groot is, kunt u het script uitvoeren en de voortgang volgen, en vervolgens op basis van uw specifieke situatie beslissen of u het online of offline verder laat draaien.
Verouderde gegevens van binaire bestanden opruimen
Wanneer u klaar bent met de migratie en hebt gecontroleerd dat projecten nog steeds toegang hebben tot al hun bestanden, kunt u de oude bestandsopslag in/var/lib/overleaf/data/user_files verwijderen. We raden sterk aan deze bestanden nog een tijdje te bewaren — u kunt ze voor de applicatie ontoegankelijk maken door eerst de map te hernoemen.
Probleemoplossing
We voegen hier advies voor probleemoplossing toe. Houd er rekening mee dat we normaal gesproken alleen ondersteuning bieden aan Server Pro-klanten, maar gezien de aard van deze migratie zullen we ook ons best doen om CE-klanten te helpen die problemen ondervinden die specifiek zijn voor de migratie van binaire bestanden. Als het migratiescript voor binaire bestanden mislukt (d.w.z. afsluit met een fout of een aantal mislukte projecten groter dan nul toont), stuur dan de volgende gegevens per e-mail naar ons supportteam via support+filestoremigration@overleaf.com, met daarin: Onderwerp: Binary file migration problem Inhoud:- Instance Type: CE of Server Pro (doorhalen wat niet van toepassing is)
- Installation Type: Overleaf toolkit of
docker-compose.ymlof anders (doorhalen wat niet van toepassing is) - Version: 5.5.x (toolkit:
$ cat config/version) - Uitvoer van het migratiescript (die in de container onder
/var/log/overleafzou moeten staan) - Report: (voer het migratiescript uit met
--report) - Verwerkte projecten: (volgens de laatste uitvoering van het script)
- Duur van de migratie:
- Uitvoer van
bin/doctor(bij gebruik van de toolkit) - Toolkit-versie:
$ git rev-parse HEAD(bij gebruik van de Toolkit)
filestore als bijlage bij de e-mail te voegen. U vindt ze op /var/log/overleaf/filestore.log in de container sharelatex en kunt ze als volgt exporteren:
Ontbrekende bestanden
Oudere versies van Server Pro/CE maakten items in de bestandsstructuur aan voordat uploads van gebruikers waren voltooid, waardoor bestanden als ontbrekend konden verschijnen wanneer een upload mislukte. Mogelijk ziet u enkele van deze gevallen als fouten gerapporteerd bij het verwerken van alle bestandsstructuren. Als het aantal ontbrekende bestanden klein is, overweeg dan deze gevallen handmatig te beoordelen en ze in de browser uit de editor te verwijderen. Als het aantal ontbrekende bestanden groot is, overweeg dan contact op te nemen met support; zie het e-mailsjabloon hierboven.Beschadigde bestandsstructuren vinden
De migratie kan mislukken voor projecten met een misvormde bestandsstructuur (bijvoorbeeld waarbij bestandsnamen leeg zijn). U kunt een lijst van deze problemen vinden met het scriptfind_malformed_filetrees, dat alle projecten in de database controleert:
fix_malformed_filetree en voert u de opdracht één keer uit voor elk ongeldig pad:

