NFS 원격이 디렉토리를 내보내고 있는지 어떻게 알 수 있습니까?


11

내 스크립트에는 여러 계층의 상태가 있습니다.

  1. 원격 사용 가능 (핑)
  2. 원격 NFS 서비스가 활성화되었습니다
  3. 원격 NFS가 특정 디렉토리를 내보내는 중
  4. 원격 NFS가 마운트 됨 (마운트)

(2)와 (3)의 rcpinfo경우 가장 좋은 방법 이라고 생각 합니다. 그러나 (2)의 경우 서브 쉘을 시작하지 않고 쿼리를 NFS 서비스로 좁히는 방법을 알 수 없습니다 (이 응용 프로그램에서는 허용되지 않음). (3)의 경우, 물론이 정보가 원격으로도 제공되는지 확실하지 않습니다 ssh.

RHEL 6에서 작업 중이며 표준 배포에 포함되지 않은 프로그램에 액세스 할 수 없습니다.

답변:


16

3) 아마도 showmount -e remote_nfs_serverremote_nfs_server가 어떤 것을 내보냈는지 보여줄 것입니다.

그리고 2) shubshell을 사용하지 않고 원격 서버가 NFSv3 또는 NFSv4를 실행하는지 여부와 TCP 또는 UDP를 알고 있다면 rpcinfo로 구체적으로 쿼리 할 수 ​​있습니다 :
rpcinfo -u remote_nfs_server nfs 3 UDP를 통한 NFSv3 및
rpcinfo -t remote_nfs_server nfs 4TCP를 통한 NFSv4

4) 폴더가 마운트 된 원격 파일 시스템인지 확인하십시오.


추가 정보 :


showmount -r remote아무것도remote 내보내고 있는지 알려주지 만 서브 쉘 (예 : 파이프 라인)을 시작하지 않고 내보내지고 있는지 확인할 수있는 방법이 있습니까? remote:/mnt/dir
Sean Allred

showmount -e remoteremote내 보낸 것이 있으면 알려줍니다 . showmount -r해당 옵션이 없으므로 오류 메시지 만 표시됩니다. 기본적으로 showmount 출력에서 ​​정규 표현식에 대해 grep을 지정하기 위해 쉘 하위 문자열 일치를 사용할 수 있습니다. 아마 예를 들어 stackoverflow.com/questions/12619720/…
doktor5000

또는 다른 방법으로 말하면, 특정 마운트에 대해 원격 NFS 서버를 구체적으로 쿼리 할 수있는 독립 실행 형 명령을 알지 못하며 이것이 존재한다고 생각하지 않습니다. 다른 두 가지 가능한 방법만이 ssh를 통해 로컬로 원격 서버를 쿼리하는 것입니다 (그러나 그럼에도 불구하고 NFS의 상태 비 저장 특성으로 인해 주어진 디렉토리가 현재 내보내 졌는지 확인할 수있는 확실한 방법은 없습니다 ). 다른 방법은 클라이언트에서 NFS 내보내기를 마운트하고 종료 코드를 확인한 다음 로컬 마운트 및 해당 내용을 확인하는 것입니다.
doktor5000

-r옵션 에 대한 나의 실수 -e– 그게 내가 의미 한 바 :) '시도 접근'은 전에 제안되었다. 특히 마음에 들지는 않지만 실제 옵션처럼 보입니다.
Sean Allred

5

showmount -e <server># 3의 일부 측면에 사용할 수 있습니다 . 내보내기가 단순하면 최소한 디렉토리 (또는 이러한 디렉토리의 상위)를 내보내는 것이 좋습니다.

# showmount -e server
/export                               (everyone)

# 2의 경우, 당신이 찾고있는 것이 확실하지 않습니다. NFSv3을 사용하는 경우 적어도 마운트 및 nfs를 찾고있을 것입니다 (일부 경우에는 잠금 관리자를 확인하려고 할 수도 있음). rpcinfo를 사용하여 명시 적으로 확인할 수 있습니다.

# rpcinfo -t server mountd 3
program 100005 version 3 ready and waiting

showmount -r remote아무것도remote 내보내고 있는지 알려주지 만 서브 쉘 (예 : 파이프 라인)을 시작하지 않고 내보내지고 있는지 확인할 수있는 방법이 있습니까? remote:/mnt/dir
Sean Allred

그것은 당신의 처분 시설에 달려 있습니다. 당신의 대본은 무엇입니까? 별도의 실행 파일 (showmount)을 시작하는 것이 다른 쉘을 시작하는 것보다 문제가 적은 이유는 무엇입니까?
BowlOfRed

Python 2.6에서 스크립트를 작성하고 subprocess모듈을 사용하고 있습니다. 파이프 라인을 설정할 수는 있지만 디자인을 그렇게 복잡하게하지는 않습니다. 스크립트가 정상적으로 종료 될 수 있도록 서브 쉘을 시작하지 않아야합니다. 스크립트가 종료되면 하위 프로세스는 종료되지만 하위 프로세스의 하위는 종료 되지 않습니다 . 따라서 서브 쉘은 종료되지만 서브 쉘이 생성되는 프로세스는 아닙니다. 또한 rpcinfo돌아 오는 데 최대 3 분이 소요될 수 있다는 점을 언급했습니다 . 하지만 지금 변경하기에는 너무 늦었습니다.
Sean Allred

필요한 것을 수행하는 별도의 스크립트를 작성하십시오 (예 : showmount 호출하지만 디렉토리에 인수를 사용하여 성공 / 실패를 리턴하며 목적에 적합한 제한 시간을 포함 함). 파이썬에서 해당 스크립트를 호출하십시오.
BowlOfRed

나는 당신이 즉시 생각하는 것만 큼 쉽지 않다는 것을 약속 할 수있다 – 그것이 잠기면 rpcinfoSIGKILL (오해의 원인이된다) – OS는 분명히 프로세스를 죽인다. 어쨌든, 그것은 여전히 ​​셸을 시작하여 시작 rpcinfo합니다. 근본적인 문제는 남아 있습니다.
Sean Allred

0

모든 의사 루트 NFS-V4 내보내기 디렉토리 나열

ls /net/ip-addr-nfs-server

다른 스레드에서 내 답변을 확인하십시오.


A가 들어 /net작업에 마운트의 /etc/auto.net스크립트는 서버가 해당 수출을 가지고 설정해야합니다. showmount명령을 사용합니다 . 서버에 NFSv4 만있는 경우 서버가 작동하지 않습니다 (showmount 표시 RPC: Program not registered/net/server보고 만 가능 File not found)
Ale
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.