1993.1.26

SUBJECT: NFS의 개념

DESCRIPTION:
0. Network을 경유한 file 전송 경로
   0) remote machine의 file을 가져 온다.

                    Local Machine              | Network |             Remote Machine
                                               |         |
             +-----------+     +-----------+   |         |   +-----------+     +-----------+
             | file 전송 |─→ |  Network  |───────→ |  Network  | ─→| file 전송 |──┐
             |  Client   |     |   S/W     |   |         |   |   S/W     |     |  Server   |    ↓Disk
             +-----------+     +-----------+   |         |   +-----------+     +-----------+ +-------+
                                               |         |                                   |  file |
                                                                                             +-------+
                                               |         |
             +-----------+data +-----------+   |  data   |   +-----------+data +-----------+
         ┌─| file 전송 |←─ |  Network  |←─────── |  Network  |←─ | file 전송 |←─┐
     Disk│  |  Client   |     |   S/W     |   |         |   |   S/W     |     |  Server   |    │Disk
         ↓  +-----------+     +-----------+   |         |   +-----------+     +-----------+ +-------+
       +-------+                               |         |                                   |  file |
       |  file |                               |         |                                   +-------+
       +-------+                               |         |                                    

   1) file의 data를 처리한다.

      +-----------+          +----------+          +---------------+
      |   local   |────→|   file   |────→|  application  |
      |   file    |←────|  system  |←────|    software   |
      +-----------+          +----------+          +---------------+

   2) 처리된 file을 본래로 되돌린다.

                    Local Machine              | Network |             Remote Machine
                                               |         |
             +-----------+data +-----------+   |  data   |   +-----------+data +-----------+
             | file 전송 |─→ |  Network  |───────→ |  Network  | ─→| file 전송 |──┐
             |  Client   |     |   S/W     |   |         |   |   S/W     |     |  Server   |    ↓Disk
             +-----------+     +-----------+   |         |   +-----------+     +-----------+ +-------+
                                               |         |                                   |  file |
                                                                                             +-------+

1. 자원 공유형 network의 전달 경로

           Local Machine                    | Network |             Remote Machine
                                            |         |
    +--------+     +--------+    +--------+ |         |     +-----------+
    | 응 용  |─→ |  File  |─→|Network |───────→ |  Network  |──┐
    |  S/W   |←─ | System |─┐|  S/W   | |         |     |   S/W     |    │
    +--------+     +--------+  │+--------+ |         |     +-----------+    ↓
                               ↓           |         |                 +--------------+ 
                          +---------+       |         |                 |    Remote    |     
                          |  Local  |       |         |                 | file service |
                          |  file   |       |         |                 +--------------+
                          +---------+       |         |

2. 자원 공유형 network의 Software 구성

              Client
    +--------------------------------+
    |        Application S/W         |
    +-----------------┰-------------+
                      ┃                                         Server
    +-----------------╂-------------+            +-------------------------------------+
    | +---------------╂-----------+ |            | +-------------+    +--------------+ |
    | |       ┏━━━┻━━━┓   | |            | |             |    |              | |
    | +-------╂----------+   ┃   | |            | | Remote File |    |  Local File  | |
    | +-------╂--------+ | Remote | |            | |    Server   |    |    Server    | |
    | |       ┃        | | File   | |            | |       ┏━━━━━━━━┓      | |
    | |   Local File    | | 관리   | |            | +-------╂----+    +------╂------+ |
    | |      관리       | |   ┃   | |            | +-------╂----+    +------╂------+ |
    | |       ┃        | |   ┃   | |            | |       ┃    |    |      ┃      | |
    | +-------╂--------+ +---╂---+ |            | |       ┃    |    |      ┃      | |
    | +-------╂--------+ +---╂---+ |            | |   Network   |    |  Hard Disk   | |
    | |       ┃        | |   ┃   | |            | |   처리부    |    |     제어     | |
    | |    Hard Disk    | | Network| |            | |       ┃    |    |      ┃      | |
    | |      관리       | | 처리부 | |            | |       ┃    |    |      ┃      | |
    | |       ┃        | |   ┃   | |            | |       ┃    |    |      ┃      | |
    | +----+--╂--------+ +---╂┬-+ |            | +---┬--╂----+    +------╂--+---+ |
    +------|--╂--------------╂┼----+           +-----┼--╂----------------╂--|-----+
           |  ┃              ┃│                      │  ┃                ┃  |
           |  ↓              ┃│                      │  ┃                ↓  |
      +----+--------+         ┃│                      │  ┃         +----------+--+              
      |     File    |         ┃│                      │  ┃         |     File    |              
      +-------------+         ┃│                      │  ┃         +-------------+              
           Disk               ┃│                      │  ┃                   Disk             
                              ┗┿━━━━━━━━━━━┿━┛           
     ---------------------------┴----------------------┴---------------------------------




