OS/LINUX2004. 9. 10. 22:35
반응형

NFS(Network File System)

1. what's NFS

1980년대 중반에 SUN에서 개발되어 현재 여러 운영체제에서 지원되는 서비스로 서버의 리소스를 클라이언트 상에서 마치 지신의 리소스를 사용하는 것과 같이 사용할수 있게 제공되어 지는 것이다. NFS가 일단 설치되면 클라이언트 상의 사용자들은 마치 자신의 시스템에 있는 것처럼 서버의 파일 시스템에 파일들을 읽거나 쓸 수 있다.

2. 관련 파일들

 

Server

Client

Commands

share / unshare
shareall / unshareall
dfmounts
/etc/init.d/nfs.server

mount / umount
mountall /umountall -r
dfshares
/etc/init.d/nfs.client

Files

/etc/dfs/dfstab /etc/dfs/fstypes
/etc/dfs/sharetab
/etc/rmtab

/etc/vfstab
/etc/dfs/fstypes
/etc/mnttab

Daemons

/usr/lib/nfs/nfsd
/usr/lib/nfs/mountd

/usr/lib/nfs/statd
/usr/lib/nfs/lockd

Automounter

없음

/usr/sbin/automount

 

3. Configuring the NFS Server

Manual Sharing

# share /usr/share/man ; command line에서의 사용

# /etc/init.d/nfs.server start ; server daemon 기동

  • Automatic Sharing

    # vi /etc/dfs/dfstab

    share -F nfs /usr/share/man

    ; run level 3로 들어갈 때마다 이 file을 참조

    # dfmounts ; /etc/rmtab의 내용을 참조하여 display

    ; /etc/rmtab : server의 resource를 mounting하는 client의 table



4. Configuring the NFS Client

  • Manual Mounting

    # mount venus:/usr/share/man /usr/share/man

    ; client의 /usr/share/man이 mount point

    ; mount point는 empty라야 함

  • Automatic Mounting

    # vi /etc/vfstab

    venus:/usr/share/man - /usr/share/man nfs - yes -

    ; run level 2로 들어 갈 때마다 이 file을 참조

    # umount /usr/share/man ; mount를 해제

5. Commaind Reference for NFS Server

  • # share [ -F nfs ] [ -o options ] [ -d description ] pathname

    /etc/dfs/dfstab : share command는 share된 모든 file resource들에 대한 정보를 이 file에 기록

    -F nfs : command line에서는 필요 없다.(default remote file sytem type)

    remote file system type : /etc/dfs/fstypes 참조

    -o options : rw=client[:client] ; read-write

    ro=client[:client] ; read-only

    root=client[:client] ; root access

    anon=0 ; 어느곳에서나 UID 0으로 access 한다.

    -d description : file resource를 설명하는 comment

    : share command (argument 없는)가 실행되면 display

    -pathname : file resource의 path name

    <Example> # share -F nfs -o root=seven:indy,rw=sun /usr/share/man

  • # unshare [ -F nfs ] pathname

    ? /etc/dfs/sharetab에서 해당 resource를 삭제

    -F nfs : share와 동일

    -pathname : unshare될 file resource path name

    <Example> # unshare /usr/share/man

  • # shareall [ -F nfs ]

    /etc/dfs/dfstab에 있는 share command의 list를 실행

    -F nfs : nfs type으로만 제한

  • # unshareall [ -F nfs ]

    /etc/dfs/sharetab을 참조, share된 resource를 unshare한다.

    -F nfs : nfs type으로만 제한

6. Commaind Reference for NFS Client

  • # umount [ -F nfs ] server:pathname mount-point
  • # mountall -r [ -F nfs ]

    /etc/vfstab 참조

    -r : remote resource로만 제한할 경우

    -F nfs : remote에 rfs type과 같은 resource와 nfs resource가 함께 존재 할 경우 nfs type으로만 제한할 경우 사용

  • # umountall -r [ -F nfs ]

    /etc/vfstab 참조

    -r, F nfs : mountall과 동일

  • # dfshares server-name ; share된 resource를 display
  • # mount [-F fs_type] [options] [-o options] special directory

 

-F fs_type

-p

-v

-V


-m

-r

-o

파일 시스템 타입을 지정한다. 디폴트 ufs (nfs, hsfs, swap)

/etc/vfstab 파일에 넣을수 있도록 현재 설치된 화일 시스템의 리스트를 모두 출력한다.

장황한 형태로 현재 설치된 파일 시스템의 리스트를 모두 출력한다.

모든 디폴트 설정을 포함하여 주어진 명령을 확장하고 그 결과를 출력한다. 그러나 실재로 실행하지는 않는다. 시스템 디폴트 설정이 복잡할 때 mount 명령을 검증하는데 유용하다.

파일 시스템을 설치하지만 /etc/mnttab에 출력하지 않는다.

파일시스템을 읽기 전용으로 설치한다.

-o 플래그 뒤의 매개변수는 -F 플래그 뒤에 오는 파일 시스템 타입에 따른 옵션이다. 파일시스템에 타른 옵션들은 ,로 구분하여 여러 개 지정할수 있다.

options

<UFS>

f

n

rw|ro

nosuid

remount


/etc/mnttab에 기록을 하지만 실제로 파일 시스템을 설치하지는 않는다.

파일 시스템을 설치하지만 /etc/mnttab에 기록하지 않는다.

파일 시스템을 읽기/쓰기(default)나 읽기 전용으로 설치한다.

이 파일 시스템 내에서는 setuid 프로그램들의 실행을 허용하지 않는다.

읽기 전용으로 설치된 파일 스스템에 대해 임시로 읽기-쓰기 access 용으로 다시 설치한다.

<NFS>

rw|ro

setuid|nosuid

remount

intr|nointr

soft|hard

