OpenSolaris als Fileserver

Seite 4: Freigaben

Inhaltsverzeichnis

Nun könnte man einfach die Home-Verzeichnisse en bloc freigeben:

zfs set sharesmb=on rpool/export/home

Auf unserem Selbstbau-NAS ist das allerdings nicht sehr sinnvoll: Der bei Speicherpool rpool, der die Systemdaten und die Home-Verzeichnisse in verschiedenen Dateisystemen enthält, wurde bei der Installation auf der 4-GByte-SSD angelegt – viel Platz zum Speichern ist dort also nicht.

Aber der Inhalt eines ZFS-Dateisystems lässt sich problemlos in einen anderen Speicherpool verlagern. Dazu benötigt man zunächst eine Momentaufnahme (einen Snapshot) des aktuellen Zustands des zu übertragenden Dateisystems:

zfs snapshot -r rpool/export/home@transfer

Damit kann man jetzt ein anderes Dateisystem befüllen, das dabei gleich angelegt wird:

zfs send rpool/export/home@transfer | zfs receive daten/home

Der send-Befehl des zfs-Tools erzeugt hier ein Image des Snapshots transfer des Dateisystems rpool/export/home, das auf die Standardausgabe geschrieben wird (und sich mit einer Output-Umleitung auch in einer Datei speichern lässt). zfs receive nimmt das Image entgegen und erzeugt daraus das neue Dateisystem daten/public/home.

Das Gleiche ist noch für das Home-Verzeichnis des bei der Installation angelegten Hauptbenutzers nötig, der bei OpenSolaris 2008/11 ein eigenes Dateisystem für sein Home-Verzeichnis erhält. Die Option -r beim Anlegen des Snapshots von rpool/export/home hat bereits dafür gesorgt, dass der Snapshot existiert:

zfs send rpool/export/home/test@transfer | zfs receive daten/public/home/test

Um das alte Home-Verzeichnis durch das neue zu ersetzen, muss man das alte zunächst unmounten; dabei sollten keine Anwendungen laufen, die Dateien geöffnet halten:

zfs umount -f rpool/export/home/test
zfs umount -f rpool/export/home

Nun setzt man für die beiden neu angelegten Verzeichnisse die richtigen Mountpoints mit

zfs set mountpoint=/export/home daten/public/home
zfs set mountpoint=/export/home/test daten/public/home/test

und löscht das alte Home-Verzeichnis mit

zfs destroy -r rpool/export/home

Der CIFS/SMB-Server von OpenSolaris unterstützt ein nützliches Feature namens "autohome": Legt man in /etc eine Datei smbautohome mit dem Eintrag

* /export/home/&

an, erhält jeder Benutzer beim Anmelden Zugriff via SMB auf sein Homeverzeichnis – so lange, bis er sich wieder abmeldet. Die Home-Verzeichnisse auf dem Server sind damit nur dann erreichbar, wenn sie wirklich gebraucht werden. Der Nachteil: Sie werden in der Netzwerkumgebung nicht angezeigt.

Eine komfortablere Lösung ist es daher, mit

zfs set sharesmb=name=Home daten/home

einfach das komplette Dateisystem mit allen Home-Verzeichnissen freizugeben. Standardmäßig sind die Zugriffsrechte unter OpenSolaris so gesetzt, dass jeder Benutzer den Inhalt aller Home-Verzeichnisse lesen, allerdings nicht darin schreiben darf. Möchte man den Inhalt der Home-Verzeichnisse vor den anderen Benutzern verbergen, nimmt

chmod go-r /export/home/*

die Leserechte für alle Anwender außer dem Besitzer des jeweiligen Verzeichnisses.

Will man verhindern, dass einzelne Benutzer den gesamten Speicherplatz des Speicherpools aufbrauchen, kann man Quotas setzen:

zfs set quota=600GB daten/home zfs set quota=600GB daten/public

sorgt dafür, dass keines der beiden im RAID-Array angelegten Dateisysteme mehr als 600 GByte belegen kann.

OpenSolaris erstellt auf Wunsch regelmäßig Snapshots.

Zum Schluss noch ein paar Tipps, was mit OpenSolaris und ZFS noch möglich ist. Regelmäßige Snapshots sorgen dafür, dass sich versehentlich gelöschte oder überschriebene Dateien mit wenigen Handgriffen wiederherstellen lassen. Ein solcher Snapshot ist in Sekundenbruchteilen angelegt und braucht erst einmal nahezu keine Ressourcen: Er füllt sich erst, wenn Dateien geändert oder gelöscht werden. Der Befehl

zfs list -t snapshot

zeigt die bestehenden Snapshots an; der Befehl

zfs rollback daten@snapshot

versetzt das Dateisystem wieder in den Zustand, in dem es beim Anlegen des Snapshots war. Eleganter ist es allerdings, mit

zfs set snapdir=visible daten

die Snapshots und alle Dateien darin über das Unterverzeichnis /daten/.zfs zugänglich zu machen. OpenSolaris 2008/11 bringt einen Dienst mit, der automatisch regelmäßige Snapshots erstellt und über das Tool "Einrichtung des Zeit-Schiebereglers" aktiviert wird.

Mit dem bereits erwähnten Scrubbing kann man in regelmäßigen Abständen den Gesundheitszustand der Hardware überprüfen.

Wer Linux- und Unix-Clients im LAN hat, möchte für sie vielleicht einen NFS-Server aufsetzen; dazu genügt ein

zfs set sharenfs=on daten

Siehe dazu auch: (odi)