Auf einem Server habe ich ein Verzeichnis /opt/kafka/data/topics.
$ du -hs /opt/kafka/data/topics
52M /opt/kafka/data/topics
Wenn ich dieses Verzeichnis wie tar
$ tar czfv /tmp/topics.tar.gz /opt/kafka/data/topics
Ich bekomme eine Dateigröße, die Sinn macht
$ ls -alh /tmp/topics.tar.gz
-rw-r--r-- 1 user user 11M Jan 12 15:15 kafka
Wenn ich jedoch topics.tar.gzauf meinen lokalen OS X-Computer herunterlade und ihn extrahiere, belegt er 10 GB!
Bei /opt/kafka/data/topicsgenauerer Betrachtung der Inhalte auf dem Server ist mir aufgefallen, dass dementsprechend lsviele 10MB-Dateien enthalten sind:
$ find /opt/kafka/data -type f -exec ls -alh {} \;
... [output]
-rw-r--r-- 1 user user 10M Jan 12 02:45 /opt/kafka/data/topics/user-entities-KTABLE-REDUCE-STATE-STORE-0000000178-changelog-1/00000000000000000000.index
-rw-r--r-- 1 user user 10M Jan 12 02:45 /opt/kafka/data/topics/user-entities-KSTREAM-KEY-SELECT-0000000123-repartition-2/00000000000000000012.index
... [and many more]
du meldet, dass jede dieser 10 MB-Dateien 0 Byte groß ist:
$ du -h /opt/kafka/data/topics/user-entities-KTABLE-REDUCE-STATE-STORE-0000000178-changelog-1/00000000000000000000.index
0 /opt/kafka/data/topics/user-entities-KTABLE-REDUCE-STATE-STORE-0000000178-changelog-1/00000000000000000000.index
Also, was ist los? Offensichtlich fehlt mir hier etwas:
dumeldet insgesamt 52 Millionen. Dies ist sinnvoll, da das/opt/kafka/datagemountete Gerät nur 5 GB hat,dfnur 2% voll ist und alles noch funktioniert.targzipst den Inhalt auf 10M. Das macht auch Sinn.lsmeldet, dass sich viele der Dateien auf 10 MB Festplatte befinden, und wenn ich das Archiv extrahiere, erhalte ich 10 GB.dumeldet, dass jede dieser Dateien 0 Byte groß ist.mountmeldet das/dev/sdc on /opt/kafka/data type ext4 (rw,relatime,data=ordered)
Nichts passt zusammen. Gibt es eine Art transparente Komprimierung auf der Festplatte, die mir nicht bekannt ist?
ls) sind spärlich. Sie werden von als 0 Bytes gemeldet duund sind in der Tat leer
tar --sparseOption beim Erstellen des Archivs? Hilft es? Link .
ls10 MB gemeldet, aber du0 Byte?
man tarunter OS X eine Option -Szum Extrahieren enthält: (x mode only) Extract files as sparse files. For every block on disk, check first if it contains only NULL bytes and seek over it otherwise. This works similiar to the conv=sparse option of dd.Dies kann hilfreich sein.