Skip to main content

Migracja plików binarnych

Nadchodzące wydanie głównej wersji 6.0 Server Pro i Community Edition zmniejszy o połowę wykorzystanie przestrzeni dyskowej przez pliki binarne. Wersja 5.5.7 zawiera migrację online, która pozwala ograniczyć do minimum przestój podczas aktualizacji. Od Server Pro 4.x pliki binarne są przechowywane dwukrotnie: w magazynie aktywnych plików w “filestore” oraz w systemie pełnej historii projektów. Od teraz pojedyncza kopia każdego pliku będzie przechowywana w systemie pełnej historii projektów. Migracja do skonsolidowanego systemu przechowywania składa się z dwóch części: nowej flagi sterującej fazą migracji oraz skryptu przetwarzającego wszystkie aktywne i miękko usunięte (soft-deleted) projekty. Fazy:
  • OVERLEAF_FILESTORE_MIGRATION_LEVEL=0 (domyślnie) — pliki są odczytywane z filestore i do niego zapisywane. Do historii pliki są zapisywane asynchronicznie.
  • OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 — pliki są odczytywane z historii, z awaryjnym odczytem z filestore, i zapisywane zarówno w filestore, jak i w historii. Możliwy jest powrót do OVERLEAF_FILESTORE_MIGRATION_LEVEL=0.
  • OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 — pliki są odczytywane i zapisywane wyłącznie w historii. Powrót do OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 nie jest możliwy, chyba że migrację przeprowadzono w trybie “offline”.
W przypadku przechowywania danych w S3 i używania oddzielnych kont usług dla filestore (OVERLEAF_FILESTORE_S3_ACCESS_KEY_ID) i historii (OVERLEAF_HISTORY_S3_ACCESS_KEY_ID): nadaj użytkownikowi filestore uprawnienia do odczytu bucketu historii dla blobów OVERLEAF_HISTORY_PROJECT_BLOBS_BUCKET . Od teraz usługa filestore będzie obsługiwać odczyty z usługi kompilatora.
Zdecydowanie zaleca się, aby najpierw przeprowadzić migrację plików binarnych w środowisku nieprodukcyjnym/testowym (sandbox).
Standardowa licencja Server Pro pozwala na uruchomienie aplikacji zarówno w środowisku produkcyjnym, jak i w jednym środowisku nieprodukcyjnym/testowym; zdecydowanie zalecamy przygotowanie środowiska nieprodukcyjnego do testów.
Jeśli zaktualizujesz Server Pro/CE do wersji 6.0, a później zdecydujesz się na powrót do wcześniejszej wersji, musisz przywrócić system z pełnej kopii zapasowej.

Procedura migracji

1

Utwórz kopię zapasową

Utwórz pełną kopię zapasową swojej instancji ze spójną migawką katalogów mongo, redis i sharelatex.
2

Zaktualizuj

Toolkit: użyj skryptu $ bin/upgrade, aby zaktualizować toolkit do najnowszej wersji. Gdy pojawi się pytanie Upgrade image?, nie potwierdzaj go — zamiast tego ręcznie edytuj plik config/version i ustaw w nim wartość 5.5.7.Starsza konfiguracja docker-compose.yml: zaktualizuj wersję usługi sharelatex do 5.5.7.
3

Oszacuj liczbę projektów, których dotyczy migracja

Przykładowy wynik:
4

Opróżnij kolejki historii projektów

Powtarzaj opróżnianie, aż wszystkie projekty zostaną przetworzone ("project_ids":0).
Jeśli wartość “failedProjects” jest różna od zera, skontaktuj się z pomocą techniczną i nie kontynuuj migracji plików binarnych.
5

Przejdź do fazy migracji 1

Toolkit: ustaw OVERLEAF_FILESTORE_MIGRATION_LEVEL=1 w config/variables.env.Starsza konfiguracja docker-compose.yml: ustaw OVERLEAF_FILESTORE_MIGRATION_LEVEL: '1' w sekcji environment usługi sharelatex.
6

Zastosuj zmianę konfiguracji i uruchom instancję

Toolkit: bin/up -dStarsza konfiguracja docker-compose.yml: docker compose up -d
7

Sprawdź dostęp do plików binarnych

Otwórz projekt w edytorze Overleaf w przeglądarce i wybierz plik binarny, na przykład obraz.
8

Uruchom skrypt migracji

Jeśli zapisujesz pliki logów poza kontenerem sharelatex, upewnij się, że właścicielem katalogu logów jest użytkownik www-data (uid=33), aby można było zapisać wynikowy plik logu.
Wynik powinien wyglądać następująco:
Jeśli migracja się powiedzie, otrzymasz kod wyjścia 0, a ostatnie wiersze będą wskazywać na brak błędów:
Plik logu będzie wyglądał tak (użyj ścieżki wyświetlonej przez skrypt):
9

Zatrzymaj instancję

Toolkit: bin/stop sharelatexStarsza konfiguracja docker-compose.yml: docker compose stop sharelatex
10

Uczyń stare pliki niedostępnymi dla aplikacji

Możesz teraz przenieść stare pliki do magazynu pomocniczego. Zalecamy zachowanie tych plików przez pewien czas na wypadek, gdyby później pojawiły się problemy.
11

Przejdź do fazy migracji 2

Toolkit: ustaw OVERLEAF_FILESTORE_MIGRATION_LEVEL=2 w config/variables.env.Starsza konfiguracja docker-compose.yml: ustaw OVERLEAF_FILESTORE_MIGRATION_LEVEL: '2' w sekcji environment usługi sharelatex.
12

Zastosuj zmianę konfiguracji i uruchom instancję

Toolkit: bin/up -dStarsza konfiguracja docker-compose.yml: docker compose up -d
13

