Die Anzahl der über fstab gemounteten sshfs-Volumes führt zu einer Zombiedatei (osxfuse).

1

Ich habe osxfuse 3.7.1, sshfs 2.10, fuse libs 2.9.7 unter High Sierra 10.13.3 installiert.

Dinge scheinen zu funktionieren, außer dass, wenn ich ein entferntes Verzeichnis über fstab mounte, der Mountpoint nach dem Abmounten in einem Zombie-Zustand belassen wird und das einzige, was ich dann mit diesem Pfad tun kann, ist, ihn für ein sshfs-Mount wie Wurzel. Obwohl es einen seltsamen Trick gibt, mit dem ich den Mountpoint wiederherstellen kann, indem ich die Zombies in eine andere Datei übertrage (siehe unten).

Mein /etc/fstabist:

me@host:/home/me  /Users/me/tmp/foo  sshfs  allow_other  0  0

Dies demonstriert das Problem (hier verwende ich diskutil umountaber umountund wirf in der Finder-GUI das gleiche Ergebnis aus):

Erstens mit sshfs direkt (keine Probleme):

$ cd /Users/me/tmp

$ mkdir foo
$ ls -l
drwxr-x--x  2 me  staff    64B 13 Feb 20:41 foo
$ sshfs me@host:/home/me foo
$ ls foo/
    # OK, contents of the distant directory.
$ diskutil umount foo
Unmount successful for foo
$ ls -l
drwxr-x--x  2 me  staff    64B 13 Feb 20:41 foo
    # umount really worked.

Zweitens via /etc/fstab(führt zu einer Zombiedatei):

$ sudo cp /etc/fstab /etc/fstab.backup
$ echo "me@host:/home/me  $PWD/foo  sshfs  allow_other  0  0" | sudo tee /etc/fstab >/dev/null
$ mount $PWD/foo
$ ls foo/
   #  OK, contents of the distant directory.
$ diskutil umount foo
Unmount successful for foo

Eigentlich ist jetzt fooaber " Zombie ":

$ ls -l
dr-xr-xr-x  2 root      wheel     1B 13 Feb 21:04 foo
    # (Ownership/timestamp have changed.)
$ sudo chown me:staff foo
chown: foo: No such file or directory
$ sudo ls foo
ls: foo: No such file or directory
$ sudo rm foo
rm: bar: is a directory
$ sudo rmdir foo
rmdir: foo: Resource busy
$ ls /Volumes
Macintosh HD
$ sudo lsof foo
    # Nothing.

Zu diesem Zeitpunkt ist der Mountpoint foozu einer Zombiedatei geworden und ich kann fast nicht mehr damit interagieren. Selbst wenn ich neu starte, befindet sich die Datei immer noch in ihrem problematischen Zustand.

Das Einzige, was ich tun kann, ist, es als root erneut einzuhängen:

$ mount $PWD/foo
mount_osxfuse: failed to mount /Users/me/tmp/foo@/dev/osxfuse0: Operation not permitted
$ sudo mount $PWD/foo
$ ls foo/
    #  OK, contents of the distant directory.
$ sudo diskutil umount foo
# (Back to the same zombie state.)

Und ich kann die Zombies in ein anderes Verzeichnis übertragen:

$ mkdir bar
$ ls -l
drwxr-x--x  2 me    staff    64B 13 Feb 21:16 bar
dr-xr-xr-x  2 root  wheel     1B 13 Feb 21:12 foo
$ echo "me@host:/home/me  $PWD/bar  sshfs  allow_other  0  0" | sudo tee /etc/fstab >/dev/null
$ mount $PWD/bar
$ ls bar/
    # OK, contents of the distant directory.
$ ls -l -d foo
dr-xr-xr-x  2 root  wheel     1B 13 Feb 21:12 foo
$ diskutil umount bar
$ ls -l
dr-xr-xr-x  2 root  wheel     1B 13 Feb 21:19 bar
drwxr-x--x  2 me    staff    64B 13 Feb 20:41 foo
    # After umounting bar:
    # foo’s ownerships is me:staff again, bar is zombie.

Irgendwelche Ideen? Mache ich etwas falsch?

n.caillou
quelle
Wann fooist ein "Zombie", von was wird er ausgegeben, wenn überhaupt sudo lsof foo? Gibt es ssh Prozesse an den Remote - Host ausgeführt wird ( ps -ef|grep "me@host"Es gibt eine Alternative fstab - Format , die Sie vielleicht versuchen: sshfs#me@host:/home/me /Users/me/tmp/foo fuse allow_other 0 0.
jaume
@jaume Keine der beiden Suchanfragen gibt etwas aus. Wenn Sie /etc/fstab/zu Ihrer Version wechseln , /Library/Filesystems/fuse.fs/schlägt der Befehl mount fehl, da er nicht vorhanden ist. Verwenden von osxfuseanstelle von fusein /etc/fstabbewirkt, dass der Befehl mount versucht zu verwenden, /Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuseder sich darüber beklagt, dass "dieses Programm nicht direkt aufgerufen werden soll. Die OSXFUSE-Bibliothek ruft es auf."
n.caillou
Tut mir leid zu lesen, dass es Ihr Problem nicht gelöst hat. Ich hoffe, jemand mischt sich mit einer Lösung oder einem hilfreichen Hinweis ein.
Jaume