Btrfs - Kompression für alte Dateien

Probleme mit Samba, NFS, FTP und Co.
Antworten
Flashbanger
Beiträge: 41
Registriert: 09.10.2007 19:17:38

Btrfs - Kompression für alte Dateien

Beitrag von Flashbanger » 21.04.2017 21:56:49

Hallo zusammen,

ich habe bei mir einen BananaPi mit Armbian als Samba-Server aufgesetzt und möchte diesen als Backup/Exchange-Laufwerk nutzen. Dies klappt soweit auch sehr gut. Die Daten bestehen jedoch zu einem großen Teil aus wissenschaftlichen Messdaten, die vergleichsweise groß sind, sich jedoch hervorragend komprimieren lassen. Ich habe die Platte daher im Btrfs-Format formatiert, um transparent komprimieren zu können. Doch leider verstehe ich nicht, ob und wie ich die Kompression der Daten steuern kann. Ich würde gerne folgendes erreichen:

- Junge Dateien sollen zunächst unkomprimiert gespeichert werden, damit die Zugriffszeiten auf diese minimal werden.
- Wenn der letzte Zugriffszeitpunkt weit genug in der Vergangenheit liegt (z.B. 3 Monate), dann sollen die Daten im Hintergrund komprimiert werden.
- Hilfreich wäre natürlich auch eine Steuerung der Kompression nach Dateityp, sodass ich besonders gut komprimierbare Dateitypen auf eine Whitelist und inkompressible Typen auf eine Blacklist setzen kann.

Ich habe bereits eine Vermutung, wie dies funktionieren würde und würde folgendermaßen vorgehen:

Kompression in /ect/fstab deaktieren (damit nicht alle Dateien automatisch komprimiert werden)

In regelmäßigen Abständen mit einem shell-script alle Dateien mit einer entsprechend "zu alten" Zugriffszeit über den Befehl

Code: Alles auswählen

btrfs property set <file> compression <zlib|lzo>
individuell komprimieren. Wahlweise dann das Komprimieren zu überspringen, wenn der Dateityp auf der "Blacklist" steht.

Gibt es bereits ein tool welches diese Funktion leisten würde, oder ist es gar intrinsisch mit Btrfs möglich die Kompression nach bestimmten Kriterien (Dateityp, letzte Zugriffszeit, etc.) zu steuern?

Viele Grüße,

Flashbanger


Armbian (Debian Jessie armhf - Kernel 4.9)

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Btrfs - Kompression für alte Dateien

Beitrag von rendegast » 22.04.2017 08:50:48

Das ginge mit einem regelmäßigen 'find'-Job,
Kriterien -mtime und -name.

Code: Alles auswählen

find /target -name "*.bmp" -type f -mtime +90 -exec /pfad/btrfs-compr.sh "{}" \;
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Btrfs - Kompression für alte Dateien

Beitrag von scientific » 22.04.2017 10:42:54

Ob das gewünschte so funktioniert, wage ich zu bezweifeln.
Btrfs komprimiert beim Schreiben, oder nicht. He nach Mountoption.

Mountest du ein unkomprimiertes Subvolume mit compress, so wird ab da komprimiert geschrieben. Umgekehrt aber auch.

Es ergeben sich durch compress aber auch höhere Schreibgeschwindigkeiten, da ja weniger geschrieben werden muss als unkomprimiert. Natürlich zulasten einer höheren CPU-Beanspruchung fürs Komprimieren.
Aber heutige CPUs sollten für dies genügend Reserven haben.

Verwende compress=lzo, das ist am flottesten und komprimiert gut.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten