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.