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

Linux multipath-tools mit Sun StorageTek 6540

Linux-Systeme an einer Sun StorageTek 6540 zu betreiben ist gar nicht so einfach. Für Redhat und Suse gibt es von Sun zwar RDAC-Treiber, aber eine funktionierende Konfiguration für die multipath-tools habe ich nirgends gefunden.

Die 6540-Storage sieht stark nach dem Nachfolger der StorageTek FlexLine FLX380 aus. Unter der Haube steckt wohl das LSI/Engenio 6998 System (gibts z.B. auch von IBM als DS4800).

Hardware

  • Sun StorageTek 6540 (Engenio/LSI)
  • Sun Fire X4150 mit 32 GByte RAM und 2xQuadCore Xeon E5440
  • 2x Sun/Qlogic 2460 4 GBit HBAs

Software

  • Ubuntu LTS 8.04.1 AMD64
  • multipath-tools 0.4.8

Multipath-tools

Es werden unbedingt die multipath-tools in der Version 0.4.8 benötigt, da hier der Path-Checker rdac (mpath_prio_rdac) enthalten ist (früher mal mpath_prio_tur).
Die Storage selbst meldest sich als „STK FLEXLINE 380“.

Konfiguration /etc/multipath.conf (Beispiel)


defaults {
      multipath_tool                  "/sbin/multipath -v0"
      udev_dir                        /dev
      polling_interval                5
      default_selector                "round-robin 0"
      default_path_grouping_policy    failover
      default_features                "1 queue_if_no_path"
      default_getuid_callout     "/lib/udev/scsi_id -g -u -s /block/%n"
      rr_weight                       priorities
      failback                        immediate
}
blacklist {
   devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
   devnode "^hd[a-z][[0-9]*]"
   devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
   devnode "^sda"  # local disk
}
multipaths {
     multipath {
        alias           stk-test-lun
        wwid            3600a0b80004725e800000570xxxxxxxxx
        path_selector   "round-robin 0"
        failback        immediate
    }
}
devices {
    device {
      vendor                  "STK"
      product                 "FLEXLINE 380"
      product_blacklist       "Universal Xport"
      path_grouping_policy    group_by_prio
      prio_callout            "/sbin/mpath_prio_rdac /dev/%n"
      path_checker            rdac
      hardware_handler        "1 rdac"
    }
}

Test

Da der Server 2 Single-Port-HBAs hat und zudem an 2 FC-Switches an der Storage angebunden ist, gibt es vier Pfade, 2 über HBA-A (sdc/sdt) und 2 HBA-B (sdbs/sdcj).

# multipath -ll
stk-test-lun (3600a0b80004725e800000570xxxxxxxxx) dm-1 STK     ,FLEXLINE 380
[size=200G][features=1 queue_if_no_path][hwhandler=1 rdac]
\_ round-robin 0 [prio=6][active]
 \_ 1:0:0:1  sdc  8:32    [active][ready]
 \_ 1:0:1:1  sdt  65:48   [active][ready]
\_ round-robin 0 [prio=0][enabled]
 \_ 2:0:0:1  sdbs 68:96   [active][ghost]
 \_ 2:0:1:1  sdcj 69:112  [active][ghost]

Links