Sentio ergo sum

ChanYi.egloos.com

☞ Guest



AIX의 NFS 발생가능 문제와 방안 IT 일반

출처 : IBM의 Hints and Tips 문서

 ◎ Overview

1. NFS 서비스에 대한 이해
2. NFS 사용상의 문제와 해결방안

 

 

NFS는 Network File System으로 네트워크상에서 파일 시스템을 공유하도록 설계된 파일시스템의 한 종류입니다. 네트웍상에 디스크를 한 서버에서 집중 관리 하고 나머지 시스템들은 그것을 공유하여 사용할 수 있게 함으로써 다른 호스트에 있는 파일 시스템의 일부를 자신의 디렉토리인 것 처럼 사용할 수 있습니다. NFS 사용상 발생하는 문제들을 알아보기 전에 NFS 서비스에 필요한 파일과 데몬에 대해서 알아보도록 하겠습니다.

 

NFS 서비스 데몬은 호스트가 서버인지 클라이언트 인지에 따라 달라집니다.

 

NFS 서버에서는 portmap, nfsd, rpc.mountd, rpc.lockd, rpc.statd가 NFS 클라이언트에는 portmap, biod,rpc.lockd, rpc.statd 데몬이 각각 필요합니다. 각 데몬들의 역할은 아래와 같습니다.

 

데몬의 종류설명
   Portmap
  포트요청이 있을 때 새로운 포트를 할당해주고 맵핑시켜주는 역할을 합니다.
   Nfsd
  rpc.mountd 에 의해 마운트된 디렉토리에 대해 읽고,쓰는 작업들을 처리해 줍니다.
   rpc.mountd
  클라이언트가 mount 요청시 /etc/exports 파일 설정에 따라 mount 요청을 처리합니다.
   Biod
  NFS 서버에 읽고, 쓰는 작업 요청을 하게됩니다.
   rpc.lockd
  파일 lock을 통해 여러 사용자가 한 파일을 수정하는것을 방지합니다.
   rpc.statd
  lockd와 함께 사용되며 파일 잠금의 해제와 복구하는 역할을 합니다.

 

NFS 구성에 관련된 파일은 아래와 같습니다.

 

파일의 종류설명
   /etc/exports
  서버가 클라이언트에 export한 모든 디렉토리 정보를 가지고 있습니다
   /etc/xtab
  /etc/exports 파일과 유사한 형식으로 현재 export된 디렉토리를 나열합니다. 이는 exportfs
  명령으로 자동 갱신되며 편집하실 수 없습니다
   /etc/rmtab
  rpc.mountd가 mount 요청을 받았을 때 이 파일에 그 클라이언트 호스트명과 그 디렉토리
  정보를 남기게 되며 unmount시 까지 가지고 있습니다



NFS 구성에 관련해서는 이미 다들 잘 아시고 사용하고 계시리라 생각이 되기 때문에 NFS 구성에 대한 내용은 “AIX 5L Communication”을 참고하시고 여기서는 NFS를 사용할 때 여러분이 흔히 접하시는 문제와 그에 대한 해결방법에 대해 알아보도록 하겠습니다.

1. NFS 서버 문제

nfs_server: bad sendreply

문제 : 네트워크에 전송 버퍼가 충분하지 않은 경우 발생합니다.
해결 : smitty commodev를 사용하여 해당 어댑터 유형을 선택하고 전송 버퍼 수를 늘려주시면 됩니다.



2. mount시 발생할 수 있는 문제

mount: . . . not found in /etc/filesystems
y mounted

 

문제 : 지정한 파일 시스템 또는 디렉토리 이름이 일치하지 않는 경우입니다.
해결 : /etc/filesystems 파일에서 파일 시스템 또는 디렉토리 값이 일치하는지를 확인하셔야 합니다.

 

. . . not in hosts database

문제 : 네트워크 상에서 호스트명을 찾을 수 없을 경우입니다.
해결 : NIS 환경이라면 ypbind 데몬의 상태를 DNS 환경에서는 named 데이터 베이스를 확인하시고 그 외의 경우는 /etc/hosts 파일을 점검하시면 됩니다.

