티스토리 뷰

WEB2.0/프로그래밍

리눅스 NFS 설정하기

나를찾는아이 2012. 2. 16. 09:00
728x90
반응형
NSF는 네트워크를 통해 서버간에 파일을 공유할 수 있도록 해줍니다.

처음으로 NFS 설정을 해보는데 정말 애를 먹었습니다.

내용 함께 공유하니 저처럼 리눅스 NFS 설정하시는 분들 참고하시길 바래요.

저는 CentOS를 사용하고 있습니다.



서버측 설정

portmap과 NFS를 실행해야 합니다. 그리고 nsflock도 실행해주세요.

설치가 되어있지 않다면 설치해주세요.

CentOS는 기본적으로 설치가 되어있으니 설치과정은 넘어갑니다.


# /etc/init.d/portmap start
portmap (을)를 시작 중: [  OK  ]


# /etc/init.d/nfs start
NFS 서비스를 시작 중:  [  OK  ]
NFS 쿼터를 시작 중: [  OK  ]
NFS 데몬을 시작 중: [  OK  ]
NFS mountd를 시작 중: [  OK  ]


# /etc/init.d/nfslock start




# rpcinfo -p

로 확인하면 아래와 같이 포트번호와 사용중인 목록이 나옵니다.

nfs랑 portmap이 보이면 잘 실행되고 있는것 입니다.

100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100011    1   udp    625  rquotad
100011    2   udp    625  rquotad
100011    1   tcp    628  rquotad
100011    2   tcp    628  rquotad
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100021    1   udp  54868  nlockmgr
100021    3   udp  54868  nlockmgr
100021    4   udp  54868  nlockmgr
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   tcp  36016  nlockmgr
100021    3   tcp  36016  nlockmgr
100021    4   tcp  36016  nlockmgr
100005    1   udp    654  mountd
100005    1   tcp    657  mountd
100005    2   udp    654  mountd
100005    2   tcp    657  mountd
100005    3   udp    654  mountd
100005    3   tcp    657  mountd




마운트할 디렉토리를 설정하기 위해 /etc/exports 파일을 열어 아래의 내용을 추가합니다.


# vi /etc/exports
/home/nfs 192.168.5.123(rw)



/home/nfs 폴더에 대해서 192.168.5.123 아이피에 rw(읽기쓰기)권한을 준다는 설정입니다.

nfs 재실행합니다.


# /etc/init.d/nfs restart
NFS mountd를 종료 중: [  OK  ]
NFS 데몬을 종료 중: [  OK  ]
NFS quota를 종료 중: [  OK  ]
NFS 서비스를 종료 중:  [  OK  ]
NFS 서비스를 시작 중:  [  OK  ]
NFS 쿼터를 시작 중: [  OK  ]
NFS 데몬을 시작 중: [  OK  ]
NFS mountd를 시작 중: [  OK  ]



서버측 설정이 끝났습니다.


NSF 설정을 확인하고자 할때는

# showmount -e

이 명령어로 확인이 가능합니다.



클라이언트측


portmap과 nfs를 실행합니다.



# /etc/init.d/portmap start
portmap (을)를 시작 중: [  OK  ]


# /etc/init.d/nfs start
NFS 서비스를 시작 중:  [  OK  ]
NFS 쿼터를 시작 중: [  OK  ]
NFS 데몬을 시작 중: [  OK  ]
NFS mountd를 시작 중: [  OK  ]

NSF를 시작할때 아래와 같이 에러가 난다면

Starting NFS services:                                     [  OK  ]
Starting NFS mountd:                                       [FAILED]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
                                                           [FAILED]



# service rpcbind start


이걸 먼저 실행한후 시도해보세요.




마운트를 실행합니다
 

# mount -t nfs 192.168.5.123:/home/nfs /home/nfs


192.168.5.123서버의 /home/nfs 폴더를 /home/nfs 폴더에 마운트 하는 명령어 입니다.

명령이 잘 실행되었다면 NFS설정이 완료된 것입니다.



마운트한 폴더를 삭제할때는 먼저 마운트를 해제해주세요.

# umount /home/nfs




