본문 바로가기

IT/소프트웨어 설치

NFS

---------------------------------------------------------------------- 
1.  NFS서버의 설정 (데몬)
----------------------------------------------------------------------
(1) 설명: 
   NFS는 rpc.mountd와 rpc.nfsd 두 데몬을 가지고 있다. 
   참고로 /etc/rc.d/init.d/nfs 스트립트를 실행하면 이 두 데몬을 실행시킨다. 
   
(2) 관련데몬: NFS를 사용하기 위해서는 다음과 같은 데몬을 실행시켜야 한다. 
   ① netfs 서비스 실행
      삼바, NFS, NCP등을 마운트하거나 언마운트해주는 데몬으로 NFS 서버데몬을 띄우기 전에 미리 실행시켜야 한다. 
     
   ② nfs 서비스 실행
      NFS서비스를 해주는 데몬이다. 
      참고로 이 데몬을 실행시키려면 먼저 /etc/exports 파일을 설정해야 한다. 
     
   ③ portmap 서비스 실행
      RPC(Remote Procedure Call)연결에 관여하는 데몬으로 NFS, NIS을 사용할 때 필요함으로 실행시켜야 한다. 

   ④ nfslock 서비스 실행
      파일잠금을 제공하는데 이것은 동시에 여러 사람들이 동일한 파일을 수정하는 것을 막는다. 

   ⑤ rpc.mountd
      외부의 요청에 반응하는 NFS 마운트 프로토콜이다. 
      클라이언트들이 서버를 이용할 수 있도록 디렉토리를 공유해주는 역할을 한다. 
      NFS는 접속해제 방식으로 웹서버처럼 접속요청이 있을 때만 연결이 이루어진다. 
   
   ⑥ rpc.nfsd
      서버측에서 rpc.mountd에 의해 마운트되면 클라이언트는 rpc.nfsd로 서버에 요구를 보내게 된다. 
      이 요구를 처리하는 주 데몬이다. 
   
   ⑦ rpc.lockd
      파일잠금을 제공하는데 이것은 동시에 여러 사람들이 동일한 파일을 수정 하는 것을 막는다. 

   ⑨ rpc.statd
      rpc.lockd와 함께 작동하면 NFS서버가 비정상적으로 종료되었거나 리부팅했을 경우 복구하는 역할을 한다. 
              
   ⑩ rpc.rquotad
      원격 쿼터 서버로서 NFS서버의 파일 시스템을 마운트한 로컬 유저의 쿼터에 넘겨준다. 

---------------------------------------------------------------------- 
2.  NFS서버의 exports 설정
----------------------------------------------------------------------
(1) 관련파일 : /etc/exports 
    ① 개요: 파일에 마운트를 허가할 디렉토리와 마운트를 허가할 호스트 목록을 설정한다. 
    ② /etc/exports에서 사용가능한 옵션들 
       가. root_squash : 클라이언트에서 루트를 서버상에 nobody사용자로 매핑
       나. no_root_squash : 서버와 클라이언트 모두 같은 루트(root)를 사용한다. 
       다. ro : 파일 시스템을 읽기 전용(read only)로 마운트
       라. rw : 파일 시스템을 읽고 쓸수 있도록 (read write) 마운트 
       마. insecure : 인증되지 않은 접근도 가능
       바. link_relative : 심볼릭 링크를 상대 심볼릭 링크로 바꿀 때 사용 
       사. noaccess : 지정된 디렉토리에는 접근을 금지한다. 


