Pomoc Migracja katalogu z kontenera na natywny wolumen QNAP

mackowiakp

Entry Technician
Q Associate
5 Czerwiec 2015
84
6
8
Gdynia
QNAP
TS-x53
Ethernet
1 GbE
Proszę o pomoc bo spartolić jest coś prosto a odkręcić trudniej.stąd pytanie do bardziej doświadczonych.
Mam kontener z NextCloud który rozrósł się już do prawie 40 GB i będzie przyrastać ok 1 GB na miesiąc.
Katalog /config jest już na natywnym wolumenie QNAP ale /data pozostał w kontenerze (taka była jego domyślna konfiguracja)..
I właśnie katalog /data zajmuje niemal całe z tych 40 GB. Są to pliki głównie dokumentów i chciałbym zmigrować z tym katalogiem na natywną partycję.
Baza to MariaDB w innym kontenerze (nie natywna QNAP) wykorzystywana także do Home Assistant i aplikacji obsługującej moją mikro firmę.
Aby to zrobić chciałbym zastosować następującą procedurę:

- backup wszystkiego do możliwe
- używając Portainer wykreowałem wolumen o nazwie nexcloud-data i jest on w /share/Container/container-station-data/lib/docker/volumes
- zatrzymiję kontener Nextcloud i MariaDB
- kopiuję za pomocą cp -a zawartość /share/Container/container-station-data/lib/docker/overlay2/<nr_wolumenu_nextcloud>/diff/data do utworzonego nextcloud-data
- kasuję zawartość katalogu /share/Container/container-station-data/lib/docker/overlay2/<nr_wolumenu_nextcloud>/diff/data
- w Portainer dodaję wolumen <nextcloud-data - local> montowany w kontenerze do /data i daję <Deploy the container>
- uruchamiam MariaDB a następnie NextCloud

Mam nadzieję że po tym wszystkim NC zadziała ponownie jak trzeba.
Bardzo proszę o ewentualne uwagi/usprawnienia w/w do procedury
 
powiem tak że wg Docker dane są trzymane w '/var/www/html/data' więc to jakiś dziwny niestandardowy kontener xD

Mam zastrzeżenia:
1. czemu kopia do wolumenu , a nie binda (wskazanie że te dane z kontenera zapisuj do folderu /share/nextcloud/data) ? Trzymaj dane poza strukturą kontenerów qnap'a
2. nie powinno sie ruszać overlay2 - niech docker engine sam sobie tym zarządza
3. zostaw stary kontener w spokoju - wyłacz go i odpal drugi z takimi samymi ustawieniami (i podpiętą mariadb z starego) tylko inną nazwą
 
  • Lubię to
Reakcje: mackowiakp
Dzięki za odpowiedzi.
Co do rozmieszczenia katalogów NC w kontenerze to zainstalowałem wersję oficjalną NC i tak tam było. No ale to mało istotne.
- pomysł z bind zamiast wolumenu jest fajny i pozwala na wymknięcie się "z łap QNAP`a" :LOL:
- wiem że co do zasady nie powinno ruszać się overlay2 ale jak w takim razie pozbyć się tych plików z kontenera bez kasowania ich? Wiem że bind (montowanie) spowoduje że kontener będzie używał plików z binda (czyli kopię plików z overlay2).
Jednak "stare" pliki zostaną zajmując niepotrzebnie prawie 40G (chyba dobrze rozumuję). Jest jakiś sposób na to bez kassowania czegoś samemu ręcznie z overlay2?
 
- wiem że co do zasady nie powinno ruszać się overlay2 ale jak w takim razie pozbyć się tych plików z kontenera bez kasowania ich?
1. Jeśli zrobisz binda do /data wskazując folder na qnapie, przykryje on to co masz w overlay'u
2. Jak zrobisz update nextcloud'a to ten overlay2 i tak sie zmieni ? Tu nie mam pewności ? trzeba by to przetestować ?
3. Możesz odpalic nextclouda na nowym obrazie (wersji) , który pociągniesz z repo i wtedy problem zapchanego overlay2 zniknie podczas sprzątania (które samo się NIE robi)

Polecam przetestować na boku, zanim popsujesz produkcyjnego nextclouda.
 
  • Lubię to
Reakcje: mackowiakp
Akurat update NC - jako jednego z nielicznych - odbywa się z GUI lub CLI samego NC. Instalacja nowej wersji odbywa się więc mechanizmami zawartymi w samej aplikacji i dedykowanymi do tego komendami. To akurat jest sensowne bo praktycznie przy każdej aktualizacji odbywa się jednocześnie jakaś modyfikacja w strukturze bazy MariaDB czyli innego kontenera.
A dla tych narzędzi istnieją tylko pliki i katalogi kontenera. Stąd zmiany w overlay2 nie nastąpią. No oczywiście tylko w plikach/katalogach zawartch w /data na overlay2..
Ale masz rację. Najpierw przetestujemy temat "gdzieś z boku".
Połączono posty:

