탐색 링크 건너뛰기 | |
인쇄 보기 종료 | |
Oracle Solaris 11.1에서 네트워크 파일 시스템 관리 Oracle Solaris 11.1 Information Library (한국어) |
Oracle Solaris 11 릴리스에서 NFS 버전 4 기본 도메인 구성
Solaris 10 릴리스에서 NFS 버전 4 기본 도메인 구성
NFS 버전 4에서 파일 시스템 공유 해제 및 다시 공유
autofs에서 탐색 프로세스를 시작하는 방법(마스터 맵)
autofs에서 클라이언트에 대해 가장 가까운 읽기 전용 파일을 선택하는 방법(여러 위치)
이러한 명령은 NFS 문제를 해결할 때 유용할 수 있습니다.
이 명령을 사용하여 NFS 및 RPC 연결에 대한 통계 정보를 수집할 수 있습니다. 명령의 구문은 다음과 같습니다.
nfsstat [ -cmnrsz ]
클라이언트측 정보를 표시합니다.
NFS 마운트된 각 파일 시스템의 통계를 표시합니다.
NFS 정보가 클라이언트측과 서버측에 모두 표시되도록 지정합니다.
RPC 통계를 표시합니다.
서버측 정보를 표시합니다.
통계가 0으로 설정되도록 지정합니다.
명령줄에서 옵션을 제공하지 않으면 -cnrs 옵션이 사용됩니다.
새로운 소프트웨어 또는 하드웨어를 컴퓨팅 환경에 추가하는 경우 문제 디버깅을 위해 서버측 통계 수집은 중요할 수 있습니다. 이 명령을 최소 매주 한 번 실행하고 수치를 저장하면 이전 성능의 내역을 확인할 수 있습니다.
다음 예제를 참조하십시오.
# nfsstat -s Server rpc: Connection oriented: calls badcalls nullrecv badlen xdrcall dupchecks dupreqs 719949194 0 0 0 0 58478624 33 Connectionless: calls badcalls nullrecv badlen xdrcall dupchecks dupreqs 73753609 0 0 0 0 987278 7254 Server NFSv2: calls badcalls referrals referlinks 25733 0 0 0 Server NFSv3: calls badcalls referrals referlinks 132880073 0 0 0 Server NFSv4: calls badcalls referrals referlinks 488884996 4 0 0 Version 2: (746607 calls) null getattr setattr root lookup readlink read 883 0% 60 0% 45 0% 0 0% 177446 23% 1489 0% 537366 71% wrcache write create remove rename link symlink 0 0% 1105 0% 47 0% 59 0% 28 0% 10 0% 9 0% mkdir rmdir readdir statfs 26 0% 0 0% 27926 3% 108 0% Version 3: (728863853 calls) null getattr setattr lookup access 1365467 0% 496667075 68% 8864191 1% 66510206 9% 19131659 2% readlink read write create mkdir 414705 0% 80123469 10% 18740690 2% 4135195 0% 327059 0% symlink mknod remove rmdir rename 101415 0% 9605 0% 6533288 0% 111810 0% 366267 0% link readdir readdirplus fsstat fsinfo 2572965 0% 519346 0% 2726631 0% 13320640 1% 60161 0% pathconf commit 13181 0% 6248828 0% Version 4: (54871870 calls) null compound 266963 0% 54604907 99% Version 4: (167573814 operations) reserved access close commit 0 0% 2663957 1% 2692328 1% 1166001 0% create delegpurge delegreturn getattr 167423 0% 0 0% 1802019 1% 26405254 15% getfh link lock lockt 11534581 6% 113212 0% 207723 0% 265 0% locku lookup lookupp nverify 230430 0% 11059722 6% 423514 0% 21386866 12% open openattr open_confirm open_downgrade 2835459 1% 4138 0% 18959 0% 3106 0% putfh putpubfh putrootfh read 52606920 31% 0 0% 35776 0% 4325432 2% readdir readlink remove rename 606651 0% 38043 0% 560797 0% 248990 0% renew restorefh savefh secinfo 2330092 1% 8711358 5% 11639329 6% 19384 0% setattr setclientid setclientid_confirm verify 453126 0% 16349 0% 16356 0% 2484 0% write release_lockowner illegal 3247770 1% 0 0% 0 0% Server nfs_acl: Version 2: (694979 calls) null getacl setacl getattr access getxattrdir 0 0% 42358 6% 0 0% 584553 84% 68068 9% 0 0% Version 3: (2465011 calls) null getacl setacl getxattrdir 0 0% 1293312 52% 1131 0% 1170568 47%
위의 목록은 NFS 서버 통계의 예제입니다. 처음 5행은 RPC와 관련되며 나머지 행은 NFS 작업을 보고합니다. 두 통계 세트에서 badcalls 또는 calls의 평균 수치와 주당 통화 수치를 파악하면 문제를 식별하는 데 도움이 될 수 있습니다. badcalls 값은 클라이언트로부터의 잘못된 메시지 수를 보고합니다. 이 값은 네트워크 하드웨어 문제를 나타낼 수 있습니다.
일부 연결은 디스크에서 쓰기 작업을 생성합니다. 이러한 통계 수치가 갑자기 증가하면 문제가 발생했을 수 있으므로 조사해야 합니다. NFS 버전 2 통계의 경우 확인해야 하는 연결은 setattr, write, create , remove, rename, link, symlink, mkdir 및 rmdir입니다. NFS 버전 3 및 버전 4 통계의 경우 확인해야 하는 값은 commit입니다. 한 NFS 서버에서 commit 레벨이 거의 동일한 다른 서버에 비해 높으면 NFS 클라이언트의 메모리가 충분한지 확인하십시오. 클라이언트에 사용 가능한 리소스가 없으면 서버의 commit 작업 수가 증가합니다.
이 명령은 각 프로세스에 대한 스택 추적을 표시합니다. pstack 명령은 프로세스 소유자가 실행하거나 루트에서 실행해야 합니다. pstack을 사용하여 프로세스가 정지된 위치를 확인할 수 있습니다. 이 명령에 사용할 수 있는 옵션은 확인할 프로세스의 PID뿐입니다. proc(1) 매뉴얼 페이지를 참조하십시오.
다음 예제에서는 실행 중인 nfsd 프로세스를 확인합니다.
# /usr/bin/pgrep nfsd 243 # /usr/bin/pstack 243 243: /usr/lib/nfs/nfsd -a 16 ef675c04 poll (24d50, 2, ffffffff) 000115dc ???????? (24000, 132c4, 276d8, 1329c, 276d8, 0) 00011390 main (3, efffff14, 0, 0, ffffffff, 400) + 3c8 00010fb0 _start (0, 0, 0, 0, 0, 0) + 5c
이 예에서는 프로세스에서 새 연결 요청(정상 응답)을 대기하고 있음을 보여줍니다. 요청 후에도 프로세스가 계속 폴링되는 상태로 스택에 표시되면 프로세스가 정지되었을 수 있습니다. 이 문제를 해결하려면 NFS 서비스를 다시 시작하는 방법의 지침을 따르십시오. 문제가 정지된 프로그램 때문에 발생했는지를 완전하게 확인하려면 NFS 문제 해결 절차의 지침을 검토하십시오.
이 명령은 시스템에서 실행 중인 RPC 서비스에 대한 정보를 생성합니다. 이 명령을 사용하여 RPC 서비스를 변경할 수도 있습니다. 이 명령에서는 많은 옵션을 사용할 수 있습니다. rpcinfo(1M) 매뉴얼 페이지를 참조하십시오. 다음은 명령에서 사용할 수 있는 몇 가지 옵션의 간략한 개요입니다.
rpcinfo [ -m | -s ] [ hostname ]
rpcinfo -T transport hostname [ progname ]
rpcinfo [ -t | -u ] [ hostname ] [ progname ]
rpcbind 작업의 통계 표를 표시합니다.
등록된 모든 RPC 프로그램의 간략한 목록을 표시합니다.
특정 전송 또는 프로토콜을 사용하는 서비스에 대한 정보를 표시합니다.
TCP를 사용하는 RPC 프로그램을 프로빙합니다.
UDP를 사용하는 RPC 프로그램을 프로빙합니다.
서비스용 전송 또는 프로토콜을 선택합니다.
필요한 정보를 가져올 서버의 호스트 이름을 선택합니다.
정보를 수집할 RPC 프로그램을 선택합니다.
hostname에 대해 값을 지정하지 않으면 로컬 호스트 이름이 사용됩니다. progname을 RPC 프로그램 번호로 대체할 수는 있지만 대부분의 사용자는 번호가 아닌 이름을 기억하기가 쉽습니다. NFS 버전 3 소프트웨어를 실행하지 않는 시스템에서는 -p 옵션을 -s 옵션 대신 사용할 수 있습니다.
이 명령에 의해 생성되는 데이터에는 다음이 포함됩니다.
RPC 프로그램 번호
특정 프로그램의 버전 번호
사용 중인 전송 프로토콜
RPC 서비스의 이름
RPC 서비스의 소유자
다음 예에서는 서버에서 실행 중인 RPC 서비스에 대한 정보를 수집합니다. 명령에 의해 생성되는 텍스트는 출력을 보다 쉽게 읽을 수 있도록 sort 명령을 통해 필터링됩니다. 예에서는 RPC 서비스가 나열되는 여러 행이 삭제되었습니다.
% rpcinfo -s bee |sort -n program version(s) netid(s) service owner 100000 2,3,4 udp6,tcp6,udp,tcp,ticlts,ticotsord,ticots portmapper superuser 100001 4,3,2 udp6,udp,ticlts rstatd superuser 100003 4,3,2 tcp,udp,tcp6,udp6 nfs 1 100005 3,2,1 ticots,ticotsord,tcp,tcp6,ticlts,udp,udp6 mountd superuser 100007 1,2,3 ticots,ticotsord,ticlts,tcp,udp,tcp6,udp6 ypbind 1 100011 1 udp6,udp,ticlts rquotad superuser 100021 4,3,2,1 tcp,udp,tcp6,udp6 nlockmgr 1 100024 1 ticots,ticotsord,ticlts,tcp,udp,tcp6,udp6 status superuser 100068 5,4,3,2 ticlts - superuser 100083 1 ticotsord - superuser 100133 1 ticots,ticotsord,ticlts,tcp,udp,tcp6,udp6 - superuser 100134 1 ticotsord - superuser 100155 1 ticotsord smserverd superuser 100169 1 ticots,ticotsord,ticlts - superuser 100227 3,2 tcp,udp,tcp6,udp6 nfs_acl 1 100234 1 ticotsord - superuser 390113 1 tcp - superuser 390435 1 tcp - superuser 390436 1 tcp - superuser 1073741824 1 tcp,tcp6 - 1
다음의 두 예에서는 서버에서 특정 전송을 선택하여 특정 RPC 서비스에 대한 정보를 수집하는 방법을 보여줍니다. 첫번째 예제에서는 TCP를 통해 실행되는 mountd 서비스를 확인합니다. 두번째 예제에서는 UDP를 통해 실행되는 NFS 서비스를 확인합니다.
% rpcinfo -t bee mountd program 100005 version 1 ready and waiting program 100005 version 2 ready and waiting program 100005 version 3 ready and waiting % rpcinfo -u bee nfs program 100003 version 2 ready and waiting program 100003 version 3 ready and waiting
이 명령은 네트워크의 패킷을 감시하는 데 사용되는 경우가 많습니다. snoop 명령은 루트로 실행해야 합니다. 이 명령을 사용하면 클라이언트와 서버에서 네트워크 하드웨어가 작동하는지를 효율적으로 확인할 수 있습니다. 다양한 옵션을 사용할 수 있습니다. snoop(1M) 매뉴얼 페이지를 참조하십시오. 명령의 간략한 개요는 다음과 같습니다.
snoop [ -d device ] [ -o filename ] [ host hostname ]
로컬 네트워크 인터페이스를 지정합니다.
캡처된 모든 패킷을 명명된 파일에 저장합니다.
특정 호스트에서만/호스트로만 이동하는 패킷을 표시합니다.
-d device 옵션은 여러 네트워크 인터페이스가 포함된 서버에서 유용합니다. 호스트를 설정하는 것 외에도 여러 표현식을 사용할 수 있습니다. 명령 표현식을 grep와 결합하여 사용하면 유용하게 활용 가능하도록 구체적인 데이터가 생성되는 경우가 많습니다.
문제를 해결할 때는 패킷이 적절한 호스트로 들어가고 적절한 호스트에서 나오는지 확인하십시오. 또한 오류 메시지도 확인하십시오. 파일에 패킷을 저장하면 데이터를 간편하게 검토할 수 있습니다.
이 명령을 사용하여 프로세스가 정지되었는지를 확인할 수 있습니다. truss 명령은 프로세스 소유자가 실행하거나 루트에서 실행해야 합니다. 이 명령에서는 여러 옵션을 사용할 수 있습니다. truss(1) 매뉴얼 페이지를 참조하십시오. 명령의 간략한 구문은 다음과 같습니다.
truss [ -t syscall ] -p pid
추적할 시스템 호출을 선택합니다.
추적할 프로세스의 PID를 나타냅니다.
syscall 옵션은 추적할 시스템의 쉼표로 구분된 목록일 수 있습니다. 또한 !를 포함하여 syscall을 시작하면 나열된 시스템 호출이 추적에서 제외됩니다.
이 예에서는 프로세스가 새 클라이언트로부터의 다른 연결 요청을 대기하고 있음을 보여줍니다.
# /usr/bin/truss -p 243 poll(0x00024D50, 2, -1) (sleeping...)
위의 예제에서는 정상 응답을 보여줍니다. 새 연결 요청을 수행한 후에도 응답이 변경되지 않으면 프로세스가 정지될 수 있습니다. 정지된 프로그램 문제를 해결하려면 NFS 서비스를 다시 시작하는 방법의 지침을 따르십시오. 문제가 정지된 프로그램 때문에 발생했는지를 완전하게 확인하려면 NFS 문제 해결 절차의 지침을 검토하십시오.