Auf den meisten Festplatten tummeln sich unbemerkt doppelt und dreifach gespeicherte Daten. Diesen überflüssigen Platzverschwendern geht LessFS mit einem ausgefeilten Verfahren an den Kragen.
Festplatten scheinen im Laufe eines Arbeitslebens irgendwie zu schrumpfen. Wo nach dem Kauf noch gähnende Leere herrschte, liegen plötzlich Abertausende Dateien. Ironischerweise haben viele von ihnen sogar den selben oder zumindest ähnliche Inhalte. So schluckt jede sicherheitshalber aufbewahrte Version einer Rund-Mail wertvollen Plattenplatz.
Noch mehr Bytes belegen die regelmäßig angelegten Backups, ganz zu schweigen von den drei virtuellen Maschinen mit den zu Testzwecken aufgesetzten Distributionen. In diesem Extremfall lungern auf der Festplatte sogar vier mal die gleichen Systemdateien. Gerade in solchen Fällen wäre es schön, wenn Linux identische Daten nur ein einziges Mal speicherte.
Eingedampft
Das dachte sich Mark Ruijter und schuf kurzerhand das Dateisystem LessFS. Im Gegensatz zu herkömmlichen Vertretern wie Ext4 und Co. schreibt es identische Datenblöcke nur einmal auf die Festplatte. Nach außen hin bleibt dabei alles beim Alten: Kopieren Sie beispielsweise ein Dokument, sehen Dateimanager wie Dolphin und Nautilus weiterhin zwei Dateien. Tatsächlich liegt das Original erstmal einfach auf der Festplatte.
Ändern Sie die Kopie, speichert LessFS nur die gegenüber dem Original modifizierten Teile. Da es auf diese Weise Datei-Duplikate vermeidet, heißt das Vorgehen auf Englisch De-Duplicating (Deduplizierung). Um weiteren Speicherplatz zu sparen, komprimiert LessFS schließlich noch alle tatsächlich gespeicherten Daten. Das hat den angenehmen Nebeneffekt, dass Linux insbesondere große Dateien wesentlich schneller lädt.
Es gibt allerdings einen Haken: Tritt ein Festplattendefekt auf, können Sie beim herkömmlichen Speichern der Daten eventuell noch auf eine ältere Kopie des Dokuments zugreifen. LessFS fasst diese Dateien jedoch zusammen, womit sie folglich allesamt verloren wären. Regelmäßige Sicherungen auf einen zweiten Datenträger bleiben daher unerlässlich.
Testfahrt
Um LessFS auszuprobieren, wechseln Sie auf die Homepage des Entwicklers Mark Ruijter [1] oder verwenden die Dateien von der Heft-DVD. Das LessFS-Archiv enthält den Dateisystemtreiber und ein paar Werkzeuge. Um diese zu übersetzen und zu installieren, stellen Sie zunächst per uname -r sicher, dass Ihr Linux-System auf einem Kernel in Version 2.6.26 oder höher basiert. Anschließend nutzen Sie den Paketmanager, um den C-Compiler GCC, das Dienstprogramm Make sowie die Entwicklerpakete zu vier Bibliotheken zu installieren:
- Zlib (meist im Paket zlib-devel, unter Ubuntu zlib1g-dev),
- Bzip2 (häufig in libbz2-devel oder libbz2-dev),
- Mhash (mhash-devel beziehungsweise libmhash-dev) und
- FUSE (fuse-devel respektive libfuse-dev).
Vom Paketmanager zusätzlich als Abhängigkeiten vorgeschlagene Pakete nicken Sie einfach ab.
Grüße aus Japan
Alle wichtigen Informationen über die vorgenommenen Deduplizierungen merkt sich LessFS in einer Datenbank. Mark Ruijter hat sich dabei für das etwas exotische Tokyo Cabinet entschieden. Einige wenige Distributionen führen es in ihren Repositories, Ubuntu 10.04 beispielsweise in den Paketen libtokyocabinet8 und libtokyocabinet-dev. Mag Ihr Paketmanager sie nicht finden, greifen Sie zum Quellcodearchiv unter [2] oder auf der Heft-DVD. Entpacken Sie es, und installieren Sie die Datenbank dann mit den drei folgenden Befehlen:
./configure --enable-off64 make sudo make install
Auf 64-Bit-Systemen lassen Sie den Parameter --enable-off64 hinter ./configure weg. Er sorgt auf 32-Bit-Systemen dafür, dass die von Tokyo Cabinet verwalteten Datenbanken über 2 GByte hinaus wachsen können.
Sind alle Voraussetzungen erfüllt, übersetzen und installieren Sie den entpackten LessFS-Quellcode mit dem bekannten Dreisatz:
./configure make sudo make install
Kopieren Sie anschließend noch die im Quellcodearchiv mitgelieferte Konfigurationsdatei less.cfg in das Verzeichnis /etc.
Dampfwalze
Bevor Sie die eigentliche Deduplizierung anwerfen können, müssen Sie einmal die Tokyo-Cabinet-Datenbank erzeugen. Dies übernimmt das Werkzeug mklessfs:
sudo /usr/local/sbin/mklessfs -fc /etc/lessfs.cfg
Gemäß den Vorgaben in der Konfigurationsdatei erstellt es die Datenbank im Unterverzeichnis /data. Nun starten Sie die eigentliche Deduplizierung:
sudo lessfs /etc/lessfs.cfg /backup
Dieser Befehl hängt das Verzeichnis /backup ein und stellt es gleichzeitig unter die Kontrolle von LessFS. Wie beim Mounten üblich, muss /backup bereits existieren. Sämtliche Dateien, die Sie ab sofort in diesen Ordner kopieren, verschieben oder in ihm erstellen, sind automatisch dedupliziert und komprimiert. Alle übrigen Verzeichnisse und Dateien ignoriert LessFS. Damit auch normale Benutzer Dateien unter /backup ablegen können, müssen Sie dem Verzeichnis noch die entsprechenden Rechte zuweisen.
Erstellen Sie jetzt testweise unter /backup eine Datei und kopieren Sie sie einmal an Ort und Stelle. Was dabei tatsächlich hinter den Kulissen passiert, verrät die versteckte Datei .lessfs/lessfs_stats:
sudo more /backup/.lessfs/lessfs_stats
Ihr zufolge nimmt die Kopie kein einziges Byte in Anspruch (Abbildung 1). Nach außen hin verschleiert LessFS seine Tätigkeiten, wie schon ein einfaches ls /backup beweist.