Acha ale na pewno zmodyfikowana zostanie zawartość overlay2 jeżeli zrobisz update/upgrade samego systemu na którym bazuje konener. Ja to robię co jakiś czas przez ssh bezpośrednio do NC. Wczoraj była akturat istotna aktualizacja bibliotek SSL.
 
Acha nr 2. Nawet jeżeli dokonamy z GUI update NC z jego GUI lub CLI to i tak zostanie zmodyfikowana tylko zawartość katalogu /config. A ten katalog nie jest na overlay2 tylko na wolumenie NAS.
 
OK, sorry jakiś wirus mnie dopadł. Używam oczywiście Portainer i robię tak:
- Zatrzymuję kontenery MariaDB i NextCloud.
- Kopiuję /share/Container/container-station-data/lib/docker/overlay2/<nr_wolumenu_nextcloud>/diff/data do
/share/Container/nc-data/data
- klikam na <nextcloud-3> a następnie <Duplicate/edit>
- w sekcji <Volumes> klikam <Bind> i dopisuję nowy wolumen montowany w kontenerze do /data i ścieżkę hosta
/share/CACHEDEV1_DATA/Container/nc-data/data
- kilkam <Writable> i <Deploy the container>
- po jakimś czasie w górnej prawej częście ekranu pokazuje się komunikat <Invalid port specification>
Po starcie kontenerów MariaDB i NextCloud wszystko działa ale na "starej" zawartości katalogu /data
Żadnej innej wartości nie zmieniam a te co są (wolumeny, sieć w tym porty itp) są takie jak być powinny.
Portainer pokazuje że nowy kontener nie ma tego binda którego wcześniej dodawałem.
Co to może być?
Poniżej zrzuty które powinienem dołączyć poprzednio.

Screenshot_20231108_232405.png


Screenshot_20231108_232449.png


Screenshot_20231108_232707.png
 
Hmmmm.... W logach właściwie niczego nie ma. Jest informacja o wyłączeniu kontenera, nie ma logów o jakichkolwiek zmianach które dokonałem z Portainer i dalej jest info o uruchomieniu kontenera (log z ostatniej godziny):
Kod:
crond[222]: USER root pid 818 cmd s6-setuidgid abc php -f /config/www/nextcloud/cron.php
crond[222]: USER root pid 819 cmd run-parts /etc/periodic/15min
crond[222]: USER root pid 820 cmd run-parts /etc/periodic/hourly
crond[222]: USER root pid 821 cmd s6-setuidgid abc php -f /config/www/nextcloud/cron.php
crond[222]: USER root pid 823 cmd s6-setuidgid abc php -f /config/www/nextcloud/cron.php
crond[222]: USER root pid 824 cmd s6-setuidgid abc php -f /config/www/nextcloud/cron.php
crond[222]: USER root pid 825 cmd run-parts /etc/periodic/15min
crond[222]: USER root pid 826 cmd s6-setuidgid abc php -f /config/www/nextcloud/cron.php
crond[222]: USER root pid 828 cmd s6-setuidgid abc php -f /config/www/nextcloud/cron.php
[09-Nov-2023 23:24:18] NOTICE: Terminating ...
[09-Nov-2023 23:24:18] NOTICE: exiting, bye-bye!
[migrations] started
[migrations] 01-nginx-site-confs-default: skipped
[migrations] done
usermod: no changes
───────────────────────────────────────

      ██╗     ███████╗██╗ ██████╗
      ██║     ██╔════╝██║██╔═══██╗
      ██║     ███████╗██║██║   ██║
      ██║     ╚════██║██║██║   ██║
      ███████╗███████║██║╚██████╔╝
      ╚══════╝╚══════╝╚═╝ ╚═════╝

   Brought to you by linuxserver.io
───────────────────────────────────────

To support LSIO projects visit:
https://www.linuxserver.io/donate/

───────────────────────────────────────
GID/UID
───────────────────────────────────────

User UID:    911
User GID:    911
───────────────────────────────────────

using keys found in /config/keys
[custom-init] No custom files found, skipping...
crond[219]: crond (busybox 1.35.0) started, log level 5
[ls.io-init] done.
[09-Nov-2023 23:50:15] NOTICE: fpm is running, pid 220
[09-Nov-2023 23:50:15] NOTICE: ready to handle connections
 

Użytkownicy znaleźli tą stronę używając tych słów:

  1. migracja
  2. nextcloud
  3. duplicate PV
  4. home assistant
  5. duplicate
  6. nexcloud
  7. Backup kontenera