Monthly Archives: Oktober 2009

You are browsing the site archives by month.

SFTP mag das AFS nicht

Die Betreuerin eines unserer Webprojekte meldete uns, dass sie mittels ihres SFTP-Programms – Cyberduck unter MacOS – innerhalb unseres Dateisystems AFS keine Dateien in einen Unterordner verschieben kann. Eine Überprüfung unsererseits ergab, dass das Problem nicht auf Cyberduck oder MacOS beschränkt ist, auch mit WinSCP (im SFTP-Modus) unter Windows erhält man lediglich die nichtssagende Meldung „Failure“.

Intern verwendet das SFTP-Protokoll zum Verschieben von Dateien das Kommando „rename“. Offenbar geschieht beim Verschieben in ein Unterverzeichnis Folgendes: SFTP legt im Unterordner einen Hardlink auf die Datei an und entfernt anschließend den alten Verweis im übergeordneten Verzeichnis (link-unlink). Dies ist im Hinblick auf plötzliche Stromausfälle etc. die sichere Variante. Da das AFS allerdings seine ACLs pro Verzeichnis speichert, erlaubt es keine Hardlinks – SFTP scheitert entsprechend. Seit der Version 5.1 von OpenSSH (der Software, die auch für den SFTP-Server zuständig ist) führt SFTP hier einen Fallback auf den internen syscall „rename“ durch, der vermutlich (!) ein unlink-link durchführt, siehe:

https://bugzilla.mindrot.org/show_bug.cgi?id=1447

Leider steht diese Version auf unseren Red-Hat-5-Servern noch nicht zur Verfügung, einen Case bei Red Hat haben wir zu diesem Thema aber eröffnet. Einige Clients umgehen das Problem selbständig, z.B.:

  • WinSCP führt einen Fallback auf SCP durch
  • SSH SecureShell kopiert die Datei stattdessen – das kann bei größeren Dateien Speicherplatzprobleme verursachen und ist entsprechend langsamer

Generelle Workarounds lauten wie folgt:

  • Arbeiten auf der Unix-Kommandozeile nach SSH-Login mit dem Kommando „mv“
  • Lokale Installation eines AFS-Clients, siehe http://www.uni-koeln.de/rrzk/daten/afs/#clients
  • Dateien herunterladen und im neuen Verzeichnis wieder hochladen (dauert ggf. sehr lange und setzt eine schnelle Verbindung voraus)

Für die Hilfe bei der Aufklärung ein Dank an Sebastian Hagedorn und Claus Kalle.