SW Engineering/OS Concept

52_네트워크 파일 시스템 (Netwrok File System)

SungWookKang 2015. 7. 16. 14:21
반응형

52_네트워크 파일 시스템 (Netwrok File System)

 

NFS는 LAN을 거쳐 원격 파일을 접근하기 위한 소프트웨어 시스템의 구현과 명세 모두를 말한다. 통신은 TCP 또는 UDP 두 가지 중 하나를 사용한다.

 

NFS의 목적은 이들 파일 시스템들 사이에서 일정 수준의 공유를 투명하게 허용하는 것이다. 공유는 클라이언트 서버의 관계를 기반으로 하며 시스템은 동시에 클라이언트와 서버가 될 수 있다.

 

[원격 디렉토리 접근]

  1. 원격 디렉토리가 특정 시스템(M1)으로부터 투명하게 접근 가능하도록 하기 위해서 M1의 클라이언트는 먼저 마운트 명령을 실행 한다.
  2. 마운트 명령은 원격 디렉토리가 지역 파일 시스템의 디렉토리 상에 장착 되게 한다.
  3. 마운트 명령이 완료되면 장착된 디렉토리는 지역 파일 시스템의 서브트리처럼 보이며 지역 디렉토리의 기존 서브트리를 대체한다.
  4. 지역 디렉토리는 새로 장착된 디렉토리의 루트의 이름이 된다.
  5. 마운트 명령을 위한 매개변수로 원격 디렉토리를 지정하는 일은 투명하지 않은 방식으로 실행 된다. 즉 원격 디렉토리의 위치가 반드시 제공 되어야 한다.
  6. 일단 장착되고 나면 시스템 M1의 사용자 들은 원격 티렉토리의 파일을 완전히 투명하게게 접근할 수가 있다.

 

일부 NFS 구현에서는 연속(cascading) 마운트를 허용한다. 즉 한 파일 시스템이 원격 장착된 파일 시스템에 다시 장착 될 수 있다. 한 기계는 단지 자신이 호출한 마운트에 의해서만 영향을 받는다. 원격 파일 시스템을 장착해도 클라이언트는 원격 파일 시스템에 우연히 이미 장착되어 있던 다른 파일 시스템은 접근할 수 없다. 그러므로 마운트 기법은 이행성(transitivity) 특성을 갖지 않는다.

 

[NFS 설계 목표]

NFS의 설계 목표 중 하나는 서로 다른 기계, 운영체제, 네트워크 구조로 구성된 다른 환경에서 작동하는 것이다. NFS 명세는 이들 매체에 독립적이기 때문에 다른 구현들을 이용 가능하게 한다. 이러한 독립성은 두 개의 구현된 독립적 인터페이스간에 사용되는 외부 자료 표현(XDR, Extenal Data Representation)프로토콜 위에 구축된 RPC 프리미티브를 통해서 이루어 진다. 따라서 NFS와 정확하게 인터페이스되는 이기종 시스템과 파일 시스템으로 구성된 시스템에서는 다른 유형의 파일 시스템들도 지역 또는 원격으로 장착될 수 있다.

 

NSF 명세는 마운트 기법에 의해 제공되는 서비스와 실제 원격 파일 접근(remote file access)서비스를 구분한다. 이들 서비스들을 위해 두 가지의 다른 프로토콜이 명세 되어 있다.

  • 마운트 프로토콜(Mount Protocol) : 마운트 프로토콜은 서비스와 클라이언트 사이의 초기 논리적 연결을 생성하기 위해서 사용된다. 각 시스템은 커널 외부에 프로토콜의 기능들을 실행하는 하나의 서버 프로세스를 가진다.
  • NFS 프로토콜 (NFS Protocol) : NFS 프로토콜은 원격 파일 연산을 위한 원격 프로시저 호출의 집합을 제공 한다. 이 프로시저는 다음과 같은 연산들을 지워 한다
    • 디렉토리 내의 파일 검색
    • 디렉토리 항목 집합의 읽기
    • 파일 속성의 접근
    • 파일 읽기와 쓰기

이러한 프로시저는 원격으로 장착된 디렉토리에 대한 파일 핸들이 구축되어야만 호출할 수 있다.

 

[VFS (Virtual File System)]

NFS는 가상 파일 시스템(VFS)을 통하여 운영체제로 통합된다. 이미 열려진 원격 파일에 대한 연산들이 어떻게 처리되는지 확인해 보자.

 

  1. 클라이언트는 정규 시스템 호출을 통해서 연산을 시작한다.
  2. 운영체제 계층은 이 호출을 적절한 vnode에 대한 VFS 연산으로 매핑 한다.
  3. VFS 계층은 이 파일을 원격 파일로 인식하고 적절한 NFS 프로시저를 실행한다.
  4. 하나의 RPC 호출이 원격 서버 내의 NFS 서비스 계층에 대해 행해진다.
  5. 이 호출은 원격 시스템 상의 VFS 계층으로 다시 들어가고 원겨격 시스템은 그 호출이 지역적임을 반견하며 적절한 파일 시스템 연산을 실행 한다.
  6. 이 경로를 되돌아가 결과를 반환한다.

 

이러한 구조의 장점은 클라이언트와 서버가 동등하므로 시스템이 클라이언트나 서버 모두가 될 수 있다. 각 서버에서 실제적인 서비스는 경량 프로세스(lightweight process), 즉 스레드(thread) 기법을 일시적으로 대체하는 여러 커널 프로세스들에 의해서 실행 된다.

 

 

[참고자료]

Operating System Concepts / 홍릉과학 출판사

 

 

 

 

반응형