Verteilte Dateisysteme mit Samba

14.06.2005 von STEFAN RUBNER 
Mit Linux und Samba lässt sich weit mehr realisieren als das reine Bereitstellen von Netzwerkressourcen eines Servers. Auch Load-Balancing oder zentraler Zugriff auf Freigaben unterschiedlicher Server ist kein Problem.

Einer der Gründe für die Popularität von Linux ist sicherlich der in den meisten Distributionen enthaltene Samba-Server. Schließlich erlaubt es dieser, die wichtigsten Netzwerkfunktionen von Windows unter Linux nachzubilden. Sei es als allein stehender Server oder als primärer wie auch als Backup-Domänen-Controller:

Samba erlaubt es Clients unter Windows, mit Datei- und Druckfreigaben so zu arbeiten, als wäre die Gegenstelle ein echter Windows-Server. Allerdings gehen die wenigsten Installationen über das reine Bereitstellen der genannten Ressourcen hinaus, obwohl Samba eigentlich noch wesentlich mehr leisten kann. Ein überaus nützliches, aber nur sehr selten eingesetztes Feature ist beispielsweise die Unterstützung verteilter Dateisysteme, unter Windows Distributed File Systems (DFS) genannt.

Zunächst stellt sich natürlich die Frage, was so ein verteiltes Dateisystem in diesem Zusammenhang überhaupt ist. Entgegen der sonst üblichen Verwendung des Begriffs handelt es sich dabei nicht um ein über mehrere Server verteiltes Dateisystem. Vielmehr versteht Microsoft darunter eine Dateifreigabe, die zwar von Server A zur Verfügung gestellt und im Netz bekannt gemacht wird, deren physikalischer Speicherort sich aber auf einem gänzlich anderen Server im Netz befindet. Server A dient in diesem Szenario als zentrale Anlaufstelle für die Clients und reicht die entsprechenden Verbindungswünsche an die echten Zielserver weiter.

Dieses Verfahren hat sowohl für Anwender wie auch für Administratoren Vorteile. Die Nutzer profitieren davon, sich nicht mehr merken zu müssen, auf welchem Server eine benötigte Freigabe eigentlich liegt. Den Systemverwalter versetzt der Einsatz von DFS in die Lage, Freigaben kurzfristig auf andere Server umziehen zu können, und auch ein Load-Balancing ist damit realisierbar. Aus Sicht des Anwenders präsentiert sich ein DFS wie eine herkömmliche Freigabe. Innerhalb dieser Freigabe existieren mehrere Ordner. Diese repräsentieren die eigentlichen Freigaben auf den Zielservern. Um dies auch unter Samba einzurichten, sind nur wenige Schritte notwendig. Im Folgenden gehen wir von einer bereits vorhandenen Samba-Installation aus, die lediglich für den Einsatz von DFS modifiziert wird.

Verteilte Dateisysteme einrichten

Als Erstes ist ein neues Verzeichnis auf dem Samba-Server anzulegen. Da dieses keine echten Daten aufnehmen muss, bietet es sich an, dieses unterhalb von /var einzurichten. Für unser Beispiel verwenden wir einfach /var/lib/samba/dfs, das wir auch gleich für alle Anwender komplett zugänglich machen:

mkdir -p /var/lib/samba/dfs
chmod 777 /var/lib/samba/dfs

Das Setzen der Rechte Lesen, Schreiben und Ausführen für alle User ist in diesem Fall unkritisch, da die tatsächlichen Rechte auf die echten Freigaben weiterhin von den Servern oder - je nach Setup des Samba-Servers - vom primären Domänen-Controller verwaltet werden.

Das soeben angelegte Directory dient als Wurzelverzeichnis einer neuen Freigabe, die in der Samba-Konfigurationsdatei einzutragen ist. Zusätzlich müssen Sie Samba mitteilen, dass es nun als DFS-Host arbeiten soll. Dazu sind folgende Änderungen an der Datei /etc/samba/smb.conf notwendig:

[global]
host msdfs = yes

[dfstest]
path = /var/lib/samba/dfs
msdfs root = yes

Beachten Sie, dass der Abschnitt [global] in der Datei bereits vorhanden ist und hier nur der Übersicht halber erwähnt wird. Nach dem Speichern der geänderten smb.conf ist Samba über den Befehl /etc/init.d/smb restartneu zu starten, um die DFS-Freigabe für Clients sichtbar zu machen.

DFS-Weiterleitungen einrichten