fg|bg

retry=n

rsize+n

wsize=n

timeo=n

retrans=n


파일 시스템을 읽기-쓰기(default)나 읽기 전용으로 설치한다.

이 파일 시스템 내에서는 setuid 프로그램들의 실행을 허용하지 않는다. (default : 허용)

읽기 전용으로 설치된 파일 시스템에 대해 임시로 읽기-쓰기 access용으로 다시 설치한다.

설치가 완요되기를 기다리는 프로세스를 키보드 인터럽트로 중단 가능(불가능)하게 만든다. (default : 허용)

soft는 NFS 서비스가 응답하지 않을 때 에러를 리턴함을 의미하고, hard는 응답이 있을때까지 계속 재시도 함을 의미한다.

첫 번째 설치시도가 실패시 수행할 작업방법(default : fg)

설치가 실패하였을 때 재시도 회수 (default : 1000)

n 바이트의 읽기 버퍼 크기를 사용한다.

n 바이트의 쓰기 버퍼 크기를 사용한다.

NFS 타임 아웃 간격을 n/10초로 지정한다.

NFS 전송 각각을 최대 n번 재시도 한다.


7. Automounter

소프트웨어로 사용자가 Server에서 SHARE된 디렉토리 안으로 이동할 때 자동으로 마운트되고 일정기간(5분 정도) 사용하지 않으면 그 디렉토리를 언마운트 시켜주는 시스템 서비스이다.

NFS를 통해 원격으로 설치된 파일시스템들은 각 시스템의 /etc/vfstab에 수록된다.
그런 디스크와 파일 시스템의 수가 증가하면 모든 호스트의 파일 시스템 목록을
관리하기가 어렵기 때문에 문제가 발생한다.

또 NFS가 여러 곳에 설치되면 기계의 의존성이 증가한다.
과부하로 Server의 성능이 저하되면, 그곳으로부터
파일시스템의 설치하고 있는 모든 호스트의 성능이 떨어진다.

정전과 같은 사고로부터 복구 하는데에는 심각한 문제가 있다.
모든 호스트가 일시에 부팅하려고 하면,
서로 다른 호스트가 가지고 있는 파일 시스템을
기다리기 때문에 데드록이 발생하거나 오랜 시간 동안 지연될 수 있다.

AUTOMOUNT는 NFS 클라이언트상의 어떤 사용자 프로그램이 Automounter에 의해서
Control되는 Remote 파일이나 디렉토리의 Access를 필요로 할 때,

Local Automounter Daemon (/usr/sbin/automount)은 Mount될 파일 자원에
대한 파일 Handle을 얻기 위해 Server의 Mount Daemon(/usr/lib/nfs/mountd)을 접촉한다.

그 때, Local Mount Process는 파일 Handle을 Mount된 자원의 다른 정보와 함께
/etc/mnttab에 추가한다. Mount가 완료된 후, Local Kernel은 파일 자원을
Access할 때마다 이 파일 handle을 사용한다.

  • Automount Script

    /etc/auto_master

    mount-point map-name [ options ]

    ; mount-point : mount point의 full path name 또는 partial path name

    ; map-name : direct 또는 indirect map의 name

    ; options : gener3l option

    Master map 또는 Direct map의 내용이 변경되면, 기존 automount daemon을 kill하고 다시 시작해야 한다.

# /etc/init.d/nfs.client stop | start

# more /etc/auto_master

/net -hosts -nosuid

/- /etc/auto_direct ; DIRECT MAP

/home /etc/auto_home ; INDIRECT MAP


/net -hosts -nosuid

; hosts database(/etc/inet/hosts)에 있는 각 host가 share시킨 resource를

/net/host 디렉토리 밑에서 이용 가능하게 한다.

; /etc/inet/hosts내에 "mars"라는 host가 등록되어 있고, 어떤 사용자가 다음과 같이 #cd /net/mars 라고 type하면, "mars"가 share시킨 파일 시스템은 /net/mars아래로 mount된다.

/- /etc/auto_direct ; DIRECT MAP

; /- 는 mount point의 full path name을 direct map에 정의하였음을 Automounter에게 말해 준다.

# cat /etc/auto_direct

key [ options ] location(server path)

/usr/frame -ro,soft mars:/export/unbundled

/usr/share/man -ro,soft earth:/usr/share/man,saturn:/usr/share/man


/home /etc/auto_home ; INDIRECT MAP

; /etc/auto_home에 list된 모든 mount point는 /home 아래로 mount된다.

# cat /etc/auto_home

key [ options ] location(server path)

lister -ro mars:/export/home/lister

kryten reddwarf:/export/home/kryten

** Mount point는 /home/lister, /home/kryten

Client의 각 사용자의 home 디렉토리를 Server에 위치시키는 예

# vi /etc/auto_home ; file 수정

* mars:/export/home/&

; * (wildcard character) : 모든 key 값 (client의 모든 user)

; & (substitution character) : 현재의 key값을 &위치에 대치

; Client의 /home/username은 Server의 /export/home/username을 Mount

; 네트워크상의 각 사용자가 어? host에서 Login해도 Home 디렉토리는 동일 Hard disk의 위치로 Login하기 위해서는 각 Host는 동일 auto_home Map 을 갖고 있어야 하고 각 Host의 /etc/passwd home 디렉토리가 같아야 한다.

반응형

'OS > LINUX' 카테고리의 다른 글

[펌] NFS설정하기 (Linux -&gt; HPUX)  (0) 2005.02.15
[펌] 리눅스 표준 디렉토리 구조  (0) 2004.11.24
[펌] sar 이용하여 시스템 모니터링하기  (0) 2004.09.20
[펌] sar (system activity reporter)  (0) 2004.09.20
VI Editor  (1) 2004.06.02
Posted by [PineTree]