NFS 설정 방법 (자세히)

리눅스/FTP|2015. 1. 16. 11:50
반응형
1. NFS의 정의
1) Network File System의 약자이며, TCP/IP 네트워크로 다른 컴퓨터에 있는 파일 시스템을 마운트시켜 서버의 자료를 공유할 수 있게 해주는 시스템이다.
2) 리눅스 운영체제간에 파일을 공유하기 위해 많이 사용되고 있는 프로토콜로 썬 마이크로 시스템사에서 개발되었다.
3) 삼바는 리눅스-윈도간의 파일및 하드웨어 공유인 반면 리눅스를 비롯한 유닉스 운영체제에서는 삼바보다는 NFS 프로토콜을 이용한다.
4) 서버에 의해 마운트되는 것이 아니라 클라이언트가 파일 시스템을 마운트하여 자신의 파일 시스템처럼 사용한다.
5) 보안에 허점이 있다.
 
2. NFS의 3가지 구성요소
1) TCP/IP 네트워크를 통하여 클라이언트와 서버가 연결이 가능한가
2) 클라이언트는 서버의 파일 시스템을 마운트시킬 수 있는가
3) 서버는 클라이언트에 의해서 마운트될 수 있는가
 
3. NFS 서버 설정
1) NFS 서버는 언제든지 클라이언트가 마운트할 수 있도록 준비되어야 하는데, 이러한 준비과정을 exporting이라 한다. 따라서 exporting 될 서버는 NFS 데몬인 rpc.mountd, rpc.nfsd 두 데몬이 프로세스상에서 작동할 수 있도록 설정해야 한다.
 
4. NFS 주요 데몬
rpc.mountd
* NFS 마운트 데몬이다.
* /etc/exports 설정에 따라 클라이언트의 마운트 요청을 처리한다.
rpc.nfsd
* 클라이언트가 rpc.mountd에 접속이 유지되면, rpc.nfsd를 사용하여 클라이언트의 요구에 따라 처리한다.
* /etc/exports 설정에 따라 클라이언트는 다양한 작업을 할 수 있다.
rpc.lockd
* 파일 잠금과 관련된 데몬으로 현재 사용 중인 파일을 다른 사람이 사용할 수 없게 잠그는 역할을 한다.
rpc.startd
* 파일 잠금과 해제의 역할을 한다.
 
5. Portmap
→ RPC(Remote Procedure Call) ㅍ로그램을 port(tcp/udp)에 매핑시켜주는 데몬이다.
→ NFS를 사용하려면 꼭 필요한 데몬이다.
→ RPC를 사용하는 프로그램(NFS)이 시작되면 portmap은 서비스를 제공할 port를 portmap에 등록시킨다.
→ portmap은 Time Service를 필요로 한다.
   (Time Service는 xinetd 데몬에 포함되어 있다.)
→ portmap이 자신의 운영체제에 설치되어 있는지 확인하자.
 
6. NFS Exporting 설정
1) /etc/exports에서 설정하며, NFS의 주요 설정 파일이다.
2) 사용자가 원하는 설정을 작성해 주어야 한다.
3) /etc/exports 파일에서 사용 가능한 마운트 옵션은 다음과 같다.

옵션                            기능
root_squash                클라이언트에서 루트를 서버상에 nobody 사용자로 매핑한다.
no_root_squash          서버와 클라이언트 모두 같은 root를 사용한다.
ro                                 파일 시스템을 읽기전용으로 마운트 한다.
rw                                파일시스템을 읽기/쓰기 로 마운트 한다.
insecure                       인증되지 않은 액세스도 가능하다.
link_relative                서버에 있는 루트와의 링크를 포함하는 디렉토리에서 얻는 "../" 만큼 링크 앞에 두어 절대 심볼릭 링크를 상대 심볼릭 링크로 바꿀때 사용한다.
 
7. NFS Exporting 설정 예
/home/redhat   one.linux.co.kr  (ro)  two.linux.co.kr  (rw)

/home/redhat  디렉토리를 one.linux.co.kr과 two.linux.co.kr 
두 개의 클라이언트 컴퓨터들이 마운트할 수 있으며, 
one 클라이언트 컴퓨터는 오직 읽기로만 마운트되고, 
two 클라이언트 컴퓨터에는 읽기/쓰기로 마운트 된다.