Im Moment unterscheidet sich die DFS-Freigabe noch nicht von einer herkömmlichen Freigabe, wie sie Samba üblicherweise zur Verfügung stellt, da noch keine Weiterleitungen angelegt wurden. Dies geschieht mithilfe symbolischer Links, die Sie im Verzeichnis /var/lib/samba/dfs anlegen. Um beispielsweise einen Link mit der Bezeichnung tecdata auf die Freigabe Daten01 des Servers TESTSRV zu legen, verwenden Sie folgende Kommandos:

cd /var/lib/samba/dfs
ln -s msdfs:testsrv\\\\daten01 tecdata

Dabei sind zwei Punkte zu beachten: Zum einen müssen alle Namen klein geschrieben werden - egal ob die Windows-Äquivalente in Großbuchstaben oder gar in gemischter Schreibweise angelegt sind. Zum zweiten sind zwischen dem Servernamen und der Bezeichnung der Freigabe tatsächlich zwei Backslashs einzufügen. Würden Sie hier nur einen angeben, bekämen Sie eine Fehlermeldung präsentiert, da die Linux-Kommandozeile einen einzelnen Backslash als Befehlstrenner interpretiert. Prüfen Sie am besten mit dem Befehl ls -l, dass der symbolische Link tatsächlich richtig angelegt wurde.

Die Client-Seite

Von einem Windows-Client aus können Sie nun auf die DFS-Freigabe zugreifen. Sie sehen dort ein Verzeichnis mit dem Namen tecdata. Sobald Sie dieses mit dem Windows Explorer öffnen, sehen Sie den Inhalt der Freigabe auf dem Zielserver. Dass dem auch wirklich so ist, lässt sich leicht prüfen. Starten Sie einfach ein weiteres Windows-Explorer-Fenster und verbinden Sie sich von diesem aus direkt mit der Freigabe, auf die das DFS-Verzeichnis verweist.

Nun kann es durchaus passieren, dass anstatt einer Dateiliste eine Fehlermeldung erscheint. Diese teilt Ihnen wahrscheinlich mit, dass der Zugriff auf die gewünschte Ressource aufgrund mangelnder Rechte nicht möglich ist. Um dieses Problem zu beheben, ist ein wenig Arbeit auf dem Rechner notwendig, der die Freigabe bereitstellt.

Rechtevergabe in der Domäne

Die Vergabe von Rechten auf Freigaben unter Windows unterscheidet sich je nach Art der Netzwerkstruktur grundlegend. Sind die einzelnen Server Mitglied in einer Domäne, so lassen sich gezielt Rechte an einzelne, in dieser Domäne definierte Benutzerkonten vergeben. Dazu wechseln Sie im Windows Explorer auf das freigegebene Verzeichnis und rufen dort mithilfe der rechten Maustaste das Kontext-Menü ab. Aus den angebotenen Optionen wählen Sie "Freigabe und Sicherheit". Es erscheint eine Karteikarte, die neben einigen Informationen zur Freigabe auch die Schaltfläche "Berechtigungen" enthält. Klicken Sie auf diese, um zur Liste der berechtigten Nutzer zu gelangen. Voreingestellt ist hier der Standard-Account "Jeder", dem lediglich Leserechte zustehen. Über die Schaltfläche "Hinzufügen" gelangen Sie zu einer weiteren Maske, deren volle Funktionalität Sie erst erhalten, wenn Sie auf die Schaltfläche "Erweitert" klicken. Es erscheint eine größere Maske, in der die Domäne voreingestellt ist und die bereits ein paar Accounts enthält. Klicken Sie nun auf die Schaltfläche "Jetzt suchen", werden Sie nach einem Account mit Administrationsrechten auf dem Domänen-Controller gefragt. Nur wenn Sie diesen kennen, können Sie die Benutzerliste vom PDC abrufen.

Aus der nun angezeigten Liste wählen Sie diejenigen Domänen-Nutzer aus, denen Sie Zugriff auf die Freigabe geben möchten, und bestätigen Ihre Wahl durch einen Klick auf "OK".

Die markierten Konten werden automatisch in die Liste der hinzuzufügenden Benutzer aufgenommen und müssen hier noch einmal explizit per OK-Button bestätigt werden, bevor Sie die einzelnen Zugriffsrechte anpassen dürfen.

Troubleshooting Rechtevergabe

Tipp: Sollten Sie Probleme damit haben, die Benutzerrechte einzustellen, so kann das zwei Gründe haben:

