Usa temporaneamente lo Storage di Rete per Restores, aggiornamenti PSQL,

Stiamo gestendo un’installazione di Discourse più grande su una configurazione VPS che fondamentalmente funziona molto bene per noi. In termini di prestazioni di CPU/Mem abbiamo margine. Lo spazio su disco, tuttavia, è un po’ un problema - non nelle attività quotidiane, ma quando si tratta di aggiornare Postgres, ad esempio (l’aggiornamento da 13 a 15 è in sospeso a causa di questo) ci manca lo spazio e non possiamo espanderlo facilmente.

So che ci sono altre opzioni per l’aggiornamento di postgres, ma considera questa più come una domanda generale.

Stiamo operando su Hetzner, dove l’archiviazione di rete è facilmente disponibile per l’uso temporaneo.

Sul nostro server di test sto sperimentando per farlo funzionare in modo temporaneo - prima per ripristinare un backup dal sito live, poi per testare l’aggiornamento di Postgres. Finora non ho avuto successo.

Ho già provato a creare dei symlink (collegamenti simbolici) ma ho notato che non ha funzionato e ho anche letto da qualche parte che non è il modo raccomandato. Ho anche provato a spostare la condivisione /shared da /var/discourse/shared/standalone a /mnt/ext-storage/standalone e ho spostato i file lì - sfortunatamente non senza problemi. Non riesco nemmeno a finire la build.

C’è un modo che funzioni per questo tipo di casi? Sono consapevole che le prestazioni del disco sono molto peggiori del disco locale, ma non ho intenzione di eseguire il forum su di esso. Mi piacerebbe davvero avere un modo comodo per usarlo per determinati scenari.

Se il tuo obiettivo è eseguire l’aggiornamento, la cosa più semplice è avviare una nuova vm e migrare su di essa. Eviti la necessità di aggiornare il database e ottieni un nuovo sistema operativo sulla tua vm, cosa che probabilmente dovrai fare comunque.