(2) /etc/exports파일의 예 
   ① /home/ftp/pub  *.sample.com(ro) 
      위 디렉토리를 sample.com도메인을 사용하는 모든 사용자가 읽는 것을 허용한다. 

   ② / master(rw) trusty(rw,no_root_squash) 
      위 디렉토리를 master, trusty호스트가 읽기/쓰기를 허용한다. 

   ③ /projects proj*.local.domain(rw) 
     도메인이름이 local.domain이고 호스트이름이 proj로 시작하는 호스트에 대해서 
     /projects라는 디렉토리로 읽기/쓰기를 허용

   ④ /data 192.168.0.0/255.255.255.0(ro) 
      네트워크주소가 192.168.0 대역에 속한 모든 호스트에 대해서 data디렉토리를 읽기만 허용
   
   ⑤ /work 192.168.0.2(rw) 
      위 디렉토리를 192.168.0.2 호스트만 read and write권한으로 설정

   ⑥ /pub *(ro, insecure, root_squash) 
      위 디렉토리에 읽기전용으로 마운트할 수 있고, 
      인증없이 마운트가 가능하며 마운트하는 모든 컴퓨터의 루트를 서버에서 nobody로 접근할 수 있게한다. 
   
   ⑦ /pub/private *.social.com(noaccess) 
       위 디렉토리는 social.com에 해당하는 시스템은 접근할 수 없다. 


(3) 오류 메시지 체크
[root@ns1 ~]$ exportfs -ra 

----------------------------------------------------------------------
3. NFS 클라이언트에서 사용하기 
----------------------------------------------------------------------
(1) 마운트형식 
   ① 명령행에서 마운트하기 
      [root@ns1 ~]# mount -t nfs NFS서버:마운트디렉터리 마운트포인트 
   
   ② /etc/fstab에 정의하여 부팅시마다 사용하기 
      NFS서버:/마운트디렉터리   마운트포인트   nfs   options 0 0 

(2) 사용예 
   ① mount -t nfs nfs.linux.co.kr:/usr/local /usr/local 
      nfs.linux.co.kr의 /usr/local디렉토리를 자신의 /usr/local디렉토리에 nfs파일시스템 타입으로 마운트한다. 

   ② mount -t nfs 203.247.xxx.100:/data /pds 
      => 203.247.xxx.100의 /data라는 디렉토리를 현재 시스템의 /pds라는 디렉토리로 마운트한다. 

   ③ /etc/fstab을 이용한 nfs마운트 설정예 
      nfs.linux.co.kr:/usr/local   /usr/local   nfs   timeo=15,intr   0 0 
      => nfs.linux.co.kr의 /usr/local디렉토리를 자신의 /usr/local디렉토리에 nfs파일시스템으로 마운트한다. 
         타임아웃시간을 1.5초로 하고, 파일시스템을 인터럽트할 수 있는 옵션을 설정하였다. 

      (참고) /etc/fstab에 사용되는 NFS마운트관련옵션 
       가. timeo=n 
           NFS 서버와 연결이 끊어진 경우 timeo에서 지정한 시간(1/10초 단위)

       나. intr 
           주 타임아웃이 발생되었을 때 신호를 보내 NFS호출을 인터럽트한다. 

       다. rsize=n 
           읽고/쓰기 버퍼의 크기를 설정한다. 기본값은 1024바이트 

       라. wsize=n 
           NFS서버에 쓰기할 때 사용하는 바이트 수지정. 기본값은 1024바이트 

       마. retrans=n 
           주타임아웃을 발생시키는 부타임아웃을 재전송 회수 기본값은 3번의 타임아웃 

       바. port=n 
           NFS서버와 연결할 수 있는 포트번호 지정 

       사. fg 
           첫번째 NFS마운트 시도에서 타임아웃이 발생되면 즉시 중단함. 기본값 

       아. hard 
           remote mount 가 성공할 때 까지 재시도함 (default 값)

       자. soft 
           remote mount를 실행할 때 성공하지 못하면 timeout 까지만 재시도후 에러 메세지 발생 종료

       차. bg
           첫번째 마운트 시도가 실패일 경우 백그라운드로 계속 마운트를 시도함

----------------------------------------------------------------------
4. 관련명령어 
----------------------------------------------------------------------
(1) exportfs 
    ① 설명: NFS에서 익스포트된 리스트를 보여준다. 
    ② 사용법 
       exportfs [option] 
    ③ 옵션 
        -v : 익스포트된 리스트를 자세히 보여준다. 
        -r : 익스포트된 내역을 다시 읽어들인다. 
    ④ 사용예 
       가. [root@ns1 ]# exportfs /data           192.168.0.3/255.255.255.0 
       나. [root@ns1 ]# exportfs -v 
           /data           192.168.0.3/255.255.255.0(rw,async,wdelay,root_squash) 
       다. [root@ns1 ]# exportfs -ar 
           => 현재 설정된 내역이나 변경된 내역을 다시 읽어들인다. 

