showmount-e 출력이 올바르지 않습니다. 역사 마운트client 포함

2980 단어 nfsshowmount-esolaris
질문:
Solaris 10 호스트 사용자가 더 이상 사용하지 않고 서버가 종료되기 전에 NFS 공유 상태를 확인하여 호스트에 접속된 사용자가 없는지 확인합니다."showmount-e"명령을 통해 클라이언트 서버의 연결을 검사하면 대량의 연결 목록이 있음을 발견할 수 있습니다.그러나 사용자에게 확인한 결과 연결이 끊겼다고 합니다.
해결 방법:
=======================================================
Solaris 호스트
/etc/rmtab 파일에는 사용자 연결 상태가 기록됩니다.NFS Client가 비정상적으로 중단되면umount nfs 공유점이 실패하여/etc/rmtab에 부정확한 기록이 남아 있을 수 있습니다.다음 명령을 사용하여 NFS 서비스를 다시 시작하고 기록을 비울 수 있습니다.
svcadm disable svc:/network/nfs/server:default
cat /dev/null > /etc/rmtab
svcadm enable svcs:/network/nfs/server:default
svcs|grep nfs  

=======================================================
Linux 플랫폼에서도 비슷한 문제가 발생할 수 있습니다.
man rpc.mountd(8) says:
The rmtab File ... 
Note, however, that there is little to guarantee that the contents of /var/lib/nfs/rmtab are accurate. 
A client may continue accessing an export even after invoking UMNT. 
If the client reboots without sending a UMNT request, stale entries remain for that client in /var/lib/nfs/rmtab.

다음 명령을 통해 해결할 수 있습니다.
# service nfs stop
# cat /dev/null > /var/lib/nfs/rmtab
# service nfs start

=======================================================
대체 검사:
nfsclient의 의외의 리셋으로 인해'showmount-a'명령의 출력을 신뢰할 수 없습니다.사용자가 연결되지 않았는지 확인하기 위해서 다른 명령을 찾아 검사해야 합니다.NFS 프로토콜은 RPC 메커니즘을 통해 파일을 전송합니다. RPC는 파일 전송 하청 단계에서 TCP/UDP를 사용하여 전송됩니다."netstat-an|grep IP"명령을 통해 네트워크 연결을 검사하고 출력 목록을 검사하며 IP 주소에 사용자 IP가 없는지 확인한 후 서버를 닫습니다.
참조 문서 2:https://blog.csdn.net/wangpeng138375/article/details/8169071Sun의 RPC 서비스인 ONC RPC(Open Network Computing Remote Procedure Call)는 Sun Microsystem사가 개발한 오픈소스 RPC 프레임워크이다.UNIX 시스템용 RPC 사실 표준입니다.ONC RPC는 이미 고성능 기술로 증명되었다.Solaris, AIX, HP UX, Linux 등을 포함한 대부분의 UNIX 플랫폼은 RPC 서비스를 지원합니다.RPC는 사실 C/S의 프로그래밍 모델이기도 하다. 그 작업 과정은 그림2-3과 같다. 대체적으로 다음과 같은 몇 가지 절차를 포함한다. (0) 서버가 시작되고 호스트에 있는 포트 맵퍼(port mapper)에 자신을 등록한다.클라이언트가 시작하고 clnt_를 호출합니다.create, 이 함수는 서버의 임시 포트를 찾기 위해 서버 호스트의 포트 맵에 연결됩니다.clnt_create 함수는 서버와의 TCP 연결도 설정합니다.(1) 클라이언트 스텁(Client stub)이라는 로컬 프로세스를 호출합니다. 스텁은 rpcgen 도구로 생성됩니다.클라이언트에게 클라이언트 프로그램 메모리는 호출하고자 하는 진정한 서버 프로세스처럼 보인다.메모리 루트의 목적은 원격 프로세스에 전달될 매개 변수를 포장하는 것이다. 가능하면 그것들을 특정한 표준 형식으로 변환한 다음에 하나 이상의 네트워크 메시지를 구성하는 것이다.고객이 제공한 파라미터를 하나의 네트워크 메시지로 포장하는 과정을 집결(marshaling)이라고 부른다.클라이언트 프로그램의 각 루틴과 메모리 루트는 일반적으로 RPC가 실행될 때 함수 라이브러리의 함수를 호출합니다.(2) 이러한 네트워크 메시지는 클라이언트 프로그램에 의해 원격 시스템에 루트로 전송된다.로컬 코어에 빠지는 시스템 호출 (예: write나sendto) 이 필요합니다.(3) 이러한 메시지는 일반적으로 TCP 또는 UDP 프로토콜을 사용하여 원격 시스템으로 전송됩니다.(4) 서버 메모리 (server stub) 과정은 원격 시스템에서 고객의 요청을 기다리고 있습니다.이것은 이 네트워크 메시지에서 파라미터를 해체합니다.(5) 서버 프로그램 캐시는 진정한 서버 함수를 활성화하기 위해 로컬 프로세스 호출을 실행합니다. 이 함수에 전달되는 매개 변수는 고객의 네트워크 메시지에서 해체됩니다.(6) 서버 프로세스가 완료되면 서버 프로그램 캐시에 반환 값을 되돌려줍니다.(7) 서버 메모리는 필요할 때 되돌아오는 값을 변환한 다음에 그것들을 하나 이상의 네트워크 메시지에 집결시켜 고객(8)에게 보내도록 한다.(9) 클라이언트 프로그램 캐시는 로컬 호스트에서 이 네트워크 메시지 (예:read나recvfrom) 를 읽습니다.(10) 반환 값을 가능한 변환한 후 클라이언트 프로그램 캐시는 최종적으로 클라이언트 함수를 반환한다

좋은 웹페이지 즐겨찾기