NFS 서비스 정리

발췌 : http://headphone.tistory.com/110

NFS(Network File System)
– sun microsystem 사에서 개발
– 분산처리환경의 RPC를 사용하는 파일 및 자원 공유 시스템
– TCP/IP 네티워크를 통한 서버/ 클라이언트 구조
– UNIX 운영체제간의 파일 공유
– 보안에 취약하므로 주의해서 사용

NFS 관련데몬
portmap : NIS, NFS등 RPC(Remote Procedure Call)연결에 관여하는 데몬
-portmap-version
-구동방법
service portmap start/stop/restart

chkconfig –level 35 portmap on

***nfs를 위해서는 portmap이 먼저 수행되어 있어야만 nfs가 실행되므로 반드시 먼저 portmap을 실행해주자.

# ps aux | grep portmap
rpc       1616  0.0  0.0   1728   560 ?        Ss   13:37   0:00 portmap
root      2474  0.0  0.0   5168   784 pts/1    S+   13:41   0:00 grep portmap

nfs
nfs서비스를 구동하기 위한 데몬
-nfs-utils-version
-구동방법
service nfs start/stop/restart

NFS 서비스는 nfsd, rpc.mounted, rpc.statd, rpc.rockd, rpc.rquotad 데몬들이 구동된다.
NFS 서버 : nfsd, rpc.mountd, rpc.statd, rpc.lockd 데몬이 작업
NFS 클라이언트 : rpc.statd, rockd, rpc.rquotad 데몬이 작업

rpc.nfsd : rpc 요청처리와 서버측에서 rpc.mountd에 의해 마운트되면 클라이언트는 rpc.nfsd로 서버에 요청 처리와 명령 실행등을 포하한 작업을 수행한다.

rpc.mountd : 클라이언트가 마운트를 요청하면 /etc/exports 파일설정에 따라 마운트 요청을 처리한다.

rpc.statd : rpc.rockd와 함께 작동하면 파일잠금 해제와 비정상적으로 종료시 복구를 담당한다.

rpc.lockd : 파일 잠금을 통해 클라이언트에서 여러 사용자가 한 파일을 수정하는 것을 방지한다.

rpc.rquotad : NFS파일 시스템을 마운트한 사용자에게 quota를 처리한다.
 

[root@server14 ~]# rpm -qa | grep nfs
nfs-utils-1.0.8.rc2-4.FC5.2
nfs-utils-lib-1.0.8-3.1
system-config-nfs-1.3.19-1

# rpcinfo -p
   프로그램 버전 원형   포트
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  32770  status
    100024    1   tcp  33957  status

netfs
samba, nfs, ncp등을 마운트 하거나 언마운트 해주는 데몬
-initscripts-version
-구동방법
service netfs start/stop/restart

NFS 서버 설정

/etc/exports
-NFS서버의 주요 설정파일
-rpc.mountd, rpc.nfsd는 이파일에 설정에 따라 구동

형식
[디렉토리] [클라이언트](option)

options
ro : 읽기 전용 모드
rw : 읽기 쓰기 모드
root_squash : 클라이언트의 root를 서버의 nobody 권한으로 설정
no_root_squash : 클라이언트의 root를 서버의 root 권한으로 설정
insecure : 인증되지 않은 엑세스도 가능
sync : 클라이언트가 파일 쓰기 완료후 디스크 동기화

NFS로 공유하고자 하는 폴더 생성
mkdir /nfsdata

service nfs start

환경설정 파일 수정
vi /etc/exports
/nfsdata 10.10.0.0/255.255.0.0(ro,root_squash,sync)    

/nfsdata 192.168.10.7(rw) 192.168.10.8(ro)   ->192.168.10.7은 읽기/쓰기가 가능하게, 192.168.10.8은 읽기전용으로 설정

/nfsdata2 *.naver.com(ro,root_squash)   ->naver.com도메인을 사용하는 모든 호스트에 대해 읽기 전용, nobody 권한으로 접근을 허락하겠다는 설정

/nfsdata3 192.168.10.7(rw)
/nfsdata4/scv 192.168.10.7(noaccess)
-> 서버의 /home 디렉토리 전체를 192.168.10.7에서 nobody권한으로 접근을 허용하지만 /home/scv 디렉토리의 접근은 거부한다.

※ 기타 자세한 옵션은 man exports 명령을 통해 알아볼수 있다.

service nfs restart

내 컴퓨터에 마운트될 디렉토리를 생성한다.
mkdir /client

mount -t nfs 10.10.64.100:/nfsdata /client ->10.10.64.100에 있는 nfs설정 디렉토리에 마운트 한다.

umount /client  -> 마운트 해지

NFS 클라이언트

rpcinfo
rpc 서버의 상태를 출력
사용법
rpcinfo [host] [option]

[root@server14 src]# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  32770  status
    100024    1   tcp  55192  status
    100011    1   udp   1000  rquotad
    100011    2   udp   1000  rquotad
    100011    1   tcp   1003  rquotad
    100011    2   tcp   1003  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   udp  32865  nlockmgr
    100021    3   udp  32865  nlockmgr
    100021    4   udp  32865  nlockmgr
    100021    1   tcp  45056  nlockmgr
    100021    3   tcp  45056  nlockmgr
    100021    4   tcp  45056  nlockmgr
    100005    1   udp   1013  mountd
    100005    1   tcp   1016  mountd
    100005    2   udp   1013  mountd
    100005    2   tcp   1016  mountd
    100005    3   udp   1013  mountd
    100005    3   tcp   1016  mountd

mount
NFS 클라이언트에서 NFS 서버의 자원을 마운트 할때 사용
mount -t nfs [NFS_server:/dir] [NFS_client_dir]

showmount
NFS서버의 마운트된 정보 출력
showmount [host] [option]

exportfs
NFS서ㅓ의 exporting 정보를 출력하거나 설정변경
exportfs [option]

option
-a : 공유를 허가한 모든 디렉토리 의미
-r : 공유를 허가한 디렉토리를 다시 export
-u : 공유 디렉토리를 export 리스트에서 제거
-i : /etc/exports 파일 무시하고 설정
-v : export 정보 출력

/var/lib/nfs/rmtab
NFS서버에 현재 마운트된 사용자 정보 출력
사용법
cat /var/lib/nfs/rmtab

/etc/fstab에 등록

해당 NFS를 부팅할때 불러오고 자동으로 불러오고 싶으면 /etc/fstab에 넣어주면 된다.
vi /etc/fstab
10.10.64.13:/nfsdata /client nfs defaults 0.0
이렇게 설정하면 되는데 계속 nfs계속 연결시도 하는데 일정시간동안만 시도하고 없을경우 시도를 멈추게 하려면
defaults 대신에 timeo=25,intr 해주면 25초간만 확인하고 넘어가면 그냥 부팅된다.

10.10.64.13:/nfsdata /client nfs timeo=25,intr 0.0

/etc/fstab에서 NFS 마운트 옵션
rsize : NFS서버로부터 읽어 들이는 바이트수 지정 기본값 1024byte
wsize : NFS서버에 기록할 때 사용하는 바이트수 기본 지정값 1024byte
timeo : 클라이언트에서 타임아웃이 발생되고 나서, 다시 재전송 요구를 보낼때 시간
retrans : 재정송 횟수 지정
port : NFS서버에 연결시 사용하는 포트번호 지정
fg : NFS서버에 타임아웃이 발생되면 즉각 접속 중지
intr : 인터럽트 허용
hard : 타임아웃 발생시 “server not recording” 에러메시지 표시후 계속 재시도
soft : 타임아웃 발샐시 I/O 에러 표시

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.