mount: . . . server not responding : port mapper failure -RPC timed out

문제 : mount하려는 서버가 활성화되지 않았거나 해당 portmap이 정지되었을 때 발생할 수 있습니다.
해결 : 서버를 재시작 시켜 inetd, portmap 데몬을 활성화 시키셔야합니다. 서버가 활성화 되어 있는 상태에서 rlogin으로 원격 서버에 로그인이 불가한 상태라면 서버 네트워크 연결을 확인하셔야 합니다.



mount: . . . server not responding : program not registered

문제 : 이는 portmap으로 mount 명령은 받았지만 rpc.mountd 데몬이 등록되지 않은 상태입니다.
해결 : rpc.mountd 데몬의 상태를 확인하여 활성화 시켜주시면 됩니다.


mount: access denied

문제 : mount하려고 하는 파일 시스템이 export 리스트에 없는 경우입니다.
해결 : # showmount ?e hostname 으로 서버가 export 한 파일 시스템의 리스트를 보고 없는 경우, 서버에서 /etc/exports 파일에 파일 시스템 항목이 올바른지 확인하시면 됩니다. 만약 /etc/exports 파일에는 있지만 showmount 명령에 출력되지 않는 파일 시스템이 있다면 mountd 데몬의 이상으로 보실수도 있습니다. 즉 mountd 데몬이 파일에 있는 해당 구문을 분석할 수 없거나 디렉토리를 찾을 수 없다면 /etc/exports 파일이 올바른지를 재확인하시기 바랍니다.


mount: . . . Permission denied

문제 : 이 메시지는 서버에 대한 일부 인증에 실패했음을 나타냅니다.
해결 : 현재 사용자가 export 리스트에 있는지를 서버의 /etc/exports 파일을 확인하시기 바랍니다.


mount: . . . You are not allowed


문제 : mount 명령은 해당 시스템에 있는 모든 사용자의 파일 시스템에 영향을 주므로 시스템에서 이 명령을 실행하려면 시스템 그룹의 멤버이거나 루트 권한이 있어야 합니다.
해결 : NFS 마운트 및 마운트 해제는 시스템 그룹의 멤버 또는 루트 사용자에게만 허용됩니다.

 

 

3. NFS에 대한 access 속도 문제

 

문제 : 원격 파일에 대한 access 속도가 비정상적으로 느린 경우입니다.
해결 : 먼저 nfsstat 명령으로 누락된 패킷이 있는지를 판별하시고 재전송 비율이 5% 이상이라면 네트워크 상태를 확인하셔야 합니다. 만약 재전송의 횟수가 높은 경우는 통신 어댑터의 전송 대기행렬 매개변수를 변경하여 줄일 수 있습니다. NFS 서버에 권장되는 값은 이더넷의 경우 MTU 1500, 전송대기 행렬값은 40입니다. 이 경우 네트워크의 모든 노드들은 동일한 MTU 값을 사용하여야 한다는 점을 유의하셔야 합니다.

 
 

4. 프로그램 정지 수정 문제

 

NFS server hostname not responding, still trying


또는


 

Connection timed out


문제 : 파일 관련 작업 수행 시 프로그램이 정지하는 경우 즉 NFS 서버가 정지 되었을 수 있습니다.
해결 : 먼저 네트워크의 연결상태를 점검하고 클라이언트 쪽의 inetd, portmap 및 biod 데몬이 실행 중인지를 확인한 후 mount 하는 파일 시스템에 대한 마운트 위치가 유효한지를 확인하셔야 합니다.
그런다음 클라이언트에서 다음을 실행하여 서버가 활성화되어 실행중인지를 확인하시고 아래와 같은 결과가 나오지 않는다면 서버의 inetd 데몬의 상태를 확인하셔야 합니다.

