Guten Morgen!
Ich möchte dieses Thema mal aufgreifen, denn dieses Zookeeper-Verhalten ist wirklich ziemlich doof für die Datensicherung. Unsere Produktivumgebung ist ebenfalls gedockert, das Docker-Volume welches die Zookeeper-Daten enthält ist ein Bind Mount, sodass die Zookeeper Dateien im Endeffekt im Dateisystem des Docker-Host liegen. Hierbei handelt es sich eine ext4-Partition.
Bei ext4 nutzt Zookeeper offenbar irgendwelche Techniken des Dateisystems, damit die Dateien im Dateisystem deutlich weniger phyischen Speicherplatz belegen, als sie vorgeben.
Außerhalb des data-Ordner ist mit du ist zu sehen, dass nur 92MB phyischer Speicherplatz benötigt wird:
[root@1a0a7df858a3 zookeeper]# cd /opt/agorum/agorumcore/zookeeper/data/
[root@1a0a7df858a3 data]# du -sh *
92M version-2
4.0K zookeeper_server.pid
Schauen wir uns die Dateien mit ls im version-2-Ordner an, sehen wir jedoch, dass jede Datei so aussieht, als sei sie 64MB groß.
.......
-rw-r--r-- 1 root root 67108880 Aug 3 03:04 log.6daf
-rw-r--r-- 1 root root 67108880 Aug 3 06:59 log.6dc8
-rw-r--r-- 1 root root 67108880 Aug 4 03:04 log.6de4
-rw-r--r-- 1 root root 67108880 Aug 4 06:59 log.6dfd
-rw-r--r-- 1 root root 67108880 Aug 5 03:04 log.6e19
-rw-r--r-- 1 root root 67108880 Aug 5 06:59 log.6e32
-rw-r--r-- 1 root root 67108880 Aug 6 03:04 log.6e4e
-rw-r--r-- 1 root root 67108880 Aug 6 06:59 log.6e67
-rw-r--r-- 1 root root 67108880 Aug 7 03:04 log.6e83
-rw-r--r-- 1 root root 67108880 Aug 7 03:06 log.6e8b
-rw-r--r-- 1 root root 67108880 Aug 7 06:59 log.6ea2
-rw-r--r-- 1 root root 67108880 Aug 8 03:04 log.6ebe
-rw-r--r-- 1 root root 67108880 Aug 8 06:59 log.6ed7
-rw-r--r-- 1 root root 67108880 Aug 9 03:04 log.6ef3
-rw-r--r-- 1 root root 67108880 Aug 9 06:59 log.6f0c
-rw-r--r-- 1 root root 67108880 Aug 10 03:04 log.6f28
-rw-r--r-- 1 root root 67108880 Aug 10 04:09 log.6f41
-rw-r--r-- 1 root root 67108880 Aug 10 06:59 log.6f49
-rw-r--r-- 1 root root 67108880 Aug 9 2021 log.6f5
-rw-r--r-- 1 root root 67108880 Aug 11 03:04 log.6f63
-rw-r--r-- 1 root root 67108880 Aug 11 06:59 log.6f7c
-rw-r--r-- 1 root root 67108880 Aug 12 03:04 log.6f98
-rw-r--r-- 1 root root 67108880 Aug 12 06:59 log.6fb1
-rw-r--r-- 1 root root 67108880 Aug 13 03:04 log.6fcd
-rw-r--r-- 1 root root 67108880 Aug 13 06:59 log.6fe6
-rw-r--r-- 1 root root 67108880 Aug 14 03:04 log.7002
-rw-r--r-- 1 root root 67108880 Aug 14 06:59 log.701b
-rw-r--r-- 1 root root 67108880 Aug 15 03:04 log.7037
-rw-r--r-- 1 root root 67108880 Aug 15 06:59 log.7050
-rw-r--r-- 1 root root 67108880 Aug 16 03:04 log.706c
-rw-r--r-- 1 root root 67108880 Aug 16 06:59 log.7085
-rw-r--r-- 1 root root 67108880 Aug 17 03:04 log.70a1
-rw-r--r-- 1 root root 67108880 Aug 17 06:59 log.70ba
-rw-r--r-- 1 root root 67108880 Aug 18 03:04 log.70d6
-rw-r--r-- 1 root root 67108880 Aug 18 06:59 log.70ef
-rw-r--r-- 1 root root 67108880 Aug 18 16:42 log.710b
-rw-r--r-- 1 root root 67108880 Aug 18 16:45 log.7124
-rw-r--r-- 1 root root 67108880 Aug 18 16:48 log.712c
-rw-r--r-- 1 root root 67108880 Aug 18 20:59 log.7143
-rw-r--r-- 1 root root 67108880 Aug 9 2021 log.715
-rw-r--r-- 1 root root 67108880 Aug 18 21:20 log.715c
-rw-r--r-- 1 root root 67108880 Aug 18 21:22 log.7161
-rw-r--r-- 1 root root 67108880 Aug 19 03:04 log.717b
-rw-r--r-- 1 root root 67108880 Aug 19 06:59 log.7194
-rw-r--r-- 1 root root 67108880 Aug 19 17:18 log.71b0
.......
Alles anzeigen
Welche ext4-Magie Zookeeper da für dieses Phänomen verwendet macht weiß ich genauso wenig wie unsere Backup-Software . Die sichert nämlich stets die 64MB pro Datei. Und von denen haben wir im Produktivsystem mittlerweile 1092 Stück. Das macht aktuell: 1092 * 64MB / 1024 = 68GB Overhead im Backup, Tendenz steigend. Und dieser würde im Restore-Fall auch wieder zurückgespielt werden.
Uns ist dieses Problem bereits seit 1,5 Jahren bekannt und wir standen bereits mit dem Agorum-Support in Kontakt. Wir hatten zuletzt die Empfehlung erhalten folgende (die letzten 4 Zeilen) Einstellungen in der zoo.cfg zu tätigen, die wohl von Agorum mittlerweile getestet und freigegeben wurden:
tickTime=2000
dataDir=/opt/agorum/agorumcore/jboss/server/default/../../../zookeeper/data
clientPort=9981
minSessionTimeout=60000
maxSessionTimeout=120000
snapCount=100
preAllocSize=1M
autopurge.snapRetainCount=3
autopurge.purgeInterval=12
Das ist nun ziemlich genau 7 Tage her, bisher haben sich die Log-Dateien noch nicht reduziert. Müssen wir einfach noch länger warten oder hätte sich in der Zeit schon etwas tun müssen?