3. NFS(Network File System)
   * disk 영역을 관리하고 file의 access를 관리하기도 하는 등의 일은 OS의 filesystem이 담당하던 것.
     이와 같이 filesystem이 하던 작업을 network을 초월해서 여러대의 컴퓨터가 실행할 수 있게끔 한 것이
     바로 NFS이다.
   * NFS는 local file system이 있는 directory에서 remote system상의 directory와 
     논리적으로 연결(mount)하는 작업을 해준다.
     일단 그 접속(mount)가 이루어지면
     local disk와 마찬가지로  remote disk를 전혀 차이 없이 access할 수 있다.
     사용자나 application은 자신이 access하려는 화일이 실제로 어느 컴퓨터에 있는지를 의식할 필요가 없다.  
   * NFS 접속 방식은 local disk의 filesystem이 "UFS(4.2)" type으로 mount되듯이
     remote disk의 filesystem or directory를 "nfs" type으로 mount하면 된다. 
   * NFS는 server-client model로 구현되며
     local disk를 사용할 수 있게끔 허용해 주는 쪽, 즉 export해 주는 쪽을 "nfs server"라 하고
     remote disk를 사용하려 하는 쪽, 즉 nfs mount하려는 쪽을 "nfs client"라 한다.
   * NFS를 사용하여 얻을 수 있는 이점 중 'disk의 절약'이 있다.
     여러 시스템에서 똑 같이 사용하는 file들을 각 시스템 disk마다 저장해 놓지 않고
     한 시스템에만 저장해 놓고 NFS mount해 사용하면 그만큼 disk를 절약할 수 있게된다. 
   * 처음에는 Sun workstation들이 disk를 공유하기 위해 개발하였지만
     요즈음은 기종에 관계없이 또 여러 OS에 구현되도록 설계되어 있다.
     많은 vendor들이 그들의 컴퓨터에 대해 NFS를 제공하고 있다.
     이처럼 민간 기업이 독자적 사양을 결정한 것이 업계에 널리 수용되면서 사실상의 표준이 된 경우를
     "defact standard(업계표준)"이라 부르고
     IEEE 등 공공기관에서 규정된 "IS(International Standard:국제표준)"과는 구별된다.

4. NFS의 Software 구성

              Client                                           Server

       +-----------------------+
       |  Application Program  |   "remote file 관리부에 해당"
       +-----------------------+     ┃
                    ↓               ┃
              +---------+  ━━━━━┫                                    +-----------+
      ┌───|  vnode  |────┐  ┃ "nework 관리부에 해당" ┌────→|   vnode   |
      │      +---------+        │  ┃ ┃                     │          +-----------+
      ↓            ↓           ↓  ┃ ┃                     │                ↓
   +----------+ +---------+ +----------+┃              +-------------+    +-----------+
   |  4.2 BSD | |   VFS   | |  Remote  |┃              |  NFS server |    |  4.2 BSD  |
   |    VFS   | +---------+ |   VFS    |┃              +-------------+    |    VFS    |
   +----------+     │      +----------+┃                     ↑          +-----------+
                    ↓           ↓     ┃                     │                ↓
                +---------+ +----------+┃              +-------------+    +-----------+
                |  File   | | RPC/XDR  |┛              |  RPC / XDR  |    |    File   |
                +---------+ +----------+                +-------------+    +-----------+
                                 │                            ↑
                                 ↓                            │
                            +----------+                +-------------+
                            |  TCP/IP  |                |  TCP / IP   |
                            +----------+                +-------------+
    LAN                          │                            │
     ──────────────┴──────────────┴─────────────


   VFS: Virtual File System             vnode : vitual node
   RPC: Remote Procedure Call           
   XDR: External Data Representation





Revision History
Created        on Jan. 22 ,1993