서버나 클라이언트 쪽에서 부팅시 자동으로 올라오도록 설정하기 위해서는 아래의 명령어를 실행하면 됩니다.

# chkconfig --level 3 nfs on
# chkconfig --level 3 portmap on





여기까진 어렵지 않은데 방화벽이 있을경우가 설정이 복잡해집니다.

NFS 사용할때 랜덤방식으로 포트번호가 변경되기 때문에 포트를 고정시켜주는 작업이 필요하고

이 고정된 포트에 대해서 방화벽을 해제해주셔야 합니다.

서버측에서 방화벽이 있는 경우 아래의 작업을 추가로 진행해주어야 합니다.


# rpcinfo -p

로 사용중인 포트를 다시 확인해봅시다.

100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100011    1   udp    625  rquotad
100011    2   udp    625  rquotad
100011    1   tcp    628  rquotad
100011    2   tcp    628  rquotad
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100021    1   udp  54868  nlockmgr
100021    3   udp  54868  nlockmgr
100021    4   udp  54868  nlockmgr
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100021    1   tcp  36016  nlockmgr
100021    3   tcp  36016  nlockmgr
100021    4   tcp  36016  nlockmgr
100005    1   udp    654  mountd
100005    1   tcp    657  mountd
100005    2   udp    654  mountd
100005    2   tcp    657  mountd
100005    3   udp    654  mountd
100005    3   tcp    657  mountd



111 포트와 2049번 포트를 제외하고 나머지 포트는 NFS가 실행될때마다 변경되는데요 포트를 고정시켜야 합니다.


# vi /etc/init.d/nfslock

