Irgendwelche Ratschläge, wie man Platz sparen kann?

Wir betreiben eine selbst gehostete Discourse-Site auf DigitalOcean und haben eine 25 GB Festplatte. Ich habe gerade versucht, unser Discourse-Image zu aktualisieren, und die Meldung erhalten, dass mehr Speicherplatz benötigt wird, um fortzufahren. Nachdem wir das Docker-Image und die Container bereinigt haben, fehlen uns immer noch 0,4 GB.

Haben Sie Ratschläge, wie wir Speicherplatz sparen können? Sowohl um jetzt ein Update durchzuführen als auch um zukünftig Speicherplatz zu sparen. Ich weiß, dass wir bald die Größe ändern müssen, aber es wäre hilfreich, wenn wir mindestens ein weiteres Discourse-Image-Update durchführen könnten.

4 „Gefällt mir“

Speichern Sie Backups lokal?
Wenn ja, könnte es helfen, ein paar alte zu löschen. 0,4 GB (d. h. 400 MB) sollten überschaubar sein.

Sie könnten auch versuchen, etwas Speicherplatz auf dem Hostsystem freizugeben.

1 „Gefällt mir“

Versuchen Sie, Ihren Server neu zu starten, und versuchen Sie es dann erneut, wenn Sie sicher sind, dass genügend Speicherplatz vorhanden ist.

Wir nutzen die Backup-Funktionalität von DigitalOcean. Ich habe keine Option gesehen, eines unserer Backups manuell zu löschen.

Wie gehe ich dabei vor? Ich habe keine Programmiererfahrung, bin aber in der Lage zu verstehen, was zu tun ist und warum, nachdem ich Anweisungen erhalten habe.

Habe versucht, neu zu starten, aber keine Änderung.

Nachdem ich sudo du -h --max-depth 1 ausgeführt habe, sind hier meine Ergebnisse:

Versuchen Sie, ungenutzte Docker-Objekte zu bereinigen

1 „Gefällt mir“

Zu diesem Zeitpunkt würde ich mir Ärger ersparen und die Arbeit erledigen, um die Größe jetzt zu ändern.

3 „Gefällt mir“

Ich habe alles bereinigt, außer ungenutzten Volumes, da docker volume ls zeigte, dass wir nur eines haben.

Hast du es versucht?

./launcher cleanup

1 „Gefällt mir“

Ja!

Ich habe mir unsere Docker-Images mit docker images -a genauer angesehen und sehe Folgendes.

Was ist mit <none> los?

1 „Gefällt mir“

Einige Recherchen führten mich zu diesem sehr interessanten Kommentar.

rofranoJohn Rofrano

Nov '17

Es ist wichtig zu verstehen, warum Sie zwischenzeitlich nicht markierte Images haben, die als <none> <none> angezeigt werden, um diese zu vermeiden, da Sie sie, wie Sie gesehen haben, nicht entfernen können, wenn sie in Gebrauch sind.

Der Grund, warum nicht markierte Images auftreten, ist, dass Sie ein Image erstellt haben, dann das Dockerfile geändert und dieses Image erneut erstellt haben, und es einige der Schichten aus dem vorherigen Build wiederverwendet hat. Jetzt haben Sie ein nicht markiertes Image, das nicht gelöscht werden kann, da einige seiner Schichten von einer neuen Version dieses Images verwendet werden.

Die Lösung ist:

  • Löschen Sie die neue Version des Images
  • Löschen Sie das nicht markierte Image und
  • Erstellen Sie die neue Version des Images neu, damit es alle Schichten besitzt.

Sie werden mit einem einzigen markierten Image zurückbleiben, das alle Schichten der vorherigen nicht markierten Images und des neuen Images enthält.

~jr

Ich hatte nicht erwartet, 2,64 GB in einem Docker-Image zu finden, daher versuche ich jetzt herauszufinden, was dort passiert. Wenn ich dieses Image überhaupt nicht benötige, sind wir definitiv weit davon entfernt, vergrößern zu müssen.

Haben Sie einen
./launcher cleanup
ausgeführt? Ich empfehle Ihnen jedoch, die Größe zu ändern. Ich bin überrascht, dass Sie es mit 25 GB so lange geschafft haben.

Haben Sie auch in shared/backups/default nachgesehen?

Ich würde den Backups von DigitalOcean auf keinen Fall vertrauen, um Ihr Forum zu sichern.

2 „Gefällt mir“

Wie lange? Ich sehe keinen Hinweis darauf – ich weiß, dass ich glücklich ein Forum mit 20 GB und ein anderes mit 25 GB betreibe.

Unter „shared“ haben Sie möglicherweise viele Sicherungsdaten (vielleicht in shared/standalone/backups/default). Möglicherweise haben Sie auch alte Datenbankkopien oder alte Protokolldateien. Ich empfehle Ihnen, Folgendes auszuführen:
du -kx / | sort -n | tail -49
oder ähnliches.

Es ist fair zu erwähnen, dass Sie Zeit auf Kosten von Geld sparen können, indem Sie zu einer größeren Instanz wechseln. Oder Sie können den gegenteiligen Kompromiss eingehen.

Das beunruhigt mich ein wenig. DO hilft Ihnen vielleicht bei Backups Ihres gesamten Systems, aber wenn ich Sie wäre, wäre ich glücklicher, wenn ich wüsste, wie man Discourse-Backups erstellt und wie man eine sichere lokale Kopie erhält. Und wie man die Backups bereinigt. (Wenn DO aus irgendeinem unglücklichen Zufall Ihre Instanz und Ihr Konto löschen würde, möchten Sie, dass Ihre Daten das überleben.)

