Mit Mhddfs Festplatten und Verzeichnisse zusammenfassen

Aus LinuxUser 12/2015

Mit Mhddfs Festplatten und Verzeichnisse zusammenfassen

© Setsiri Silapasuwanchai, 123RF

Zusammengelegt

Mit Mhddfs fassen Sie verstreute Daten virtuell zusammen, um einen besseren Überblick zu erhalten.

Ordnung ist das halbe Leben, Unordnung die andere Hälfte – so will es jedenfalls der Volksmund. Wie groß der Anteil an Unordnung tatsächlich ausfällt, bestimmt jeder selbst. Ein heute typisches Problem: Es kostet reichlich Zeit, über die vielen Video- und Audio-Dateien sowie die ständig wachsende Sammlung an Bildern eine feste Systematik zu etablieren und den Überblick zu behalten. Oft liegen die Multimedia-Daten auf verschiedenen Festplatten, was den Durchblick weiter erschwert.

Hier kommt Mhddfs ins Spiel: Mithilfe des Union-Dateisystems fassen Sie Dateien von verschiedenen Orten zu einem virtuellen Verzeichnis zusammen (siehe Kasten “Was ist ein Union-Dateisystem?”). Dabei kombiniert das Tool nicht nur die vorhandenen Daten, sondern gibt außerdem Auskunft über den freien Speicher der einzelnen Dateisysteme.

Was ist ein Union-Dateisystem?

Union-Dateisysteme wie UnionFS, Aufs, OverlayFS und Mhddfs finden in Linux vermehrt Anwendung, seit Klaus Knopper die erste Version des Live-Systems Knoppix veröffentlichte. Solche Dateisysteme erlauben, mehrere Filesysteme übereinanderzulegen und gleichzeitig einzuhängen. Dem Anwender erscheint das Ergebnis als Einheit. Das erlaubt es beispielsweise, auf einer Live-CD Pakete zu installieren, ohne das System zu verändern. Weitere Anwendung findet vor allem OverlayFS seit Neuestem bei Containern und atomaren Updates.

Da bereitet es dann keine Probleme mehr, dass etwa kleinere Festplatten weiterhin als Datenspeicher dienen, sodass die Musiksammlung sich über drei Festplatten erstreckt. Alternativ könnten Sie auf einer Platte Rockmusik, auf einer Klassik und auf der dritten Hörbücher speichern. Was aber tun, wenn die Platte für Rockmusik voll ist, die für Hörbücher aber noch viel Platz bietet? Da schleicht sich gleich wieder Unordnung ein.

Eine Alternative böte das Aufsetzen eines RAIDs [1], das aber immer ein Kompromiss zwischen Sicherheit der Daten und Speicherplatz darstellt und somit für das Beispiel nicht praktikabel erscheint. Der Einsatz von LVM [2] ergibt aus Gründen der Datensicherheit nur in einem RAID Sinn, was in diesem Fall ebenfalls nicht weiterhilft.

Mhddfs jedoch bietet genau die Funktionalität, die in solchen Fällen gefragt ist: So verschieben Sie bei Platzmangel auf einer der zusammengefassten Festplatten im Hintergrund Daten auf eine andere Platte mit freiem Platz, ohne dass der Anwender etwas davon merkt. Standardmäßig reserviert Mhddfs auf jeder Platte 4 GByte für Notfälle. Bei Bedarf verkleinern Sie den Wert beim Start mittels mlimit=Limit bis auf 100 MByte.

Transparente Schreibzugriffe

Damit das Prinzip eines virtuellen Verbundes funktioniert, macht Mhddfs – im Gegensatz zu den bei Live-Medien oft verwendeten UnionFS, Aufs oder dem kürzlich in den Kernel aufgenommenen OverlayFS – nicht nur Lesezugriffe transparent, sondern auch das Schreiben von Daten. Während herkömmliche Union-Dateisysteme dabei mit Copy-On-Write (COW) arbeiten [3], lässt sich bei Mhddfs nicht nur die oberste Dateisystemschicht beschreiben, sondern auch alle darunterliegenden.

Dateien, die Sie dem virtuellen Verbund hinzufügen, legt Mhddfs auf der ersten Festplatte ab, solange dort genug Platz bleibt, also das eingestellte mlimit ausreicht. Anderenfalls prüft es die restlichen Platten im Verbund nacheinander auf ausreichend freien Platz. Genügt das mlimit auf keiner der Platten den Anforderungen, verwendet Mhddfs die Platte mit dem meisten Platz.

