• toc {:toc}

File-System Mounting

  • 파일 시스템은 프로세스에 사용되기 전에 mount되어야 한다.

    • Storage name, mount point(경로) 가 설정된다.
  • Root partition은 OS 포함한다.

    • boot time에 mount 된다.
    • 다른 partition은 자동, 수동으로 추가 가능

image

Virtual File Systems on Unix

  • Virtual File System : 파일 시스템 구현의 객체 지향적 방식 제공
  • 다형성을 이용해 파일 시스템 구현
    • 다양한 타입의 파일 시스템에 대해 같은 시스템 콜 인터페이스 사용 허용
    • 네트워크를 통해 고유하게 파일을 표현하는 매커니즘 제공

image

  • EX) Linux
    • inode object - 개별의 파일을 나타낸다.
    • file object - 열린 파일을 나타낸다.
    • superblock object - 전체 파일 시스템을 나타낸다.
    • dentry object - 개별 디렉토리 entry를 나타낸다.

Remote File Systems

네트워크를 거쳐 파일 공유

  1. FTP(File Transfer Protocol) : 수동으로 각 파일을 공유한다.
  2. DFS(Distributed file system) : 여러 파일 시스템에서 동기적으로 공유. cluster에서 많이 사용한다.
  3. WWW(World Wide Web) : 링크로 다운로드, 업로드를 한다.

Network File System(NFS)

  • 클라이언트-서버 네트워크 파일 시스템으로 널리 사용되고 구현되어 있다.
  • NFS 서버로 동작하는 장비에 클라이언트가 접속하여 자신의 디스크처럼 사용할 수 있다.
  • TCP, UDP/IP 프로토콜을 사용할 수 있다.
  • RPC(Remote Procedure Call) : 서버 함수를 RPC 프로토콜을 사용해 가져올 수 있다.

image

  • 투명한 방식으로 파일 시스템을 공유할 수 있게 한다.
  • remote 디렉토리가 local 파일 시스템 디렉토리에 mount 되어 사용될 수 있다.
    • Local에서 remote 디렉토리가 표시되는데 실제로는 서버에 있으나 접근해 사용 가능

NFS Mount Protocol

  • Mount operation (mount되는 remote 디렉토리 이름, 디렉토리를 저장하는 서버 이름)을 포함
    • RPC에 mount request는 연결된다.
    • Export list : mount 가능한 기기의 이름에 대해 명시
    • Export list에 추가되어 있는 경우 서버는 mount된 디렉토리를 식별하는 file system identifier, inode number를 가진 file handler를 반환한다. 추가적인 접근을 준다.
  • Mount operation은 서버 측에 영향을 주지 않는다.

NFS Protocol

  • Remote file 조작을 위해 RPC 제공
    • 디렉토리에서 파일 찾기
    • 디렉토리 entry 읽기
    • 링크, 디렉토리 조작
    • 파일 속성 접근
    • 읽고 쓰기
  • NFS 서버는 따로 저장하지 않고 필요할 때마다 읽어 처리한다. 각 요청은 argment 전부를 제공
  • 수정된 데이터는 결과가 클라이언트에 반환되기 전에 서버 디스크에 바로 적용되어야 한다.
  • NFS protocol은 동시성 제어 매커니즘을 제공하지 않는다.

NFS Path-Name Translation

  • Component 이름으로 경로 나누고 이름 및 디렉토리 vnode 쌍에 대해 별도 NFC lookup 호출을 해야한다.
  • 이런 이름, 경로를 클라이언트 측에서 cache로 저장하면 빨라질 것.

NFS Remote Operations

  • System call과 NFS RPC 프로토콜은 거의 일대일 대응관계

  • 성능 목적으로 buffering, caching 사용

    • File-blocks cache : 파일이 열렸을 때 커널이 서버에서 cached 속성을 가져올지 재검증할지 확인(수정 여부 확인해야 하기 때문)
    • File-attribute cache : 서버로부터 새로운 속성이 도착할 때마다 업데이트 된다.
  • 서버에 데이터가 디스크에 써졌다는 확인 전에 클라이언트를 해제하면 안된다.