티스토리 뷰

코니79 IT 정보

NFS 서비스 서버 구축

코니79 코니와함께 2018.01.19 10:38

NFS 서버 구축 

1) NFS 서버     

 NFS는 Network File System의 약어로 썬마이크로 시스템즈에서 개발한 네트웍상에서 파일시스템을 공유하도록 설계된 파일시스템의 한종류이다. 다른 호스트에 있는 파일시스템의 일부를 자신의 디렉토리인것처럼 사용할수 있도록 해주는 것이 NFS(Network File System)이다. 즉 네트웍상에 디스크를 한서버에 집중관리하고 나머지 시스템들은 그것을 공유하여 사용할 수 있게 해주는 것이다. 하지만 보안상의 문제로 인해 NFS서버의 사용을 점점 제한해 가는 추세이다.  NFS설정은 파일시스템을 share하는 서버의 설정과 서버의 파일시스템을 마운트해가는 클라이언트 설정으로 나누어 볼수 있다.


레드햇 기반의 리눅스 배포판을 사용하는 경우 NFS서버가 이미 설치되어 있다.

# rpm --qa | grep nfs 

nfs-util-0.3.1-13hl


설치되어 있지 않은경우 http://ftp.kreonet.re.kr/pub/Linux/redhat/ 에서 

nfs-utils-version.i386.rpm을 다운 받아서 설치한다.# rpm ?Uvh nfs-utils-version.i386.rpm 


NFS 서비스 데몬 프로세스들


1.    rpc.mountd    :NFS 클라이언트가 마운트를 요청하면 이 데몬프로세스가 /etc/export 파일설정에 따라 마운트 요청을 처리한다.


2.    rpc.nfsd      :  rpc.mountd 에 의해 마운트된 디렉토리에 대해 읽고,쓰는 작업들을 처리해주는 데몬프로세스이다.


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


4.    rpc.lockd          : 파일 잠금을 통해 여러 사용자가 한 파일을 수정하는것을 방지한다.


5.    rpc.statd          : rpc.lockd와 함께 사용되며 파일 잠금의 해제와 복구를 담당한다. 

 

/etc/exports 파일 설정예제 


share-directory   client1(options,,,) client2(options,,,)


share-directory  : 공유할 디렉토리명


client1          : 공유 디렉토리에 접근할수 있도록 허용된 호스트들


options          : 접근 권한설정


ro : 클라이언트는 공유 디렉토리에 대해 읽기만 가능하다,


rw : 클라이언트는 공유 디렉토리에 대해 읽기/쓰기가 가능하다.


no_root_squash : 클라이언트의 root는 서버의 root와 같은 권한을 가진다.


No_subtree_check  : 공유된 디렉토리내에 있는 서브 디렉토리들을 공유에서 제외 시키는 경우 설정 


[root@connie79 /]# cat /etc/exports

/home/user01      *.gcc.go.kr(ro)     

/export/ftp/pub   192.168.1.1/255.255.255.0(ro)

/                 banana(rw),kiwi(rw,no_root_squash)

 


NFS 서버 데몬 구동

# /etc/init.d/portmap start


# /etc/init.d/nfs start

# exportfs -v

현재 커널에서 알고 있는 익스포트 리스트를 출력한다 


# exportfs -ar


/etc/export 파일이 커널에 적용되도록 한다.


 


# nfsstat

NFS 상태 정보를 출력한다.

 

2) NFS 클라이언트 설정


 서버에서  공유하도록 설정되어 있는 디렉토리를 자신의 디렉토리에 마운트 한다. 마운트는 root가 직접 작업할 수도 있고 시스템 부팅시 

 자동으로 마운트 하도록 설정할 수도 있다.

NFS 클라이언트 데몬은 nfsd이다.


# /etc/init.d/nfslock start 


수동으로 서버의 파일시스템을 마운트 하는 명령


[root@connie79 /]# mount -t nfs NFS-서버:/export/ftp/pub /usr/local/pub


 


 마운트 실행시 사용할수 있는 옵션들


 -o timeo=10    : NFS 서버와 연결이 끊어진 경우 timeo에서 지정한시간(1/10초단위) 기다렸다가 경고 메시지를 발생


 -o rsize=1024 wsize=1024  : 읽고/쓰기 버퍼의 크기를 설정한다.(1024KB=1M)


 -o soft       :  remote mount를 실행할 때 성공하지 못하면 timeo 까지만 retry 후 에러 메시지를 발생하고 종료


 -o hard       :  remote mount가 성공할 때 까지 무한시 재시도한다. (디폴트값이다)


 -o bg         :  첫번째 마운트 시도가 실패인경우 백그라운드로 계속 마운트를 재시도한다. 


시스템 부팅시 자동으로 서버의 파일시스템을 마운트하도록 설정한다.


[root@connie79 /]# cat /etc/fstab


NFS-서버:/export/ftp/pub /usr/local/pub nfs defaults



방화벽 뒤에 NFS가 있을때 세팅 방법입니다.


NFS를 건성으로 봤는데 상당히 유용하네요.



1. 아래 내용으로 파일 생성 "/etc/sysconfig/nfs"


STATD_PORT=4001

LOCKD_TCPPORT=4002

LOCKD_UDPPORT=4002

MOUNTD_PORT=4003


2. "/etc/services" 수정 


rquotad 4004/tcp # rpc.rquotad tcp port

rquotad 4004/udp # rpc.rquotad udp port


3. nfs 재구동 


/etc/init.d/nfs restart

/etc/init.d/nfslock restart


4. 포트정보 확인 /usr/sbin/rpcinfo -p 


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 4002 nlockmgr

100021 3 udp 4002 nlockmgr

100021 4 udp 4002 nlockmgr

100021 1 tcp 4002 nlockmgr

100021 3 tcp 4002 nlockmgr

100021 4 tcp 4002 nlockmgr

100005 1 udp 4003 mountd

100005 1 tcp 4003 mountd

100005 2 udp 4003 mountd

100005 2 tcp 4003 mountd

100005 3 udp 4003 mountd

100005 3 tcp 4003 mountd

100024 1 udp 4000 status

100024 1 tcp 4000 status


5. iptables에서 포트 열기 

4000~4004번까지 tcp,udp 다 열면 간단합니다.


111:tcp, 111:udp -> portmapper

2049:tcp, 2049:udp -> nfs 

4001:tcp, 4001:udp 

4002:tcp, 4002:udp,

4003:tcp, 4003:udp, 

4004:tcp, 4004:udp

댓글
댓글쓰기 폼
광고위치
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
60,985
Today
50
Yesterday
177
링크
«   2018/08   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함