ls existieren wie gewohnt zwei Dateien, auch wenn LessFS sie im Hintergrund dedupliziert.” width=”300″ height=”222″ />
Abbildung 1: LessFS legt sich transparent über das vorhandene Dateisystem. Für Programme wiels existieren wie gewohnt zwei Dateien, auch wenn LessFS sie im Hintergrund dedupliziert.Siegfried und Roy
Hängen Sie das Verzeichnis /backup aus, so bleibt es erstaunlicherweise komplett leer, sein Inhalt scheint spurlos verschwunden. Im Gegensatz zu herkömmlichen Dateisystemen wie ext4 schreibt LessFS die Daten nicht direkt auf die Festplatte, sondern schiebt sie stattdessen in die Tokyo-Cabinet-Datenbank. Sollte sie einen Kratzer abbekommen, sieht man nach dem erneuten Mounten per lessfs-Befehl vielleicht noch die dort hinterlassenen Dateien, ihre Inhalte sind jedoch samt und sonders verloren.
Folglich empfiehlt es sich dringend, die komplette Datenbank im Verzeichnis /data regelmäßig auf einen externen Datenträger zu sichern. Das Verzeichnis /backup selbst dagegen schließen Sie tunlichst von jeglichen Sicherungsmaßnahmen aus: Da es die von LessFS wiederhergestellten Originaldateien enthält, würden Sie die fetten Duplikate beziehungsweise das deduplizierte Ergebnis sichern.
Einer geht noch
Vereinfacht ausgedrückt mountet LessFS den Inhalt der Datenbank unter /backup. Sie können folglich nicht einfach ein zweites Verzeichnis einhängen:
sudo mkdir /backup2 sudo lessfs /etc/lessfs.cfg /backup2
Damit würden Sie jetzt auch unter /backup2 den Inhalt der Datenbank erreichen, also die exakt gleichen Dateien wie unter /backup vorfinden.
Um zusätzlich das Verzeichnis /images für Festplatten- und ISO-Abbilder zu deduplizieren, benötigen Sie eine weitere Datenbank – und dazu wiederum eine weitere angepasste LessFS-Konfigurationsdatei. Letztere erhalten Sie, indem Sie einfach die bereits vorhandene kopieren, dem Duplikat einen aussagekräftigen Namen geben, wie etwa lessfs_images.cfg, und sie mit einem Texteditor öffnen. Nun ersetzen Sie in sämtlichen Pfadangaben den Präfix /data gegen das Verzeichnis, in dem zukünftig die zweite Datenbank residieren soll – etwa /data_images. Speichern Sie die geänderte Konfigurationsdatei und erzeugen Sie die neue Datenbank mit:
sudo /usr/local/sbin/mklessfs -fc /etc/lessfs_images.cfg
Der Parameter -fc sorgt dafür, dass mklessfs sowohl fehlende Verzeichnisse automatisch anlegt, als auch darin bereits vorhandene Datenbanken löscht. Achten Sie folglich penibel darauf, dass Sie dem Befehl die richtige Konfigurationsdatei mit auf den Weg geben, andernfalls wandert eine schon vorhandene Datenbank samt der darin verwahrten Dateien ins Nirwana. Abschließend mounten Sie wie gewohnt per lessfs das Verzeichnis images:
sudo lessfs /etc/lessfs_images.cfg /images
Für Fortgeschrittene
Wer sich mit FUSE auskennt, auf dem LessFS aufbaut, kann über den zusätzlichen Parameter -o weitere spezielle Einstellungen vornehmen. Standardmäßig nutzt lessfs die Argumente aus Listing 1. Welche Parameter im Einzelnen zur Verfügung stehen, verrät lessfs -help.
Weitere Einstellungen gestattet die Konfigurationsdatei /etc/lessfs.cfg. So dürfen Sie an ihrem Ende auf ein anderes Komprimierungsverfahren umschalten. Setzen Sie dazu vor COMPRESSION=qlz eine Raute (#) und entfernen diese vor dem entsprechenden Verfahren. Zusätzlich lassen sich in der Konfigurationsdatei eine Verschlüsselung aktivieren, die Datenbankeinstellungen verfeinern und an der Hash-Funktion drehen. Letztere ist eine ausgeklügelte mathematische Formel, mit der LessFS schnell mehrere Datenblöcke vergleicht. Durch falsche Einstellungen kann man sich allerdings auch selbst von seinen Daten aussperren, die Verarbeitungsgeschwindigkeit reduzieren und die Gefahr eines Datenverlustes erhöhen. Daher sollten sich genau wie beim Parameter -o nur erfahrene Nutzer über die Konfigurationsdatei hermachen. Welche der dortigen Einstellungen welche Funktionen betreffen, erklärt die Manpage zu LessFS (man lessfs).
Um ein Verzeichnis bereits beim Systemstart zu mounten, müssen Sie LessFS in die Startskripte einbinden. Dazu liegt dem Quellcodearchiv im Unterverzeichnis /etc das Skript lessfs bei. Es folgt dem SystemV-Init-Standard, scheint aber mit der heißen Nadel gestrickt worden zu sein und bleibt somit lediglich eine Vorlage. Um das Skript sinnvoll einzusetzen, müssen Sie zumindest in der Zeile 21 hinter MOUNTPOINT= das einzuhängende Verzeichnis eintragen und es an die Gegebenheiten in Ihrer Distribution anpassen.
Listing 1
-ohard_remove,negative_timeout,entry_timeout=0,attr_timeout=0,use_ino,readdir_ino,default_permissions,allow_other, big_writes,max_read=BLKSIZE,max_write=BLKSIZE
Fazit
Die Idee klingt bestechend: LessFS speichert ausschließlich die absolut notwendigen Daten, wodurch die Festplatte spürbar aufatmet. Zumindest derzeit bleibt dabei jedoch die Datensicherheit auf der Strecke. Nur eine kleine Delle in der Datenbank an der falschen Stelle, schon sind sämtliche Dateien Geschichte. Darüber hinaus gab es Kritik am Verfahren, mit dem LessFS die Duplikate ermittelt [3]. Das Dateisystem eignet sich somit vor allem für flüchtige und temporäre Daten, wie etwa die zu Testzwecken aufgesetzten virtuellen Maschinen. Wertvolle Backups sollte man dem Dateisystem erst nach reiflicher Überlegung anvertrauen. Extrem dürftig fällt auch die Dokumentation aus: Sie beschränkt sich im Wesentlichen auf die Manpage, sowie die kargen Hilfeseiten der Programme.
Glossar
-
FUSE
-
Das Kernel-Modul Filesystem in Userspace ermöglicht es, Dateisystem-Treiber zu entwickeln, die nicht mit den Rechten des Betriebssystemkerns laufen, sondern mit denen normaler Programme. Das hat den Vorteil, dass jeder Benutzer das vom Treiber unterstützte Dateisystem einbinden und wieder aushängen darf.
Infos
[1] LessFS-Projektseite: http://www.lessfs.com/
[2] Datenbank Tokyo Cabinet: http://fallabs.com/tokyocabinet/
[3] Diskussion über LessFS: http://forums.gentoo.org/viewtopic-t-799870-start-0-postdays-0-postorder-asc-highlight-.html






“Deduplizierend” ist gut! Andere hätten von “löschendem Dateisystem” gesprochen.
Aber das hat wohl negative Konnotationen.