Segui Sposta un sito Discourse su un altro VPS con rsync e non copiare il database (ma sì gli upload, let’s encrypt e i certificati.

Se i tuoi backup sono su s3 è molto semplice bloccare quello vecchio, fare un backup e ripristinare il backup sulla nuova macchina.

Se hetzner ha una sorta di ip permanente che può essere assegnato a server diversi, non devi nemmeno cambiare il dns.

Vuoi sapere che puoi costruire un nuovo server in modo che se mai dovessi per qualche motivo potrai farlo. Questa è un’ottima occasione per fare pratica.

In realtà questa non è un’opzione. Non sta esaurendo lo spazio per le necessità quotidiane comunque. Inoltre, al momento siamo su un disco da 600 GB e ne stiamo utilizzando circa il 50%. Non c’è un’opzione più grande, almeno non su Hetzner.

Ecco perché chiedevo esplicitamente il disco esterno.

Hai eseguito un ./launcher cleanup app per curiosità? Non ha liberato abbastanza spazio per eseguire l’aggiornamento sul posto?

1 Mi Piace

Dovrebbe importare qualcosa per una ricostruzione? Per un semplice riavvio lo capirei, ma per una ricostruzione?

Non stavo suggerendo di passare a un disco più grande, solo di procurarsi un nuovo server esattamente come quello. Installare Discourse, ripristinare il tuo database.

Questa è un’ottima domanda.

Sì. Ogni ricostruzione crea un nuovo container e ognuno di essi occupa spazio. Se non l’hai mai fatto, potresti liberare decine di GB.

1 Mi Piace

Per l’aggiornamento del database è necessario tutto lo spazio possibile. Quindi sì. Direi importante.

La nostra guida all’aggiornamento include una guida per il tuo caso d’uso esatto.

Abbiamo aggiunto questa opzione per le persone che si trovano nella tua stessa situazione. Assicurati solo di archiviare un backup offsite prima di provare!

2 Mi Piace

Se sei su una VM, è molto, molto più facile spostarsi su una nuova, e ci sono molti vantaggi. Eccone alcuni:

  • rischio zero: se qualcosa va storto, hai ancora il tuo vecchio server
  • zero tempi di inattività (solo in sola lettura sul vecchio server)
  • ottieni l’aggiornamento del sistema operativo di cui probabilmente hai comunque bisogno
  • puoi verificare di sapere come avviare un nuovo server in caso di calamità
  • non è necessario reindicizzare e fare il vacuum
1 Mi Piace

Apprezzo i vostri consigli.\n\n[quote="Falco, post:8, topic:351878, username:Falco"]\nAbbiamo aggiunto questa opzione per le persone nella tua stessa situazione. Assicurati solo di salvare un backup offsite prima di provare!\n[/quote]\n\nGrazie, è l’altra opzione di cui ero a conoscenza. Grazie comunque per averla segnalata.\n\n[quote="Jay Pfaffman, post:9, topic:351878, username:pfaffman"]\nSe sei su una VM, è molto, molto più facile spostarsi su una nuova, e ci sono molti vantaggi.\n[/quote]\n\nNon lo metto in dubbio, avrei comunque voluto esplorare l’opzione di aggiungere spazio di archiviazione aggiuntivo per le attività di manutenzione, se necessario.

2 Mi Piace

Può essere utile conservare i tuoi upload, o, diciamo /var/discourse/shared/web_only, su uno storage di rete. Devi modificare il file yml per puntare ad esso invece di usare un symlink (il symlink non funziona perché il container non può accedere al posto a cui punta il tuo symlink).

Quindi, se ti sposti su una nuova vm, puoi semplicemente rimontare quello storage di rete invece di copiarlo.

Non consiglio lo storage di rete per il database poiché è più lento.

1 Mi Piace

Penso che valga la pena analizzare come viene utilizzato lo spazio. La dimensione effettiva del tuo database potrebbe non essere così grande, se la maggior parte del tuo utilizzo riguarda i caricamenti, e solo la parte del database richiede circa 3 volte lo spazio durante l’aggiornamento.

Una cosa che puoi controllare è la dimensione relativa di un backup con download rispetto a un backup senza download.

Oppure, usa la riga di comando. Ecco alcuni output del mio forum, piuttosto piccolo:

root@rc-debian-hel:~# free -m
              total        used        free      shared  buff/cache   available
Mem:           3813        1631         267         492        1915        1504
Swap:          4095         730        3365
root@rc-debian-hel:~# swapon
NAME                       TYPE  SIZE   USED PRIO
/var/local/swap/swapfile.1 file 1024M 730.2M   -2
/var/local/swap/swapfile.3 file 1024M 136K   -3
/var/local/swap/swapfile.0 file 1024M     0B   -4
/var/local/swap/swapfile.2 file 1024M     0B   -5
root@rc-debian-hel:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           382M  1.2M  381M   1% /run
/dev/sda1        38G   22G   14G  62% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda15      253M  6.3M  246M   3% /boot/efi
overlay          38G   22G   14G  62% /var/lib/docker/overlay2/68abab42f48040e0dfc03d3c9fc893dfa3e7fb01ba1b2215731668339bbc3766/merged
tmpfs           382M     0  382M   0% /run/user/0

Guardando più da vicino:

root@rc-debian-hel:~# du -kx / | sort -n | tail -33
767000	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse/.local/share/pnpm
767004	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse/.local/share
767020	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse/.local
795804	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home/discourse
795808	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff/home
833836	/var/discourse/shared/standalone/postgres_data
884648	/var/discourse/shared/standalone/uploads/default/original
978000	/usr/lib/modules
991644	/var/lib/docker/overlay2/68abab42f48040e0dfc03d3c9fc893dfa3e7fb01ba1b2215731668339bbc3766/diff
991664	/var/lib/docker/overlay2/68abab42f48040e0dfc03d3c9fc893dfa3e7fb01ba1b2215731668339bbc3766
1025164	/var/discourse/shared/standalone/uploads/default/optimized
1146528	/usr/lib/firmware
1350496	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554/diff
1350512	/var/lib/docker/overlay2/8b6ac2d69a1fa195285e61aba2876484a69fd2a19032c2f4def1c4adb02d6554
1909816	/var/discourse/shared/standalone/uploads/default
1919380	/var/discourse/shared/standalone/uploads
2471968	/usr/lib
2506940	/var/log/journal/82e4cf9bff9748d090b41e6d336353eb
2515140	/var/log/journal
2592200	/var/log
3029428	/usr
3839148	/var/discourse/shared/standalone/backups/default
3839152	/var/discourse/shared/standalone/backups
4194324	/var/local/swap
4194328	/var/local
5171844	/var/lib/docker/overlay2
5217052	/var/lib/docker
5455612	/var/lib
6682972	/var/discourse/shared/standalone
6682976	/var/discourse/shared
6685716	/var/discourse
19041368	/var
23037264	/
root@rc-debian-hel:~# du -kx /var/discourse/shared/ | sort -n | tail -33
42312	/var/discourse/shared/standalone/uploads/default/original/2X/f
42448	/var/discourse/shared/standalone/uploads/default/original/2X/1
42548	/var/discourse/shared/standalone/uploads/default/original/2X/6
43380	/var/discourse/shared/standalone/uploads/default/optimized/2X/2
44148	/var/discourse/shared/standalone/uploads/default/optimized/2X/5
44340	/var/discourse/shared/standalone/uploads/default/optimized/2X/1
45240	/var/discourse/shared/standalone/uploads/default/optimized/2X/e
46648	/var/discourse/shared/standalone/uploads/default/optimized/2X/c
49516	/var/discourse/shared/standalone/uploads/default/optimized/2X/8
49772	/var/discourse/shared/standalone/uploads/default/optimized/2X/9
49932	/var/discourse/shared/standalone/log/var-log/nginx
50788	/var/discourse/shared/standalone/uploads/default/optimized/2X/0
55428	/var/discourse/shared/standalone/uploads/default/optimized/2X/d
55844	/var/discourse/shared/standalone/uploads/default/optimized/2X/f
57548	/var/discourse/shared/standalone/uploads/default/optimized/2X/6
77280	/var/discourse/shared/standalone/log/var-log
81928	/var/discourse/shared/standalone/postgres_data/pg_wal
84064	/var/discourse/shared/standalone/log
294384	/var/discourse/shared/standalone/uploads/default/optimized/1X
325068	/var/discourse/shared/standalone/uploads/default/original/1X
559576	/var/discourse/shared/standalone/uploads/default/original/2X
724684	/var/discourse/shared/standalone/postgres_data/base/16384
730776	/var/discourse/shared/standalone/uploads/default/optimized/2X
749424	/var/discourse/shared/standalone/postgres_data/base
833836	/var/discourse/shared/standalone/postgres_data
884648	/var/discourse/shared/standalone/uploads/default/original
1025164	/var/discourse/shared/standalone/uploads/default/optimized
1909816	/var/discourse/shared/standalone/uploads/default
1919380	/var/discourse/shared/standalone/uploads
3839148	/var/discourse/shared/standalone/backups/default
3839152	/var/discourse/shared/standalone/backups
6682972	/var/discourse/shared/standalone
6682976	/var/discourse/shared/
2 Mi Piace

Sarei dovuto essere più preciso inizialmente, ma non mi aspettavo di ricevere un feedback così diffuso.

I nostri caricamenti e backup sono su S3. La dimensione del database sul sistema live è ora di circa 230 GB. I backup compressi sono di circa 25 GB, credo.

4 Mi Piace

Wow, questo è uno dei più grandi! A quella dimensione, l’operazione del database è solitamente un po’ più problematica, in effetti.

2 Mi Piace

Ehi. Hai fatto un po’ di aspirapolvere ultimamente?

No, avevo l’impression che l’autovacuum si occupasse di questo? No?

Penso che dovrebbe. Non mi è chiaro cosa lo attivi. Penso che farne uno extra non faccia male e possa farti risparmiare un po’ di spazio. È consigliato dopo l’aggiornamento se lo fai sul posto. L’ho visto ripulire uno spazio considerevole un paio di volte.

Se il tuo database è di 230 GB, lo ripristinerei sicuramente su un nuovo server. Il tempo di inattività per la lettura e la scrittura di 230 GB sarà significativo.

1 Mi Piace