Dabei speichert es Dateien immer als Ganzes, ein Aufsplitten wie bei LVM findet nicht statt. Das funktioniert im Zusammenspiel mit allen gängigen Linux-Dateisystemen – dazu gehören auch Samba und NFS, da diese korrekte Informationen über die belegten und freien Kapazitäten im jeweiligen Dateisystem liefern. SSHFS erfüllt dieses Kriterium nicht, und so warnt der Mhddfs-Entwickler davor, es einzubinden.

Bemerkt Mhddfs während eines Schreibvorgangs, dass der Platz auf der Platte nicht ausreicht, verschiebt es die bereits geschriebenen Daten im Hintergrund auf eine andere Platte mit mehr Kapazität und setzt den Vorgang dort fort. Das schreibende Programm bekommt davon nichts mit. Das ermöglicht ein Arbeiten mit dem virtuellen Dateisystem, als ob Sie auf einer großen Festplatte arbeiten.

Es spielt also keine Rolle, wo Daten liegen oder wie viel Platz auf den einzelnen Platten frei ist. Sie sehen lediglich den gesamten freien Platz. Sollten Sie zu einem späteren Zeitpunkt eine Festplatte mit ausreichend Kapazität erwerben und die kleineren Platten aus dem Mhddfs-Verbund nicht mehr verwenden oder anderswo einsetzen wollen, so kopieren Sie einfach den Inhalt des virtuellen Dateisystems auf die neue Platte und hängen die kleineren Platten aus.

Flexibler Speicher

Mhddfs findet sich in den Repositories der meisten Distributionen; Sie installieren es dann einfach über das Paketmanagement. Möchten Sie es selbst kompilieren, verwenden Sie den Quellcode aus dem Mhddfs-Subversion-Repository [4]. Der Einsatz des Tools gestaltet sich in der Praxis recht einfach. Im folgenden Beispiel gehen wir von drei Festplatten mit den Bezeichnern sda1, sdb1 und sdc1 aus; Listing 1 zeigt die Ausgangssituation.

Listing 1

$ df -h
Filesystem   Size  Used Avail Use% Mounted on
/dev/sda1     80G   50G   30G  63% /mnt/Video
/dev/sdb1     40G   35G    5G  88% /mnt/Fotos
/dev/sdc1     60G   10G   50G  17% /mnt/Musik

Jetzt erstellen Sie beispielsweise mit mkdir /mnt/medien den neuen Einhängepunkt für den zu erstellenden Verbund und vergeben die Rechte dazu mit chmod 775 /mnt/medien. Ab hier spielt das als Abhängigkeit zu Mhddfs mit installierte FUSE-Dateisystem seine Stärken aus, da es erlaubt, Funktionen aus dem Kernel in den Userspace zu verlagern.

So erfordert der Umgang mit Mhddfs keine Root-Rechte, ein normales Benutzerkonto genügt. Der Account muss lediglich der Gruppe fuse angehören. Das erreichen Sie mithilfe des Kommandos addgroup User fuse. Nun erstellen Sie den neuen Verbund (Listing 2, Zeile 1). Die Option -o allow_other erlaubt auch anderen Benutzern das Erstellen von Dateien.

Hier dürften Sie zusätzlich den bereits erwähnten Parameter mlimit angeben. Optionen sind allerdings besser in /etc/fstab aufgehoben. Klappt das Einhängen der Medien, erhalten Sie eine Ausgabe wie in Listing 2, Zeile 2 bis 7). Alle drei Platten sind eingebunden, jeder angemeldete Benutzer hat Zugriff und das Limit liegt bei 4 GByte. Das Ergebnis, wiederum mit df -h betrachtet, sieht auszugsweise so aus, wie in Listing 3 gezeigt.

Listing 2

$ mhddfs /mnt/Video,/mnt/Fotos,/mnt/Musik /mnt/medien -o allow_other
option: allow_other (1)
mhddfs: directory '/mnt/Video' added to list
mhddfs: directory '/mnt/Fotos' added to list
mhddfs: directory '/mnt/Musik' added to list
mhddfs: move size limit 4294967296 bytes
mhddfs: mount point '/mnt/medien'

Listing 3

$ df -h
Filesystem   Size  Used Avail Use% Mounted on
/dev/sda1     80G   50G   30G  63% /mnt/Video
/dev/sdb1     40G   35G    5G  88% /mnt/Fotos
/dev/sdc1     60G   10G   50G  17% /mnt/Musik
mhddfs       180G   95G   85G  53% /mnt/medien