/usr/local/bin    *.linux.co.kr    (ro)
linux.co.kr 도메인 내에 있는 모든 컴퓨터들이 /usr/local/bin 파일 시스템을 읽기 전용으로 마운트된다.
/pub                                        (ro, insecure,root_square)
/pub 디렉토리에 대해서 읽기로만 마운트할 수 있고, 사용자 인증이 없이 액세스가 가능하며, 이 데렉토리 파일 시스템에 액세스 하는 모든 컴퓨터의 루트를 서버에서 nobody 사용자로 액세스할 수 있게 한다는 의미이다.
 
8. NFS 데몬 실행
1) NFS 서버에서는 NFS Exporting을 준비한 후에 클라이언트가 NFS 파일 시스템을 마운팅할 수 있도록 NFS 데몬을 띄워 주어야 한다.
2) 서버가 부팅시 자동적으로 NFS 데몬이 활성화 되도록 하려면 ntsysv 명령을 실행하여 서비스 항목에서 nfs를 선택하여 부팅하면 된다.
3) 클라이언트에 의해서 마운트될 파티션을 /etc/fstab 파일에 마운트 정보를 삽입시켜 자동적으로 마운트가 될 수 있도록 해준다.
4) 데몬 띄우는 방법은 다음과 같이 스크립트를 실행해 주어야 한다.
             시작          /etc/rd.d/init.d/nfs start
             중지          /etc/rd.d/init.d/nfs stop
             재시작       /etc/rd.d/init.d/nfs restart
 
5) rpcinfo

 NFS가 작동 중일때, RPC 정보를 보여주는 프로그램이다.
 사용법 : rpcinfo [-n portnum] [옵션] host prognum [versnum]
 rpcinfo의 옵션
   -p : 호스트의 포트맵을 보여준다.
   -u : udp를 사용한다.
   -t  : tcp를 사용한다.
   -n : 포트 번호를 지정한다.
   -b : 모든 호스트에 broad cast하여 정보를 받는다.
   -d : 삭제한다.


9. 클라이언트 NFS 마운트
1) 마운트 사용법
mount [-t nfs] 서버:디렉토리 /마운트 위치
예) mount onr.linux.co.kr:/home/linuxone /LinuxOne
 
2) /etc/fstab을 통한 NFS 마운트하기
nfs_server.linux.co.kr:/home/redhat/CD-ROM
/users/redhat/CD-ROM nfs     timeo=15,  initr
 

nfs_server.linux.co.kr:/home/redhat/CD-ROM

nfs_server.linux.co.kr 호스트에 있는 "/home/redhat/CD-ROM" 파일 시스템을 클라이언트 마운트 위치인 "users/redhat/CD-ROM"으로 마운트 하는 것이다.

/users/redhat/CD-ROM nfs

파일 시스템은 nfs임을 나타낸다.

timeo=15

타임아웃 시간은 1.5초로 설정한다.

initr

파일 시스템 작동을 인터럽트 가능하게 하는 것이다.

3) NFS 마운트에서 사용되는 옵션

옵션                        기능
rsize = n                  NFS 서버로부터 읽어 들이는 바이트 수 지정, 기본값은 1024 바이트이다.
wsize = n                NFS 서버에 쓰기할때 사용하는 바이트 수 지정, 기본값은 1024 바이트이다.
timeo = n                 RPC 타임아웃이 발생되고 나서 첫번째 재전송 요구를 보낼때 사용되는 시간으로 기본값은 7*1/10초이다.
retrans = n               주 타임아웃을 발생시키는 부 타임아웃과 재전송 횟수로 기본값은 3번의 타임아웃이다.
port = n                   NFS 서버와 연결할 수 있는 포트 번호를 지정한다.
fg                             첫번째 NFS 마운트 시도에서 타임아웃이 발생되면 즉시 중단하며, 기본값이다.
intr                          주 타임아웃이 발생되었을때 신호를 보내 NFS 호출을 인터럽트한다.
hard                         주 타임아웃이 발생되면 server not responding 출력하고 무한정 재시도 한다.
soft                          주 타임아웃이 발생되면 프로그램에게 I/O 에러를 보고한다.


출처 (ㅡ.ㅡa) | 못난이
원문 http://blog.naver.com/akrthwn/140019046346


반응형

댓글()