(2) showmount 
    ① 설명: NFS서버의 마운트된 정보를 보여준다. 
    ② 사용법 
        showmount [option] 
    ③ option 
        -a : host:dir 형태로 출력한다. 
        -e : 익스포트리스트를 보여준다. 
    ④ 사용예 
        a. [root@ns1 ]# showmount 
           Hosts on www: 
           192.168.0,3 
        b. [root@ns1 ]# showmount -a 
           All mount points on www: 
           192.168.0.3:/data 
        c. [root@ns1 ]# showmount -e 
           Export list for www: 
           /data 192.168.0.3/255.255.255.0



----------------------------------------------------------------------
5. 실행 포트 고정 
----------------------------------------------------------------------
[root@ns1 ~]# cat /etc/sysconfig/nfs
RPCNFSDCOUNT=8
RPCRQUOTADOPTS="-p 32766"
RPCMOUNTDOPTS="-p 32767"
RPCSTATDOPTS="-p 32768 -o 32769"

[root@ns1 ~]# service nfs restart
[root@ns1 ~]# service nfslock restart

[root@www1 ~]# rpcinfo  -p 확인
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  32806  status
    100024    1   tcp  41807  status
    100011    1   udp   4004  rquotad
    100011    2   udp   4004  rquotad
    100011    1   tcp   4004  rquotad
    100011    2   tcp   4004  rquotad
    100005    1   udp  32767  mountd
    100005    1   tcp  32767  mountd
    100005    2   udp  32767  mountd
    100005    2   tcp  32767  mountd
    100005    3   udp  32767  mountd
    100005    3   tcp  32767  mountd



----------------------------------------------------------------------
6. iptables 사용 시 nfs 설정
----------------------------------------------------------------------
(1) nfs 구동 중인 곳에서의 iptables 설정
/sbin/iptables -A INPUT -p tcp --dport 111  -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 2049 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 32766:32769 -j ACCEPT

/sbin/iptables -A INPUT -p udp --dport 111 -j ACCEPT
/sbin/iptables -A INPUT -p udp --dport 2049 -j ACCEPT


(2) nfs client 서버에서의  iptables 설정
/sbin/iptables -A INPUT -p tcp  --sport 111       -j ACCEPT
/sbin/iptables -A INPUT -p tcp  --sport 2049      -j ACCEPT

/sbin/iptables -A INPUT -p udp  --sport 111       -j ACCEPT
/sbin/iptables -A INPUT -p udp  --sport 2049      -j ACCEPT



----------------------------------------------------------------------
7. 서비스 구동 start/stop 순서 지정
----------------------------------------------------------------------
service netfs start
service portmap start
service nfslock start
service nfs start

service netfs stop
service portmap stop
service nfslock stop
service nfs stop


----------------------------------------------------------------------
8. 마운트 실 예
----------------------------------------------------------------------
(1) nfs 서비스 서버 
[root@ns2 ~]# cat /etc/exports
/home/chanho/html 192.168.0.0/255.255.255.0(rw,no_root_squash)
/home/chanho/game *(rw,async,no_root_squash)

(2) client 서버
mount -t nfs 192.168.0.144:/home/chanho/html /home/chanho/html


출처: http://egloos.zum.com/sjunious/v/5420192

'IT > 소프트웨어 설치' 카테고리의 다른 글

JBoss 6.0 설치하기 - centos6.5  (0) 2015.02.15
nagios 모니터링 툴  (4) 2015.02.09
apache mod_cband 설치 및 설정  (0) 2015.02.09
mrtg 설치 및 모니터링  (0) 2015.01.06
DRBD / HeartBeat / NFS  (2) 2014.12.29