Docker und Btrfs

OdinsAuge

Benutzer
Mitglied seit
12. Nov 2015
Beiträge
377
Punkte für Reaktionen
36
Punkte
34
Btrfs wird ja für Datenbanken nicht empfohlen. Und ich hab das auch selbst erfahren müssen. Ich hatte nur BTRFS Volumes, eine Anwendung lief bei mir extrem langsam. Nachdem ich MariaDB auf ein neues ext4 Volume verschoben habe, war eine deutliche Performance-Steigerung spürbar.

Die Frage ist, wie sieht das mit MariaDB als Docker-Container bzw. mit Docker generell aus? Ist es besser Docker auf ein ext4-Volume zu installieren? Hat das Dateisystem Einfluss auf MariaDB als Container?
 

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.346
Punkte für Reaktionen
5.602
Punkte
524
trfs wird ja für Datenbanken nicht empfohlen
Wo steht das?
BTRFS braucht ein wenig mehr Systemressourcen, heisst auf älteren DS nicht so empfohlen.
Ich habe eine DS920+ mit 20 GB RAM, 4 x 6 TB HDD SHR BTRFS und 2 x 1 TB NVME-SSD RAID1 BTRFS.
In Docker auf dem SSD Volume laufen mehrere Datenbanken ohne Probleme. Aber auch die System Postgres auf dem HDD Volume lief gut, allerdings habe ich die mittlerweile auch auf das SSD Volume verschoben.
Edit: Und die Möglichkeit Snapshots zu Nutzen, überwiegt meines Erachtens den minimalen Geschwindigkeitsvorteil von Ext4.
 

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.346
Punkte für Reaktionen
5.602
Punkte
524
Was noch zu beachten ist, ist bei BTRFS die Nutzung der Dateiintegritätsprüfung für Ordner mit Datenbanken nicht zu nutzen:
 

Anhänge

  • 1716968607099.png
    1716968607099.png
    187,5 KB · Aufrufe: 25
  • Like
Reaktionen: plang.pl

plang.pl

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
28. Okt 2020
Beiträge
15.029
Punkte für Reaktionen
5.400
Punkte
564
Bei mir läuft die mariadb ebenfalls auf btrfs SSD einwandfrei. Soweit ich weiß, geht Docker doch gar nicht auf ext4 oder täusche ich mich da? Die einzige Quelle, die ich dazu gefunden habe, ist marius: https://mariushosting.com/synology-which-file-system-to-use/ : "Activating Docker DSM"
Zum konkreten Thema hab ich noch das gefunden: https://www.reddit.com/r/synology/comments/kbngkh/docker_performance_on_synology_btrfs/

EDIT: @ctrlaltdelete hat das Wichtigste geschrieben: Die Integrität muss AUS sein!
 

OdinsAuge

Benutzer
Mitglied seit
12. Nov 2015
Beiträge
377
Punkte für Reaktionen
36
Punkte
34
Wo steht das?
BTRFS braucht ein wenig mehr Systemressourcen, heisst auf älteren DS nicht so empfohlen.
Ich habe eine DS920+ mit 20 GB RAM, 4 x 6 TB HDD SHR BTRFS und 2 x 1 TB NVME-SSD RAID1 BTRFS.
In Docker auf dem SSD Volume laufen mehrere Datenbanken ohne Probleme. Aber auch die System Postgres auf dem HDD Volume lief gut, allerdings habe ich die mittlerweile auch auf das SSD Volume verschoben.
Edit: Und die Möglichkeit Snapshots zu Nutzen, überwiegt meines Erachtens den minimalen Geschwindigkeitsvorteil von Ext4.
Das Stand früher im Speichermanager beim anlegen eines neuen Volumes, dort wo man das Dateisystem auswählt. Jetzt steht es tatsächlich nicht mehr dort.
Vielleicht liegt es tatsächlich an der Dateiintegritätsprüfung aber den Performanceboost nach dem moven aufs ext4Volume kann ich nicht abstreiten. Ein Vorgang der vorher 32 Minuten gedauert hat, brauchte danach nur noch 2:30.

Werde das mal testen wenn ich aus dem Urlaub zurück bin.
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
616
Punkte für Reaktionen
74
Punkte
48
Interessantes Thema,….. Ich bin gespannt
 