start() {
    if [ ! -f /var/lock/subsys/nfslock ]; then
        # Start daemons.
        if [ "$USERLAND_LOCKD" ]; then
          echo -n $"Starting NFS locking: "
          daemon rpc.lockd -p 4000



/etc/init.d/nfslock을 열어 daemon rpc.lockd -p 4000 로 수정해주세요.


# vi /etc/sysconfig/nfs
LOCKD_TCPPORT=4001
LOCKD_UDPPORT=4001
MOUNTD_PORT=4002


/etc/sysconfig/nfs에서 TCP, UDP, MOUNTD 포트번호를 고정합니다.



# vi /etc/services


# pxc-splr-ft  4003/tcp                   # pxc-splr-ft
# pxc-splr-ft 4003/udp                   # pxc-splr-ft
rquotad         4003/tcp                        # rpc.rquotad tcp port
rquotad         4003/udp                        # rpc.rquotad udp port




/etc/services를 열어 4003번 포트에 대한 내용을 추가해야합니다. 기존 4003번 포트는 주석처리해주세요.

자 이제 수정한 값을 적용하기 위해 NFS를 재실행합니다.


# /etc/rc.d/init.d/nfslock restart
# /etc/rc.d/init.d/nfs restart



포트가 잘 변경되었는지 확인해봅시다.



# rpcinfo -p
100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp    614  status
100024    1   tcp    617  status
100011    1   udp    668  rquotad
100011    2   udp    668  rquotad
100011    1   tcp    671  rquotad
100011    2   tcp    671  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   4001  nlockmgr
100021    3   udp   4001  nlockmgr
100021    4   udp   4001  nlockmgr
100021    1   tcp   4001  nlockmgr
100021    3   tcp   4001  nlockmgr
100021    4   tcp   4001  nlockmgr
100005    1   udp   4002  mountd
100005    1   tcp   4002  mountd
100005    2   udp   4002  mountd
100005    2   tcp   4002  mountd
100005    3   udp   4002  mountd
100005    3   tcp   4002  mountd



4001번 4002번 포트를 잘 사용하고 있네요.

이제 NFS에 사용되는 포트들에 대해서 방화벽을 해제합니다.


# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4000:4004 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 4000:4004 -j ACCEPT



그리고 iptables를 재실행합니다.
 
# /etc/rc.d/init.d/iptables restart




서버측의 hosts.allow 또는 hosts.deny에 클라이언트측 서버에 대한 접근을 허용 또는 막아놓았다면 이에 대한 허용처리도 해주어야 합니다.


# vi /etc/hosts.allow
portmap : 192.168.5.123
mountd : 192.168.5.123





nfs가 실행이 되지 않았거나, 방화벽이 열리지 않았거나, host가 막혀있다면

authentication error
RPC Error: Program not registered.

클라이언트측에서 mount 명령어를 실행할때 이런 종류의 에러메시지를 받을 수 있습니다.

이런 메시지가 나타난다면, 서버측과 클라이언트 측의 nfs 관련 서비스가 잘 실행되고 있는지 확인해주시고,

방화벽이나 특정 ip에 대해서 접근을 막아놓지 않았는지 확인해보세요.

구글링을 통해 보니 이런 오류메시지가 나왔을때

다른 분들의 경험에서는 hosts.allow, hosts.deny파일의 퍼미션이 604이상이 되어야 한다고도 하네요.




※ NFS 참조링크
http://www.yongbok.net/blog/?p=75
http://theeye.pe.kr/entry/%EA%B0%84%EB%8B%A8-%EC%A0%95%EB%A6%AC-%EB%A6%AC%EB%88%85%EC%8A%A4-NFS-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
http://mdoli.com/tatter/entry/Linux-NFS-%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95-2%EB%B0%A9%ED%99%94%EB%B2%BD-%EC%82%AC%EC%9A%A9-%EC%8B%9C



추가(2012.5.15 업데이트됨)


NFS로 공유된 디렉토리는 서버가 부팅될때 자동으로 마운트 되지 않습니다.

자동으로 마운트되도록 하기 위해서는 /etc/fstab 에 마운트 포인트를 추가하고 netfs 데몬을 활성화해야합니다.
(서버측이 아닌 클라이언트측에서 설정합니다.)


1. /etc/fstab 에 마운트 포인트 추가

# cat /etc/fstab


를 입력하면 아래와 유사한  결과를 볼 수 있습니다.


현재 설정된 마운트 포인트들입니다.

바로 여기에 NFS 설정한 마운트 포인트를 추가해주어야 합니다.

각 값의 순서는 다음과 같습니다.


[파일시스템 장치명] [마운트 포인트] [파일시스템 종류] [옵션] [dump관련설정] [파일점검 옵션]


-파일시스템 장치명 : 장치명을 지정
-마운트 포인트 : 장치가 연결된 마운트 지점
-파일시스템 종류 : 파티션이 사용하는 파일시스템 지정
-옵션 : 파일시스템의 속성을 설정하는 옵션
defaults (rw, nouser,auto,exec suid 속성을 모두 가지는 옵션)
auto : 부팅시 자동 마운트
noauto : 부팅시 자동마운트 안함
exec : 실행파일이 실행되는 것을 허용
no exec : 실행파일이 실행되는 것을 허용 안함
suid : setuid, setgid의 사용을 허용하는 옵션
nosuid : setuid, setgid의 사용을 거부
ro (read only) : 읽기 전용
rw (ead write) : 읽고 쓰기 가능
user : 일반 계정 사용자들도 마운트 할 수 있는 옵션
nouser : root만 mount 가능
usrquota : 일반 사용자 quota적용
grpquota : 그룹 quota 적용
 
-dump 관련 설정
0 : 덤프되지 않은 파일시스템
1 : 데이터 백업을 위해 dump가능
 
-파일점검 옵션
0 : 부팅시 fsck를 사용하지 않음
1 : 루트 파일시스템을 의미
2 : 루트 파일시스템 이외의 파일시스템을 의미



/etc/fstab 파일을 열어 맨아래에 아래와 같이 NFS 설정했던 마운트 포인트를 추가로 입력해주시면 됩니다.

192.168.5.123:/home/nfs /home/nfs nfs defaults 0 0



2. netfs 데몬 활성화


netfs 데몬을 활성화 합니다.


# chkconfig --level 35 netfs on



값을 확인해보도록 하지요.

#chkconfig --list | grep netfs


아래의 그림처럼 3번과 5번이 활성 또는 on 이라고 나오면 됩니다.



이렇게 설정이 되면 서버가 부팅될때 NFS 설정한 폴더가 자동으로 마운트 됩니다.

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함