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하지만 umountFinder의 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

@jaume 두 검색 중 어느 것도 아무것도 출력하지 않습니다. /etc/fstab/버전으로 변경 하면 mount 명령이 /Library/Filesystems/fuse.fs/존재하지 않으므로 실패 합니다. in osxfuse대신에 fuse를 사용 /etc/fstab하면 mount 명령 /Library/Filesystems/osxfuse.fs/Contents/Resources/mount_osxfuse"이 프로그램은 직접 호출되지 않습니다. OSXFUSE 라이브러리가 호출합니다"라는
n.caillou

문제가 해결되지 않았다 니 죄송합니다. 누군가가 해결책이나 유용한 힌트를 얻었기를 바랍니다.
jaume
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.