GNU/Linux >> Linux の 問題 >  >> Linux

ローカル ネットワーク内の NFS サーバーに接続されているクライアントのリストを取得する方法は?

NFS サーバーで次のコマンドを実行すると、接続されている NFS クライアントを見つけることができます:

netstat | grep :nfs

NFS は UDP と TCP の両方で動作し、開いている TCP 接続のみが netstat に表示されます または ss .また、分散ファイルシステムとして、(歴史的に) かなりの数の問題 (状態、キャッシュ、ロック、通知、セキュリティ — そのうちのいくつかは rpc.statd などの追加の RPC 機能による解決策があります) を抱えていました。 ).

Linux NFS サーバー (man rpc.mountd を参照) ) クライアントのマウント/アンマウント要求は /var/lib/nfs/rmtab に記録されます 、ちょうど /etc/mtab のように 、したがって、答えは次のようになります:

cat /var/lib/nfs/rmtab

空の場合は、rpc.mountd に問題があります (したがって、実行中の RPC サービスを確認する必要があります)、またはすべてのクライアントがこの機能を使用しない NFSv4 です。

私がチェックしたバージョンでは rmtab 次のように表示されます:

10.1.2.0/24:/path/to/export1:0x000...flags
10.1.2.10:/path/to/export1:0x0000...flags
10.1.2.22:/path/to/export1:0x0000...flags
10.1.2.0/24:/path/to/export2:0x000...flags
10.1.2.22:/path/to/export2:0x0000...flags
10.1.2.99:/path/to/export2:0x0000...flags

つまり、各マウント ポイントがリストされ、その後にそれを使用するクライアントが続きます。

man ページの警告に注意してください:

<ブロック引用>

ただし、このファイルはほとんど装飾用です。 1 つは、rpc.mountd の UMOUNT プロシージャを呼び出した後でも、クライアントが引き続きファイル ハンドルを使用できることです。 2 つ目は、クライアントが rpc.mountd に通知せずに再起動すると、古いエントリが rmtab に残ります。

/proc/fs/nfsd/client この点では、新しいカーネルでのアプローチ (@Vsevolod Gromov の回答) の方が優れているはずですが、NFSv4 クライアントのみをサポートしているため、より適切に動作するはずです。


Linux カーネル 5.3 以降、/proc/fs/nfsd/clients という特別なディレクトリを使用できます。 .

カーネルのバージョンは uname -r で確認できます コマンド


netstat以降 ss に置き換えられるため、常に使用できるとは限りません。 あなたも使うかもしれません

ss -a|grep nfs


Linux
  1. アクセスできないネットワーク上にあるサービス/サーバーにアクセスする方法(SSHトンネルを使用)

  2. ローカルネットワークに接続されている他のマシンを見つける方法は?

  3. Ubuntuで最新バージョンのWinetrickを入手するにはどうすればよいですか?

  1. Golang Web サーバーをバックグラウンドで実行するにはどうすればよいですか?

  2. zip内のディレクトリのリストを取得するには?

  3. Dockerで依存する子イメージのリストを取得するには?

  1. showmountコマンドを使用してNFSサーバー上の共有を一覧表示する方法

  2. WSL(Windows Subsystem for Linux)上で動作するWebサーバーにローカルネットワークからアクセスする方法

  3. OpenWrt 10.03 で接続されている wifi クライアントのリストを取得する方法は?