:woman_facepalming:t3: Wir verwenden ebenfalls die Discourse-Backup-Funktionalität und mir ist aufgefallen, dass wir die alten Backups dort nicht gelöscht hatten.

Nun, ich habe alle bis auf das neueste Backup über die Discourse-Oberfläche gelöscht und das neueste Backup auch auf meine lokale Festplatte heruntergeladen. Damit bin ich weniger als 100 MB davon entfernt, genügend Speicherplatz zu haben.

Hier ist, was ich bekomme, wenn ich diesen Befehl in var/discourse ausführe

656876  /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www/discourse
819624  /var/log/journal/e734ad1931dbee4740881cc15c9e7a9a
826292  /var/discourse/shared/standalone
826296  /var/discourse/shared
831476  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache/yarn/v6
831484  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache/yarn
831492  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse/.cache
832188  /var/discourse
845992  /lib/modules
850136  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home/discourse
850144  /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/home
898764  /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff/usr/lib
966656  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var/www/discourse
966660  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var/www
966664  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff/var
991800  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765/diff
991816  /var/lib/docker/overlay2/21f4d6109bd809c584ae84f9f7c50286c6126176f86a2ef61c4c24ce1e633765
994980  /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff/usr/lib
1089092 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var/www/discourse
1089096 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var/www
1130168 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff/var
1177644 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49/diff
1177660 /var/lib/docker/overlay2/9817d45d2728572ad6dc4d62df5944dfad69c35b76753ceb260e0130863ece49
1224436 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www/discourse
1224440 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var/www
1224444 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff/var
1234612 /lib
1248080 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d/diff
1248096 /var/lib/docker/overlay2/81fd81f27d0d8fe795f510fe8d70c4ecad96405b0e1dbb57f0440fe9c398a30d
1342320 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff/usr
1516440 /usr
1543656 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var/www/discourse
1543664 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var/www
1558580 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff/var
1659548 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91/diff
1659564 /var/lib/docker/overlay2/58e9df9d9e2e10efb3dcf68771edd172664f8d91e3aa2e0b280fd4549bfd2a91
2040472 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff/usr
2171304 /var/log/journal/d893af269dfb5f73239a5b6761d49ea0
2388612 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6/diff
2388628 /var/lib/docker/overlay2/2749f8a24b3e28af399b256ecab7f2db0cb146939a0ef56e83858a0e696c3df6
2461904 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058/diff
2461924 /var/lib/docker/overlay2/7bedcd4746ebce6e3fe7bbb5ec2c987a1c046efc715fad1e53201b18b97b6058
3064672 /var/log/journal
3276268 /var/log
10107180        /var/lib/docker/overlay2
10131984        /var/lib/docker
10396840        /var/lib
14869684        /var
20007992        /

Ich habe zusätzliche Anweisungen erhalten, wie ich mit Folgendem umgehen soll:

Die Details sind:

rofranoJohn Rofrano

1

20h

Der Befehl zum Entfernen eines Images lautet:

docker rmi {image_name}

Wobei {image_name} der Name des zu löschenden Images ist. Sie können auch die Image-ID zum Löschen des Images verwenden (z. B. docker rmi {image_id}). Dies ist das, was Sie benötigen, um ein Image mit dem Namen <none> zu löschen.

Nehmen wir zum Beispiel an, Sie haben die folgenden Images:

REPOSITORY           TAG        IMAGE ID       CREATED              SIZE
my-new-image         latest     c18f86ab8daa   12 Sekunden her      393MB
<none>               <none>     b1ee72ab84ae   Vor einer Minute     393MB
my-image             latest     f5a5f24881c3   2 Minuten her        393MB

Es ist möglich, dass das <none>-Image nicht gelöscht werden kann, da my-new-image Schichten davon verwendet. Was Sie tun müssen, ist:

docker rmi my-new-image:latest
docker rmi b1ee72ab84ae
docker built -t my-new-image .

Dies entfernt my-new-image:latest, das Schichten des <none>-Images wiederverwendet. Dann löscht es das <none>-Image unter Verwendung seiner Image-ID b1ee72ab84ae. Schließlich baut es my-new-image neu auf und erstellt alle benötigten Schichten.

Stellen Sie außerdem sicher, dass Sie keine gestoppten Container haben, die immer noch das <none> “unmarkierte” Image verwenden. Verwenden Sie docker ps -a, um alle Images anzuzeigen, einschließlich der beendeten. Wenn ja, verwenden Sie docker rm {container_id}, um den Container zu entfernen, und versuchen Sie dann erneut, das <none>-Image zu entfernen.

Was meint ihr alle dazu?

Ich denke, Sie können hier Dinge verbessern:

Siehe diesen früheren Austausch:

und

3 „Gefällt mir“

Das hat den Trick gemacht und ich habe auch die Richtlinie geändert!

Ich möchte immer noch das Problem mit dem \u003cnone\u003e-Bild auf den Grund gehen (da es lächerlich ist, dass es 2 GB+ Speicherplatz beansprucht), aber du hast mein dringendstes Problem gelöst, genügend Speicherplatz für das Upgrade zu schaffen! Danke!!

3 „Gefällt mir“

Absolut richtig! Vorerst habe ich viel Spaß daran, neue Dinge zu lernen, daher lohnt sich die Zeit.