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 에러 표시