파일 시스템은 실제로 정말 많은 종류가 있습니다. 사용자가 파일 시스템에 접근할 때 각 파일 시스템의 특정한 시스템 콜 인터페이스를 전부 알아야 한다면 매우 불편할 것입니다.
이를 해결하기 위해 운영 체제는 개별 파일 시스템 위에 가상 파일 시스템(VFS)이라는 추상화 계층을 두고 있습니다.
1. VFS(가상 파일 시스템)
VFS는 각 파일 시스템의 특성을 추상화하여 동일한 시스템 콜 인터페이스(API)를 제공합니다. 이를 통해 다양한 파일 시스템에 상관없이 사용자는 VFS 인터페이스를 통해 파일 시스템에 접근할 수 있어 편리합니다.
2. NFS (네트워크 파일 시스템)
파일 시스템이 Local Storage에 저장될 수도 있지만, 원격에 저장되어 있는 파일 시스템에 접근할 수 있습니다. 이때 클라이언트와 서버 간에 네트워크를 통해 파일을 공유하는데, NFS를 통해 클라이언트는 마치 로컬 파일 시스템에 접근하는 것처럼 원격 파일 시스템에 접근할 수 있습니다.
위 그림을 통해 동작 방식을 좀 더 자세히 살펴보겠습니다.
클라이언트는 어떤 파일 시스템이건 상관없이 VFS 인터페이스를 통해 파일 시스템에 접근 요청을 합니다. 이 때 로컬 컴퓨터에 있는 파일 시스템에 접근 가능하고, 원격으로 다른 컴퓨터에 있는 파일 시스템도 접근할 수 있도록 지원합니다.
서버는 UNIX 파일 시스템이 사용되고 있는데, 클라이언트가 VFS 인터페이스를 통해 마치 자신의 컴퓨터에 있는 것처럼 접근 요청을 하게 됩니다. 이처럼 클라이언트가 로컬 파일 시스템이 아닌 원격 파일 시스템에 접근하고자 할 때, 클라이언트는 VFS 인터페이스를 통해 해당 요청을 NFS 모듈에 전달합니다.
NFS 모듈은 클라이언트에서의 요청을 처리하고 원격 서버에 접근합니다. 이때 RPC(원격 프로시저 호출)를 사용하여 원격 서버에 접근 요청을 합니다. (RPC : 분산 환경에서 프로그램 간 통신을 위해 사용되는 메커니즘)
서버는 NFS 요청을 수신하고 해당 요청에 따라 파일 시스템에 접근합니다. 클라이언트가 요청한 파일이 서버에 있는 경우, 서버는 해당 파일에 대한 작업을 수행하고 결과를 클라이언트에게 반환합니다.
만약 파일 데이터를 요청한 경우, 서버는 데이터를 클라이언트에게 전송합니다.
참고자료
[KOCW 이화여대 반효경 교수님 - File Systems Implementation 1]
https://core.ewha.ac.kr/publicview/C0101020140520134614002164?vmode=f
[ Operating System Concepts - Abraham Silberschatz ]
https://www.yes24.com/Product/Goods/89496122