SSHFS에서 inotify 또는 명명 된 파이프를 어떻게 사용합니까?


12

고마워 sshfs마법, 나는 원격 서버에서 홈 디렉토리를 마운트 할 수 있습니다

sshfs user@server:/home/user ~/remote

낙관적으로, 로컬 프로그램이 원격 로그 변경에 반응 할 수 있도록 마운트 에서 로컬 inotify후크 를 설정한다고 생각했습니다 .~/remote/logFilesshfs

cd ~/remote
touch logFile                                # create remote file
inotifywait logFile &                        # set up local inotify-hook
ssh user@server -x touch /home/user/logFile  # touch file from remote

아무 일도 일어나지 않습니다 . 파일이 로컬로 inotifywait있지 않으면 자동 touch입니다. 명명 된 파이프에 쓰는 것도 비슷하게 실패합니다.

왜 이런거야?
이 차이를 어떻게 극복 할 수 있습니까?

나는 수있는 실행 inotifywait, 원격의 파일 시스템 변경 직렬화 전략을 해킹하고 지역에 대한 연결을 유지하지만 난 기본적으로 SSHFS을 재 구현 . 그리고 그것은 추상화를 완전히 죽입니다.


2
inotify로컬 시스템에서 원격 파일 시스템의 변경 사항을 감지 할 수 있는 방법이 없다고 생각 합니다. 로컬 커널은 이러한 변경으로 인해 루프에서 벗어났습니다. inotifywait클라이언트가 아닌 서버에서 실행해야합니다 .
Barmar

@Barmar 그러나 클라이언트 (로컬 컴퓨터)는 변경 사항을 알 수 없습니다. 나는 그것에 대해 조금 추가하기 위해 편집했다.
Anko

일반적으로 네트워크 파일 시스템은 완전한 투명성을 제공 할 수 없으며 종종 추상화를 손상시킵니다. 필요한 것은 SSHFS의 향상된 기능입니다. 로컬에서 inotify를 실행할 때 요청을 서버로 보내야합니다. 서버로 요청을 보내면 inotify가 실행되고 알림이 다시 클라이언트로 전달됩니다.
Barmar

gamin을 확인 했습니까?
야누스 트롤 슨

@JanusTroelsen 나는 gamin에 대해들은 적이 없다. 개요 페이지 에 따르면 inotify도 사용합니다. 네트워크를 통해 이러한 업데이트를 배포하는 데 유용합니까?
Anko

답변:


10

SSHFS 파일 시스템은 SFTP 프로토콜 위에 구축됩니다 . SFTP는 "클래식"방식으로 파일을 조작하는 기능 만 제공합니다. 클라이언트는 서버에 요청 (디렉토리 나열, 파일 업로드 등)하고 서버가 응답합니다. 이 프로토콜에는 서버가 클라이언트에게 어떤 일이 발생했음을 자발적으로 알리는 기능이 없습니다.

따라서 SSHFS 내부에 inotify와 같은 기능을 제공 할 수 없습니다. 독점 확장으로 SSHFS를 확장하거나 본격적인 SSH 연결로 보완 할 수 있습니다. 그러나 나는 SSHFS에 대한 그러한 확장을 모른다.

같은 이유로 SSHFS 위에 명명 된 파이프를 구현할 수 없습니다. 기존의 네트워크 파일 시스템 인 NFS에는 파이프라는 파이프 머신을 지원할 수있는 기능이 없습니다. 네트워크화 된 파일 시스템에서 이름 지정된 파이프는 서버 외에 마운트 된 각 머신에서 독립적 인 통신 지점을 작성합니다.

FAM (Linux로 포팅 된 SGI IRIX의 inotify 아날로그)은 네트워크를 통해 알림을 보낼 수있는 데몬을 제공합니다. inotify가 등장한 이후 Linux는 FAM을 더 이상 사용하지 않으므로 FAM을 실행하는 것이 자신의 응용 프로그램 별 알림 시스템을 롤링하는 것보다 쉬운 지 모르겠습니다. FAM 및 NFS의 네트워크 링크를 보호하려면 SSH를 통한 일부 포트 전달을 설정하거나 VPN을 설정해야합니다.

클라이언트에게 셸 액세스 권한을 부여한 것으로 가정하고 자신의 롤을 선택하면 클라이언트 대신에 inotify 모니터를 실행하는 것이 매우 쉽습니다. 클라이언트가 SSH 연결을 열고 inotifywait서버 에서 명령을 실행 하도록합니다. 클라이언트에서 출력을 구문 분석합니다. 동일한 클라이언트에서 동일한 서버로 많은 연결을 더 빨리 열도록 마스터 연결설정할 수 있습니다 .


1
적어도 qemu는 일종의 크로스 머신 파이프를 지원합니다 : 가상 손님을위한 파이프
Janus Troelsen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.