# /usr/bin/rpcinfo -p server_name
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 1025 mountd
100001 1 udp 1030 rstatd
100001 2 udp 1030 rstatd
100001 3 udp 1030 rstatd
100002 1 udp 1036 rusersd
100002 2 udp 1036 rusersd
100008 1 udp 1040 walld
100012 1 udp 1043 sprayd
100005 1 tcp 694 mountd
100003 2 udp 2049 nfs
100024 1 udp 713 status
100024 1 tcp 715 status
100021 1 tcp 716 nlockmgr
100021 1 udp 718 nlockmgr
100021 3 tcp 721 nlockmgr
100021 3 udp 723 nlockmgr
100020 1 udp 726 llockmgr
100020 1 tcp 728 llockmgr
100021 2 tcp 731 nlockmg


반면 위의 결과가 나타나고 문제 해결이 되지 않는다면 클라이언트에서 서버쪽의 mountd, portmap, nfsd 데몬이 실행 중인지를 아래와 같이 확인합니다.

 

# /usr/bin/rpcinfo _u server_name mount
# /usr/bin/rpcinfo _u server_name portmap
# /usr/bin/rpcinfo _u server_name nfs

 

그러면 아래와 같은 응답을 합니다.

program 100005 version 1 ready and waiting
program 100000 version 2 ready and waiting
program 100003 version 2 ready and waiting

 

위와 같지 않다면 서버의 NFS 데몬들의 상태를 확인하시고 서버의 /etc/exports 파일에 클라이언트가 mount하려는 파일 시스템이 있는지 확인 하시면 됩니다.


5. 네트워크 잠금 관리자 문제 (rpc.lockd)

 

clnttcp_create: RPC : Remote System error - Connection refused
rpc.statd:cannot talk to statd at {server}


문제 : 시스템이 재시작 되거나 rpc.lockd 및 rpc.statd 데몬이 정지되었다가 재시작되는 경우 발생합니다. Lockd의 무결성을 위해 rpc.statd 데몬이 /etc/sm.bak에 있는 시스템 항목을 refresh하게 되는데 이에 문제가 있을 때 rpc.statd 데몬이 해당하는 시스템에 복구할 내용이 있다는 것을 알립니다.

해결 : 기본적으로 rpc.statd와 rpc.lockd가 활성화 상태인지를 확인하시고 비활성 상태라면 활성화 시켜주시기 바랍니다. 이 경우 꼭 rpc.statd를 먼저 시작시켜주셔야 합니다. 하지만 이미 활성화 된 상태였다면 rpc.statd 및 rpc.lockd 데몬을 정지시키고 클라이언트의 /etc/sm.bak 파일에서 목표 시스템 항목을 제거해 주시고( # rm /etc/sm.bak/TargetMachine) 데몬을 재시작 하시면 됩니다.

만약 이후에도 지속적인 Error Message를 보신다면 ping 명령을 사용하여 클라이언트와 서버가 서로를 인식할 수 있는지를 확인하고 /etc/hosts 파일의 호스트 이름이 서버와 클라이언트가 정확히 인식을 하는지를 확인하고 두 데몬을 시작시키셔야 합니다.

 

여기까지도 어려움이 있다면 rpc.lockd 데몬 시작시 아래와 같이 _dl 플래그를 주시면 lockd 데몬의 진단 message가 syslog에 제공되게 됩니다. 이를 바탕으로 더 깊은 분석을 필요로 합니다.
# /usr/sbin/rpc.lockd ?dl


 

지금까지 우리가 NFS 를 사용하면서 겪을 수 있는 여러가지 경우를 알아봤습니다. 실제로 사용할 때는 더 많은 사례를 더욱 복잡하게 접할 수 있지만 기본적으로 위의 경우를 바탕으로 문제 해결을 해 나가신다면 충분히 많은 도움이 될것으로 생각이 됩니다. 그 이상의 문제해결에는 iptrace등을 통해 문제해결을 도울 수도 있습니다.

덧글

  • 초보AIX 2009/04/03 05:48 # 삭제 답글

    좋은정보 감사합니다.
댓글 입력 영역