1) Sie können nicht auf die Benutzerkonten des Domänen-Controllers zugreifen: Die Ursache dafür ist meist, dass bereits eine Netzwerkverbindung zwischen dem lokalen Rechner und dem PDC über ein Nutzerkonto ohne Administratorrechte besteht. Windows erlaubt es nicht, zwei Verbindungen mit verschiedenen Konten zu einem Server zu unterhalten. Starten Sie in diesem Fall den Rechner neu und probieren es noch einmal.

2) Sie sehen die Option zum Erstellen der Freigabe nicht, obwohl Sie als Administrator angemeldet sind: Grund hierfür ist, dass Sie als Domänen-Administrator angemeldet sind. Dieser Account hat jedoch in der Standardkonfiguration keine administrativen Rechte auf dem lokalen Rechner. Melden Sie sich ab und anschließend als lokaler Administrator wieder an. Übernehmen Sie nun den Domänen-Administrator als neuen Benutzer in die Gruppe "Administratoren" auf dem lokalen Rechner. Jetzt sind Sie auch nach einer Anmeldung als Domänen-Administrator in der Lage, lokale Freigaben anzulegen und zu verwalten.

Rechtevergabe auf Einzelservern

Auf einem allein stehenden Server unter Windows 2000 gestaltet sich die Vergabe der Zugriffsrechte ähnlich. Der einzige Unterschied besteht darin, dass für jeden Benutzer, der Zugriff erhalten soll, zunächst ein lokales Konto anzulegen ist. Diesem können Sie dann, ähnlich wie beim Verfahren in der Domäne beschrieben, Rechte auf die Freigabe zuweisen oder entziehen.

Etwas komplexer sieht die Sache bei Windows XP aus. Hier besteht keine Möglichkeit mehr, einzelne Konten auszuwählen. Sie haben lediglich die Option, Nutzern die aus dem Netzwerk auf die Freigabe zugreifen, den Schreibzugriff auf die dort gespeicherten Daten zu untersagen.

Trotzdem gilt natürlich auch unter Windows XP, dass für jeden Nutzer, der Zugriff auf die Freigabe erhalten soll, ein Konto auf dem Rechner anzulegen ist. Wenn möglich sollten Sie jedoch den Server lieber in die Domäne integrieren, um so eine feiner granulierte Rechtevergabe zu ermöglichen.

Highend-Anwendung: Load-Balancing

Wie eingangs erwähnt, lässt sich DFS auch zur Lastverteilung einsetzen. Möglich macht dies die Tatsache, dass sich durchaus komplexere symbolische Links setzen lassen, die auf mehr als einen Zielserver verweisen. Um beispielsweise unser zuvor verwendetes DFS-Verzeichnis tecdata auch auf dem Server SERVER2 unter der Freigabe Daten02 zur Verfügung zu stellen, sieht der Befehl zum Erzeugen des Links so aus:

ln -s msdfs:testsrv\\\\daten01,server2\\\\daten02 tecdata

Die Syntax wurde hierbei einfach durch eine zusätzliche, per Komma an die ursprüngliche Beschreibung des Zielservers angehängte Definition erweitert.

Ein derartiges Setup macht natürlich nur Sinn, wenn alle verwendeten Freigaben schlussendlich wieder auf dasselbe Ziel verweisen, also etwa auf ein per Hochgeschwindigkeitsnetz angeschlossenes, externes Speichersystem oder ein per NFS oder auch Samba gemeinsam genutztes Netzlaufwerk. Anderenfalls käme es schnell zu einem heillosen Chaos, da die beim letzten Login auf Server A abgelegten Daten plötzlich nicht mehr vorhanden sind, weil das DFS beim aktuellen Aufruf Server B und damit eine völlig andere Freigabe mit komplett anderem Inhalt ausgewählt hat.

Fazit

Mit den verteilten Dateifreigaben erleichtern Sie sich als Administrator die Arbeit ganz gewaltig und verhindern, dass Ihre Benutzer immer wieder suchen müssen, auf welchem Server eine bestimmte Freigabe denn zu finden ist. Die User müssen lediglich das DFS-Verzeichnis mappen und greifen von dort auf alle Freigaben im Netz zu, egal welcher Server die Ressource denn nun bereitstellt.

Samba bietet deutlich mehr als nur einfache Dateifreigaben. Wie Sie beispielsweise einen Primary Domain Controller mit Samba realisieren, lesen Sie im Artikel Linux als PDC mit Samba 3. Den dafür notwendigen grundlegenden Samba-Server setzen wir im Artikel Linux als Windows-Server mit Samba 3 auf. Soll Ihr Samba-Server auch Druckaufträge zentral entgegennehmen, lesen Sie dazu den Artikel Linux als Printserver mit Samba 3. (mha)