Sprawdź dostęp do plików binarnych

Otwórz projekt w edytorze Overleaf w przeglądarce i wybierz plik binarny, na przykład obraz.

Migracja offline

Jeśli chcesz uniemożliwić użytkownikom logowanie podczas działania skryptu migracji plików binarnych, wykonaj następujące kroki:
  • Zaloguj się do instancji Overleaf na konto administratora
  • Kliknij przycisk Admin i wybierz Manage Site
  • Kliknij kartę Open/Close Editor
  • Kliknij przycisk Close Editor
  • Kliknij przycisk Disconnect all users
Po wykonaniu tych czynności zalogowani użytkownicy zostaną przekierowani na stronę konserwacji, a nowi użytkownicy odwiedzający stronę logowania zobaczą stronę konserwacji i nie będą mogli się zalogować. Kroki te należy powtórzyć po ponownym uruchomieniu instancji. Aby ponownie otworzyć witrynę, wystarczy ponownie uruchomić instancję.

Migracja online

Skrypty migracji można uruchamiać, gdy aplikacja nadal działa. Należy jednak wziąć pod uwagę kilka kwestii:
  • Proces migracji intensywnie obciąża operacje wejścia/wyjścia (IO), dlatego podczas działania skryptu należy monitorować wykorzystanie zasobów.
  • Przy dużej współbieżności przetwarzania pętla zdarzeń w usłudze filestore może być blokowana, co pogorszy komfort użytkowników. Zalecamy rozpoczęcie od wartości domyślnych --concurrency=10 i --concurrent-batches=1 .
  • Skrypt można zatrzymać w dowolnym momencie. Ponowne uruchomienie zweryfikuje wcześniej przetworzone projekty i pominie już przetworzone pliki. Jest to przydatne, jeśli wolisz przeprowadzać migrację w godzinach mniejszego obciążenia (np. w nocy).
Zalecamy zamknięcie witryny i przeprowadzenie migracji offline w oknie serwisowym, gdy liczba projektów jest mniejsza niż 1000 (zobacz wynik skryptu migracji uruchomionego z opcją --report). Jeśli projektów jest dużo, możesz uruchomić skrypt, monitorować jego postęp, a następnie zdecydować, czy kontynuować migrację online, czy offline, w zależności od konkretnej sytuacji.

Usuwanie starszych danych plików binarnych

Po zakończeniu migracji i sprawdzeniu, że projekty nadal mają dostęp do wszystkich swoich plików, możesz usunąć stary magazyn plików w /var/lib/overleaf/data/user_files. Zdecydowanie zalecamy zachowanie tych plików przez pewien czas — możesz najpierw uczynić je niedostępnymi dla aplikacji, zmieniając nazwę folderu.

Rozwiązywanie problemów

W tym miejscu będziemy dodawać porady dotyczące rozwiązywania problemów. Pamiętaj, że choć zwykle zapewniamy wsparcie tylko klientom Server Pro, ze względu na charakter tej migracji dołożymy również wszelkich starań, aby pomóc użytkownikom CE, którzy napotkają problemy związane konkretnie z migracją plików binarnych. Jeśli skrypt migracji plików binarnych zakończy się niepowodzeniem (tj. zakończy działanie z błędem lub wyświetli niezerową liczbę projektów, których nie udało się przetworzyć), wyślij następujące informacje do naszego zespołu wsparcia na adres e-mail support+filestoremigration@overleaf.com, podając: Temat: Binary file migration problem Treść:
  • Typ instancji: CE lub Server Pro (niepotrzebne skreślić)
  • Typ instalacji: Overleaf toolkit, docker-compose.yml lub inny (niepotrzebne skreślić)
  • Wersja: 5.5.x (toolkit: $ cat config/version)
  • Wynik skryptu migracji (powinien znajdować się w kontenerze w katalogu /var/log/overleaf)
  • Raport: (uruchom skrypt migracji z opcją --report)
  • Przetworzone projekty: (według ostatniego uruchomienia skryptu)
  • Czas trwania migracji:
  • Wynik bin/doctor (w przypadku korzystania z toolkitu)
  • Wersja Toolkit: $ git rev-parse HEAD (w przypadku korzystania z Toolkit)
Rozważ dołączenie do wiadomości plików logów usługi filestore. Znajdziesz je w /var/log/overleaf/filestore.log w kontenerze sharelatex i możesz je wyeksportować w następujący sposób:
Przed dołączeniem plików logów usuń z nich wszelkie poufne informacje.

Brakujące pliki

Starsze wersje Server Pro/CE tworzyły wpisy w drzewie plików przed zakończeniem przesyłania plików przez użytkownika, co w przypadku nieudanego przesłania mogło powodować, że pliki były wyświetlane jako brakujące. Podczas przetwarzania wszystkich drzew plików kilka takich przypadków może zostać zgłoszonych jako błędy. Jeśli brakujących plików jest niewiele, rozważ ręczne przejrzenie tych przypadków i usunięcie ich z poziomu edytora w przeglądarce. Jeśli brakujących plików jest dużo, rozważ kontakt z pomocą techniczną — zobacz szablon wiadomości e-mail powyżej.

Wyszukiwanie uszkodzonych drzew plików

Migracja może się nie powieść w przypadku projektów z nieprawidłowo sformatowanym drzewem plików (na przykład z pustymi nazwami plików). Listę takich problemów możesz uzyskać za pomocą skryptu find_malformed_filetrees, który sprawdza wszystkie projekty w bazie danych:
Aby naprawić nieprawidłowe ścieżki, użyj skryptu fix_malformed_filetree, uruchamiając polecenie raz dla każdej błędnej ścieżki:
Ostatnia modyfikacja 5 października 2026