Wie Sie sehen, hat die Software das neue Dateisystem angelegt; die Gesamtkapazität entspricht der Summe der einzelnen Platten, ebenso der freie Platz. Nun gilt es noch, das Erreichte über einen Neustart hinaus automatisch bereitzustellen. Dazu legen Sie in der Datei /etc/fstab einen neuen Eintrag an (Listing 4).

Listing 4

mhddfs#/mnt/Video,/mnt/Fotos,/mnt/Musik /mnt/medien fuse defaults,allow_other,mlimit=500M 0 0

Treten Probleme auf, bietet es sich an, über eine weitere Option zu definieren, wo die Software eine Log-Datei anlegt und mit welchem Detailgrad es Ausgaben des Systems zu Mhddfs darin festhält (Listing 5). Weitere Einzelheiten verrät die Manpage zu Mhddfs [5].

Listing 5

mhddfs#/mnt/Video,/mnt/Fotos,/mnt/Musik /mnt/medien fuse defaults,allow_other,mlimit=500M,logfile=/var/log/mhddfs.log,loglevel=1 0 0

Bei Bedarf erweitern Sie den Verbund jederzeit um weitere Platten. Dazu hängen Sie ihn aus, starten die Software erneut und fügen die neue Festplatte hinzu. Ergänzen Sie dann noch den Einhängepunkt in /etc/fstab, um den neuen Verbund automatisch einzuhängen.

Möchten Sie das Programm nicht mehr nutzen, entfernen Sie die Zeile aus der Datei /etc/fstab und löschen den Einhängepunkt des Verbunds. Unter Distributionen mit Systemd können Sie Mhddfs über das Init-System starten lassen, der Kasten “Mhddfs mit Systemd starten” beschreibt diese Option.

Mhddfs mit Systemd starten

Mhddfs bringt noch keine Service-Datei für Systemd mit. Daher erstellen Sie eine solche Datei mit dem Namen /etc/systemd/system/mnt-medien.mount einfach selbst. In diese kopieren Sie das Skript aus Listing 6. Mit systemctl daemon-reload laden Sie die Datei neu, um dann mit systemctl enable mnt-virtual.mount den Service beim Hochfahren zu starten. Ein abschließendes systemctl start mnt-virtual.mount sorgt für den automatischen Start.

Listing 6

[Unit]
Description = Mount mhddfs virtual volume
[Mount]
What = mhddfs#/mnt/Video,/mnt/Fotos,/mnt/Video
Where = /mnt/media
Type = fuse
Options = allow_other,mlimit=2G 0 0
[Install]
WantedBy = multi-user.target

Nummer sicher

Der Treiber, denn darum handelt es sich bei Mhddfs im Endeffekt, konzentriert sich in klassischer Unix-Manier auf eine Sache und macht diese gut. Er bietet jedoch keinerlei Sicherheit bei Ausfällen. Der Defekt einer Festplatte im Verbund führt also zum Datenverlust. Als Nachteil erweist sich in der Praxis, dass Sie nicht wissen, wo die Software eine neue Datei speichert, und somit keine Kenntnis haben, welche Daten verloren gehen, wenn eine der Festplatten das Leben aushaucht.

Dagegen hilft nur ein Backup der beteiligten Daten. Mhddfs kommt häufig im Duo mit SnapRAID [6] zum Einsatz, um ein wenig mehr Sicherheit zu gewährleisten. Darüber hinaus besteht die Möglichkeit, den Verbund so zu spiegeln, wie er ist. Dazu legen Sie auf der Backup-Platte eine zweite Instanz von Mhddfs an und synchronisieren beide Instanzen mittels Rsync oder einem ähnlichen Werkzeug [7].

Fazit

Der einzige Nachteil beim Einsatz von Mhddfs liegt in einer um rund fünf Prozent verminderten Leistung beim Übertragen von Daten. Das ist FUSE geschuldet und sollte sich verschmerzen lassen. Davon abgesehen spricht alles für den Einsatz von Mhddfs, vor allem, da die Möglichkeit besteht, den Verbund über Samba und NFS einzuhängen – das eröffnet vielfältige Möglichkeiten. Auf diese Weise ließen sich etwa ein NAS, die TV-Software VDR oder ein Mediacenter der Wahl weiter automatisieren. Mhddfs eignet sich zwar nicht nur für Multimediadaten, macht jedoch insbesondere dort aufgrund der Größe, die solche Sammlungen mitunter annehmen, eine besonders gute Figur. 

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 12/2015 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben