NFS에 관해 혼자서 정리해 봤다….

gundal님의 글…

 

NFS Server/Client 요약

1. NFS Server 구성요소.

1) 설정파일 및 필요한 파일

– /etc/dfs/dfstab : NFS로 공유할 Directory 및 mount 될 option설정
(/etc/init.d/nfs.server 스크립트가 읽어서 이 내용대로 NFS 공유.)
-/etc/init.d/nfs.server : /etc/dfs/dfstab을 참조 /usr/lib/nfs/nfsd를 구동하는 start script
-/etc/dfs/sharetab : 현재 공유설정 해 놓은 file/directory 목록

– /etc/rmtab : 현재 원격으로 mount되어 있는 file/directory 및 client목록
-/etc/dfs/fstypes : mount할 파일시스템의 type을 명시해 놓은 파일(default: nfs)
-/etc/nfs/nfslog.conf : NFS log daemon 설정 파일
구성daemon 및 파일
-/usr/lib/nfs/nfsd : 실제 NFS 서버 데몬. Client의 mount요청을 주시하다가 요청이 발생하면 /etc/dfs/dfstab의 내용에 따라 파일시스템을 공유하도록 mount시켜줌.

– /usr/lib/nfs/mountd : NFS client의 공유(mount)요청에 대해 공유자원의 file handle을 넘겨주는 역할을 하는 데몬.( client에게 공유목록의 i-node 등을 전달.)
-/etc/default/nfslogd : NFS log 데몬.

* /usr/lib/nfs/statd : /etc/init.d/nfs.client script에 의해 구동되며
* /usr/lib/nfs/lockd : 서버와 클라이언트 양쪽모두 구동됨

2. NFS Client 구성요소.
1) 설정파일 및 필요한 파일
-/etc/vfstab : 원격으로 mount할 host:dir_path, mount point, fs type, option을 명시한다.
-/etc/init.d/nfs.client : /etc/vfstab을 참조하여 mountall (NFS resource mount)실행. 이 스크립트가 실행되면 /usr/lib/nfs/statd, /usr/lib/nfs/lockd 가 실행된다.
-/etc/mnttab : 현재 mount된 파일시스템정보를 담고있는 파일(local, remote)
-/etc/dfs/fstypes : mount할 파일시스템의 type을 명시해 놓은 파일(default: nfs)
-/usr/sbin/mount : local 혹은 remote 파일시스템을 mount(/etc/vfstab을 참조.)
2) 구성daemon 및 파일
-/etc/dfs/sharetab : 현재 공유설정 해 놓은 file/directory 목록
-/etc/rmtab : 현재 원격으로 mount되어 있는 file/directory 및 client목록
-/etc/dfs/fstypes : mount할 파일시스템의 type을 명시해 놓은 파일(default: nfs)
-/usr/lib/nfs/statd : 원격으로 mount할 파일시스템의 상태를 감지하는 daemon으로 원격NFS서버에 공유자원에 문제가 생기면 네트워크 연결을 재 시도함.
-/usr/lib/nfs/lockd : NFS서버가 client들에게 공유자원의 사용여부를 통보하는데 이 daemon은 서버가 주는 정보에 의거하여 원격공유자원에 읽기/쓰기를 관리한다.
3. NFS 사용 설명

1) Server side
/etc/dfs/dfstab 파일에 NFS 공유자원을 설정한다.

Ex) # vi /etc/dfs/dfstab

# share [-F fstype] [ -o options] [-d] [pathname] [resource]

# .e.g,

# share -F nfs -o rw=engineering -d “home dirs”‘ /export/home2

share -F nfs /work3/gundal

share -F nfs /work2

share -F nfs /work1

/work3/gundal, /work2, /work1 디렉토리를 원격에서 mount하도록 허용.

option을 지정할 수 있다. ( -o )

root=client : client로 지정된 시스템의 root user는 이 디렉토리에 대해 superuser권한을 갖는다.

rw=acces_list : read/write 옵션으로 access_list에 명시된 client들이 mount가능.

ro=access_list : read only 옵션으로 access_list에 명시된 client들이 mount가능.

access_list 구성 : client들을 구분자 ‘:’를 이용하여 명시한다.

Ex) share -F nfs -o rw=client1:client2:clinet3:… directory

IP주소로 client를 명시할 경우 ‘@’를 앞에 붙인다.

Ex) share -F nfs -o ro=@211.176.132.18:@211.176.132.20:…. directory

도메인으로 명시할 경우 앞에 ‘.’을 붙인다.

Ex) share -F nfs -o ro=.gfs.com:.boxcorea.com:…. Directory

/usr/sbin/share command로 확인해 본다.

# /usr/sbin/share -F nfs [ ?o option_list ] directory

에러 메시지가 없으면 설정에 문제가 없다.

공유가 되어 있는지 확인.

# /usr/sbin/share

– 공유되어 있는 항목을 보여준다.

공유를 제거한 후 /etc/init.d/nfs.server start 실행

# /usr/sbin/unshare directory

# /etc/init.d/nfs.server start

공유 및 서버데몬 확인

# ps ?e | grep nfs

/usr/lib/nfs/statd

/usr/lib/nfs/lockd

/usr/lib/nfs/mountd

/usr/lib/nfs/nfsd ?a 16

위 4개의 daemon이 실행 중이면 서버측 설정 및 작동은 정상임.

2) Client side

(1)서버의 공유자원을 확인.

# /usr/lib/nfs/dfshare [host-name]

-공유되어있는 directory 또는 자원들을 list한다.

(2)/usr/sbin/mount 명령으로 mount 해본다.

# /usr/sbin/mount ?F nfs [ -o option_list ] [host-name:/공유directory ]

– mount 되거나 mount를 기다리고 있으면 일단 정상적인 nfs공유 가능.

(3)booting시 자동으로 NFS mount하도록 하기 위해 /etc/vfstab을 수정
# vi /etc/vfstab

host-name:/directory – mount-point nfs – yes [bg,soft][fg,hard]

※ option 중 [bg|fg],[soft|hard],[intr|nointr]

booting시 첫번째 mount 실패시…

bg :background로 mount 계속 시도

fg : foreground로 mount 계속 시도.(default)

Soft : 에러 메시지를 출력하고 booting process 진행

Hard : timeo(timeout) 에 명시한 시간이 경과할 때까지 계속시도.(default)

intr : keyboard로 mount process를 중단 가능.(default)

nointr : keyboard로 mount process 중단 불가.

timeo=n : 1?10초 단위로 timeout 값을 지정.(default UDP:11, TCP:600)

retry=n : 재시도 횟수지정 (default:10,000)

(4) 수동으로 mount시 # /usr/sbin/mountall -r

-r : vfstab의 설정 중 remote resour만 mount

답글 남기기

Your email address will not be published.