NFS

개요

네트워크 파일 시스템.
파일 시스템인데, 네트워크를 연결해서 사용하는 파일 시스템이다.

84년 Sun Microsystems에 의해 개발된 UNIX 프로토콜로, 최근 사용되는 버전은 v4.

특징

서버 - 클라이언트 관계를 가지고 있다.
그래서 클라이언트가 서버에 요청해서 연결되는 방식이다.

여러 클라이언트가 같은 파일시스템을 공유할 수 있게 된다.

장점

FTP, Samba와 비교하여 가지는 이점은 다음과 같다.

단점

원리

내부적으로는 RPC 프로토콜이 사용된다.
그래서 사용할 때는 rpcbind라고 하는 요청을 받아서 포트 매핑을 해주는 데몬 프로세스가 필요하다.
클라이언트에서 서버에 파일 관련 작업 요청을 보내고, 이를 서버에서 수락하는 방식.
Pasted image 20241016203528.png
클라이언트에 마운트된 파일시스템에 대한 클라이언트의 모든 요청은 rpc로 서버로 날아간다.
클라 입장에서는 자신의 파일시스템인 냥 사용하지만 결국 사실 그렇지는 않다.
서버는 요청을 받고 자신이 관리하고 있는 해당 파일시스템에 작업을 수행하고 결과를 돌려보내준다.

실습

T-NFS 서버 만들고, 연결하기

Ganesha

위의 사진을 보면 시스템 콜 인터페이스를 사용하는데, 실제로 nfs 로직은 커널 모드에서 동작한다고 한다.
그런 만큼 사용하는 하드웨어 환경과 밀접한 연관 관계를 가진다는 듯하다.
속도는 빠르겠지만, 그만큼 유연성은 떨어지게 된다.
그래서 nfs를 유저 모드에서 실행하는 프로젝트가 나왔으니, 그것이 바로 nfs-ganesha이다.

Pasted image 20241017083435.png
그게 뭐 대단한 거냐, 싶은데 이 nfs는 아래에 보면 다른 많은 파일시스템들과 연결이 될 수 있다는 점에서 장점을 가진다는 듯하다.
즉, 확장성을 확보할 수 있다는 것이다.
그래서 Ceph의 프론트엔드로 활용되는 경우도 존재한다.

참고