fstabを介してマウントされたsshfsボリュームのumountは、ゾンビファイル(osxfuse)になります


1

High Sierra 10.13.3でosxfuse 3.7.1、sshfs 2.10、fuse libs 2.9.7をインストールしました。

物事はうまくいくようですが、fstabを介して遠くのディレクトリをマウントすると、マウントポイントをアンマウントするとゾンビ状態のままになり、そのパスでできることはsshfsマウント用に再利用することだけですルート。ゾンビを別のファイルに転送することでマウントポイントを回復できる奇妙なトリックがあります(下記を参照)。

/etc/fstabは:

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

これは問題を示しています(ここでは私が使用してdiskutil umountいますがumount、FinderのGUIで取り出すと同じ結果が得られます)。

まず、sshfsを直接使用します(問題なし):

$ 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.

第二に、経由/etc/fstab(ゾンビファイルにつながる):

$ 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

ただし、実際にfooは「ゾンビ」になります。

$ 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.

この時点で、マウントポイントfooはゾンビファイルになり、ほとんど操作できません。ファイルを再起動しても、問題のある状態のままです。

私ができる唯一のことは、ルートとして再マウントすることです:

$ 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.)

そして、ゾンビを別のディレクトリに転送できます:

$ 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.

何か案は?私は何か間違っていますか?


場合はfooいずれかの場合、出力はの、何で、「ゾンビ」ですかsudo lsof foo?実行しているリモートホストへのSSHプロセスが(そこにあるps -ef|grep "me@host"あなたが試してみたいことがあり、代替のfstabエントリの形式があります:? sshfs#me@host:/home/me /Users/me/tmp/foo fuse allow_other 0 0
ジャウメ

@jaume 2つの検索のどちらも何も出力しません。/etc/fstab/バージョンを変更すると、mountコマンドが/Library/Filesystems/fuse.fs/存在しないために失敗します。inのosxfuse代わりに使用fuseする/etc/fstabと、mountコマンド/Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuse「このプログラムは直接呼び出されることを意図していない。OSXFUSEライブラリが呼び出す」
n.caillou

問題を解決できなかったことを読んで申し訳ありません。誰かが解決策や有用なヒントを聞いてくれることを願っています。
ジャウメ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.