OdinsAuge

Benutzer
Mitglied seit
12. Nov 2015
Beiträge
377
Punkte für Reaktionen
36
Punkte
34
Was noch zu beachten ist, ist bei BTRFS die Nutzung der Dateiintegritätsprüfung für Ordner mit Datenbanken nicht zu nutzen:
Wann wird denn eine Datenbank im freigegebenen Ordner gehostet? Installiere ich MariaDB als Paket, wird sie auf dem Volume installiert und benötigt keinen freigegebenen Ordner. Geht es hier um den /data Ordner der für MariaDB als Docker Image gemounted wird?

Installiert man Docker, wird /docker automatisch erstellt, sofern noch nicht vorhanden. Macht man das auf einem Btrfs-Volume ist die Integritätsprüfung übrigens automatisch aktiviert.

So hier mal die Ergebnisse meiner kleinen Versuchsreihe:

Zuerst der Test mit MariaDB als Paket:
  • Zuerst MariaDB auf einem Btrfs-Volume installiert.
    • Ein Vorgang* dauert ca 7 Minuten.
  • Danach MariaDB auf einem ext4-Volume installiert (beide Volumes auf der selben HDD).
    • Der selbe Vorgang* dauert jetzt nur noch knapp 1 Minute.
2. Versuch mit Docker:
  • Docker wird auf einem Btrfs-Volume installiert. Die Integritätsprüfung für /docker ist aus.
    • Der Vorgang** dauert knapp 9 Minuten.
  • Docker wird auf einem ext4-Volume installiert, /docker auch dort erstellt.
    • Der Vorgang** dauert jetzt nur 1 Minute.

* Zum Vorgang: Am PC wurde ein Ordner mit 100 Dateien a 24MB in einen vom Nextcloud-Client gesyncten Ordner verschoben. Die Dateien werden in die Cloud hochgeladen.
- Nextcloud ist direkt am Webserver der DS installiert.
- Die NC Instanz bleib gleich, es wird nur der Installationsort von MariaDB geändert.
** Beim Versuch mit Docker bleibt der Vorgang der selbe, nur dass beide male sowohl Nextcloud als auch MariaDB als Docker-Container laufen.
 
  • Like
Reaktionen: Tuxnet

ctrlaltdelete

Benutzer
Contributor
Sehr erfahren
Maintainer
Mitglied seit
30. Dez 2012
Beiträge
13.346
Punkte für Reaktionen
5.602
Punkte
524
Sehr interessant. Hast du es mal andersherum probiert, zuerst auf ext4 und dann BTRFS, vielleicht wird da auch was gecached?
 

OdinsAuge

Benutzer
Mitglied seit
12. Nov 2015
Beiträge
377
Punkte für Reaktionen
36
Punkte
34
Mit der Versuchsreihe ohne Docker, ja. Bin auch mal zwischen Festplatten gewechselt.

Die Nextcloud in der WebStation nutze ich auch produktiv. Die Performance war immer eher mau. Beim Arbeiten mit Lightroom/Photoshop gabs Synchronisierungsprobleme und eben der Upload vieler Dateien hatte enormen overhead, wie man am Versuch sieht.
Mir ist dann eingefallen, dass ich wo gelesen habe, dass Btrfs für Datenbanken nicht so geeignet wäre und habs umgestellt und seit dem sind besagte Probleme Geschichte. Ich hab für den Versuch nochmal die Datenbank zurück verschoben.
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
616
Punkte für Reaktionen
74
Punkte
48
Wie sieht es aus, wenn man die Datenbank auf einen usb Stick auslagert ? Kannst du das auch mal bitte testen, wenn du etwas Luft hast ? Danke
 

maxblank

Benutzer
Contributor
Sehr erfahren
Mitglied seit
25. Nov 2022
Beiträge
3.960
Punkte für Reaktionen
2.068
Punkte
269
Das würde den Stick schnell zerlegen und IOPS sind beim USB-Stick auch sehr bescheiden.

Was willst du damit bezwecken?
 

Tuxnet

Benutzer
Mitglied seit
02. Jan 2019
Beiträge
616
Punkte für Reaktionen
74
Punkte
48
Ich wollte mal die Geschwindigkeit meiner Nextcloud testen, wenn ich die Datenbank auslagere.
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat