Debian Etch 4.0 mit NFSv3 ohne ACLs

Leider unterstützt Debian Etch 4.0 im Gegensatz zu Ubuntu, RedHat und SuSE die Mount-Option „noacl“ in Verbindung mit NFS-Mounts nicht. Der Verzicht auf ACLs ist aber gerade in Verbindung mit Solaris und ZFS im Backend hilfreich, denn dann muss auf den Linux-Clients zwangsläufig NFSv3 ohne ACLs oder gleich NFSv4 genutzt werden, um nicht in Probleme zu laufen (mehr Infos zum Thema: Solaris ZFS+NFSv3 Server und Debian Etch 4.0 als NFS-Client)

Pakete zum Compilieren

Um sich aus den Sourcen der nfs-utils einen geeigneten „Mount-Client“ zu bauen, sind einige Development-Libraries notwendig:

$ apt-get install libwrap0-dev libevent0-dev libevent-dev libnfsidmap libnfsidmap-dev pkg-config librpcsecgss-dev librpcsecgss-dev librpcsecgss3 libgssapi-dev libgssapi2

Compilieren

Es reicht aus nach dem Konfigurieren make im Unterverzeichnis ./utils auszuführen:

$ wget http://www.sfr-fresh.com/fresh/linux/misc/nfs-utils-1.1.3.tar.gz
$ tar -xzf nfs-utils-1.1.3.tar.gz
$ cd ./nfs-utils-1.1.3/
$ ./configure --enable-gss=no
$ cd utils
$ make
[...]

Das fertige „mount.nfs“ muss dann nur noch aus dem Ordner ./utils/mount/ nach /sbin kopiert werden.

Test

NFS-Mount in /etc/fstab eintragen:


myserver:/proj            /proj         nfs    rw,noacl,noatime 0 0

NFS-Share einbinden


$ mount /proj
$ mount
myserver:/proj on /proj type nfs (rw,noatime,noacl,addr=192.168.1.72)
[...]

Mit strace sieht man, dass „mount“ automatisch prüft, ob es das Binary „/sbin/mount.nfs“ gibt. Sofern es vorhanden ist, wird es auch benutzt.

Solaris ZFS+NFSv3 Server und Debian Etch 4.0 als NFS-Client

Wenn ein Solaris ZFS-Filesystem per NFSv3 auf einen Debian Etch Client exportiert wird, gibt es Probleme beim Kopieren von Dateien und Verzeichnissen mit „cp -p“. Eine Kopie wird zwar erzeugt, aber mit der Fehlermeldung „cp: preserving permissions … Operation not supported“ quittiert. Beispiel:


keller@nfs-client:/projekte/ake$ cp -p alex2 alex7
cp: preserving permissions for alex7: Die Operation wird nicht unterstutzt
cp: preserving ACL for alex7: Die Operation wird nicht unterstutzt

Ein ziemlicher Show-Stopper, wenn man zahlreiche Debian-Clients hat und darauf angewiesen ist, dass „cp -p“ in automatischen Workflows einwandfrei funktioniert und nicht mit Fehler 1 aussteigt 😉

Ursache

Die Diagnose ist nach etwas Suchen gefunden: NFSv3 unterstützt die ACLs von ZFS nicht. Das ist eigentlich alles…

Lösung

Es gibt mehrere Möglichkeiten mit dem Problem umzugehen:

  • von NFSv3 auf NFSv4 umsteigen, denn NFSv4 unterstuetzt die ZFS ACLs.
  • Debian 4.0 durch Ubuntu 8.04 ersetzen und die Mountoption „noacl“ mit NFSv3 benutzen. Keine Ahnung woher die Option bei Ubuntu genau kommt, aber bei Debian Etch gibts diese nicht (evtl. ältere mount utilities…)
  • theoretisch lassen sich ZFS-ACLs ausschalten (zfs set aclinherit=discard und
    zfs set aclmode=discard). Praktisch war das Ergebnis aber unverändert.
  • ZFS durch UFS ersetzen. Ja klar – sonst noch was 😉
  • cp, mv usw. patchen 😉

Links

Sun Common Array Manager CLI unter Debian

Der Sun Comman Array Manager ist zwar eine JAVA-Anwendung – der Installer funktioniert aber nur unter Solaris 9/10, Windows, Redhat und Suse Linux.

Aber das Command Line Interfaces (sscs) lässt sich auch mit Debian oder Ubuntu Linux installieren und nutzen.

Download CAM als TAR-Archive

StorageTek Common Array Manager Software 6.1.1 Revenue Release:
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_SMI-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=SSTKCAM-6.1.1-OTH-G-F@CDS-CDS_SMI

Archive entpacken

$ tar -xzf host_sw_linux_6.1.1.10.tar.gz

RPM-Paket in ein TGZ-Archive umwandeln

Archive von RPM in TGZ umwandeln und den Inhalt nach /opt/sun/cam kopieren.

$ cd ./HostSoftwareCD_6.1.1.10/components/em_cli
$ alien -t sun-cam-cli-6.1.1-10.i386.rpm
$ tar -xzf sun-cam-cli-6.1.1.tgz
$ cp -rp opt /

Korn-Shell und Ausführungsrechte

Korn-Shell ksh installieren und Scripte sscs/pclient ausführbar machen

$ apt-get install ksh
$ cd /opt/sun/cam/se6x20/cli/bin
$ chmod +x sscs pclient

Testen

$ export PATH=$PATH:/usr/local/java/bin
$ cd /opt/sun/cam/se6x20/cli/bin
$ ./sscs
$ You are not currently logged in. To log in, type:
$ sscs login -h|--hostname  [-s|--system-type ] [-t|--http] [-f|--force] [-u|--username ]

Links