Samba에 VFS 모듈이 필요한 이유는 무엇입니까?

Samba에 VFS 모듈이 필요한 이유는 무엇입니까?

여기에 이미지 설명을 입력하세요.

삼바댄스를 배우던 중 이 사진을 봤습니다. 이 그림의 VFS 모듈이 헷갈립니다.

  1. 예상되는 시스템 호출을 C 라이브러리에 직접 전달하는 대신 삼바 서버에 이 VFS 모듈이 필요한 이유는 무엇입니까? 클라이언트 측에서는 커널이 마운트된 파일 시스템에 대해 알 수 있도록 cifs.ko 또는 smbfs가 필요하다는 것을 알고 있습니다.

    예를 들어 클라이언트가 파일을 읽으려고 할 때입니다. 해당 프로토콜 명령을 네트워크를 통해 서버에 전달합니다. 서버의 이더넷 카드는 이를 수신하여 애플리케이션 계층으로 전송합니다. 그러면 애플리케이션 계층의 CIFS 프로토콜이 이 명령을 해석하고 이를 c 라이브러리에 전달하여 궁극적으로 sys_read() 시스템 호출이 발생합니다. 이 과정에서 VFS는 불필요해 보입니다.

  2. 이 모듈은 필수인가요? 그렇지 않은 경우 컴파일되었는지 어떻게 확인할 수 있나요?

감사해요

다시 채우다:

이 다이어그램은 smbd 프로세스 아키텍처를 설명하기 위한 것입니다. 표현하고 싶은 것은 smbd가 다중 프로세스, 단일 스레드 아키텍처를 가지고 있다는 것입니다. 나는 Samba 3.0을 Sametime이라는 다른 CIFS 서버와 비교하는 기사에서 이것을 보았습니다.

답변1

/var/samba/share1/dir/file4시간 동안 답변이 없었으므로 추측을 추가하겠습니다. 이는 물리적 경로(예: )를 논리적 경로( )로 변환하는 레이어일 수 있습니다 share1\dir\file.필요한 파일 이름 변환, 권한 확인 등 그러므로 필수이지 선택사항이 아닙니다.

프로토콜 구현 자체는 이미 논리 경로에서 실행 중일 수 있으며 VFS에서 찾은 모든 내용을 간단히 줄에 추가할 수 있습니다.

답변2

이미지가 무엇을 의미하는지 완전히 명확하지 않습니다. 그러나 Linux의 모든 파일 시스템 호출은 VFS에서 처리됩니다. 이런 의미에서 VFS는시스템 호출을 서비스하는 커널의 일부입니다. 하지만 당신처럼 나도 왜 VFS가 차단 시스템 호출을 하는지 다이어그램에 표시되어 있는지 잘 모르겠습니다.

그러나 당신의 설명도 올바르지 않습니다. 클라이언트가 애플리케이션 계층에서 무엇인가를 의미한다면 Samba는 투명해야 합니다. 단지 다른 파일 시스템에 액세스하고 있다고 생각하고 이를 위해 표준 시스템 호출을 사용할 것입니다(예: VFS를 통해). 그런 다음 커널은 이러한 호출을 네트워크를 통해 라우팅합니다.

답변3

나는 VFS 모듈이 posix 파일 시스템의 기능을 확장한다고 생각합니다.

https://www.samba.org/samba/docs/man/Samba-Developers-Guide/vfs.html

예를 들어, 특정 파일 시스템에 대한 확장 속성 지원은 선택 사항입니다. 하지만 선택적으로 활성화/비활성화할 수 있습니다.

답변4

VFS 모듈은 다양한 파일 시스템 구현에 일관된 인터페이스를 제공하는 추상화 계층입니다.

가상 파일 시스템

가상 파일 시스템(VFS) 또는가상 파일 시스템 스위치보다 구체적인 파일 시스템 위에 있는 추상화 계층입니다. VFS의 목적은 클라이언트 응용 프로그램이 균일한 방식으로 다양한 유형의 구체적인 파일 시스템에 액세스할 수 있도록 하는 것입니다. 예를 들어, VFS를 사용하면 클라이언트 응용 프로그램이 차이점을 인식하지 않고도 로컬 및 네트워크 저장 장치에 투명하게 액세스할 수 있습니다. ...

SAMBA 및 모든 사용자 공간 프로세스에서는 실제 파일 시스템에 액세스하려면 VFS 모듈이 필요합니다.

관련 정보