Workshop: Das deduplizierende Dateisystem OpenDedup

Abgespeckt

Im Lauf der Zeit sammeln sich auf Massenspeichern zahlreiche Dateien mit teilweise identischen Inhalten. Das gilt insbesondere für Sicherheitskopien, temporäre Dateien und Log-Daten. Deduplizierende Dateisysteme wie SDFS speichern solche redundanten Daten nur ein einziges Mal auf dem Datenträger und sparen so Plattenplatz. Es kann die zu speichernden Daten sogar auf mehrere Rechnerknoten verteilen.
Mit einer vernünftigen Backup-Strategie wappnen sich Administratoren erfolgreich gegen Datenverluste und längere Systemausfälle. So zeigen wir Ihnen ... (mehr)

Das im Rahmen des OpenDedup-Projekts entwickelte Dateisystem SDFS [1] zerteilt eine zu speichernde Datei zunächst in einzelne Datenblöcke. Anschließend legt es nur die Blöcke auf der Festplatte ab, die es dort noch nicht gibt. Auf diese Weise kann SDFS auch nur teilweise identische Dateien deduplizieren. Nach außen hin bekommen Nutzer von der kompletten Abspeckkur nichts mit: Sie sehen weiterhin eine Sicherheitskopie, obwohl physisch auf der Festplatte nur noch das Original liegt. SDFS stellt dabei sicher, dass bei einer Bearbeitung des Originals nicht auch die Sicherheitskopie geändert wird.

Blockbasiertes Speichern

SDFS speichert die Datenblöcke wahlweise lokal, auf bis zu 126 Rechnerknoten in einem Netzwerk oder in der Cloud. Ein eingebauter Load-Balancer sorgt dabei für eine gleichmäßige Auslastung der Knoten. Damit kann SDFS auch große Datenmengen flott verarbeiten – eine entsprechend fixe Netzwerkanbindung vorausgesetzt. In jedem Fall setzt sich SDFS als Schicht über das vorhandene Dateisystem. SDFS arbeitet wahlweise mit festen oder variablen Blockgrößen. Auf diese Weise lassen sich sowohl strukturierte als auch unstrukturierte Daten effizient deduplizieren. Des Weiteren kann das Dateisystem mit einer Blockgröße von 4 KByte umgehen. Dies ist unter anderem notwendig, um virtuelle Maschinen effizient zu deduplizieren. Identische Datenblöcke entdeckt SDFS, indem es für jeden Block einen Fingerabdruck in Form eines Hashwerts erstellt und diese Werte dann miteinander vergleicht.

Da jeder Datenblock nur noch einmal auf dem Datenträger liegt, steigt allerdings das Ausfallrisiko: Ist ein Block defekt, sind es automatisch auch alle Dateien mit diesem Inhalt. SDFS kann deshalb jeden Datenblock auf bis zu sieben Speicherknoten redundant speichern. Abschließend ermöglicht das Dateisystem, Snapshots für Dateien und Verzeichnisse zu schießen. SDFS steht unter der GNU GPL v2 und lässt sich somit auch in Unternehmen kostenlos einsetzen. Den Quellcode können Sie auf GitHub einsehen [2].

SDFS unterstützt ausschließlich Systeme mit einem 64 Bit-Linux auf einer x86-Architektur. Zwar befindet sich auch eine Windows-Version [3] in der Entwicklung, diese war bei Redaktionsschluss jedoch noch als Beta gekennzeichnet und galt als ungetestet.

Des Weiteren stellen die SDFS-Entwickler eine fertige Appliance im Austauschformat OVA bereit [4]. Diese virtuelle Maschine bietet nach dem Start einen NAS-Speicher an, der die angelieferten Dateien mit SDFS dedupliziert und auf seiner (virtuellen) Festplatte ablegt. Unter der Haube werkelt dabei ein Ubuntu-System.

Installation von SDFS

Um SDFS unter einem bestehenden Linux-System zu installieren, spielen Sie zunächst über die Paketverwaltung das Java Runtime Envrionment (JRE) mindestens in der Version 7 ein. Es genügt dabei das freie OpenJDK. Unter Ubuntu versteckt es sich im Paket "openjdk-7-jre-headless", bei Red Hat und CentOS installieren Sie das Paket "java-1.7.0-openjdk". Wer mit Ubuntu Linux ab Version 14.04, RedHat 7 oder CentOS 7 arbeitet, lädt sich jetzt unter [4] das zu seiner Distribution passende Paket herunter. Das Red-Hat-Paket gilt dabei auch für CentOS. Anschließend müssen Sie das Paket nur noch installieren, unter Ubuntu etwa mit »sudo dpkg -i sdfs-2.0.11_amd64.deb« , das RedHat- und CentOS-Pendant lautet »rpm -iv --force SDFS-2.0.11-2.x86_64.rpm« .

Nutzer einer anderen Distribution greifen unter [4] im Abschnitt "Linux (Intel 64bit)" zu den "SDFS Binaries" und entpacken das heruntergeladene Tar-Archiv. Die dabei freigelegten Werkzeuge rufen Sie im Folgenden entweder direkt auf oder kopieren alle Dateien per Hand in ein passendes Systemverzeichnis. Die Dateien aus dem Unterverzeichnis »etc/sdfs« gehören in jedem Fall in das Verzeichnis »/etc/sdfs« .

Auf welche Weise Sie SDFS auch installiert haben, abschließend müssen Sie noch die maximale Anzahl der gleichzeitig geöffneten Dateien hochsetzen. Dazu melden Sie sich am Terminal zunächst als Benutzer "root" an. Unter Ubuntu gelingt dies via "sudo su". Anschließend setzen Sie die folgenden zwei Befehle ab:

echo "* hardnofile 65535" > /etc/security/limits.conf
echo "* soft nofile 65535" > /etc/security/limits.conf

Auf Red Hat- und CentOS-Systemen müssen Sie noch die Firewall deaktivieren:

service iptables save
service iptables stop
chkconfig iptables off

SDFS verwendet eine modifizierte Fassung von Fuse, die das Dateisystem jedoch mittlerweile selbst mitbringt. Bereits im System installierte Fuse-Komponenten bleiben unangetastet. Fuse ermöglicht es, Dateisystemtreiber im User-Mode und somit wie ein Programm auszuführen [5].

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Setup eines Kubernetes-Clusters mit Kops

Vor allem für Testinstallationen von Kubernetes gibt es einige Lösungen wie Kubeadm und Minikube. Für das Setup eines Kubernetes-Clusters in Cloud-Umgebungen hat sich Kops als Mittel der Wahl bewährt. Wir beschreiben seine Fähigkeiten und geben eine Anleitung für den praktischen Einsatz. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018

Microsite