稼働中NFSの状態確認コマンドをメモ書き
クライアント側
マウント状況、オプションの確認
[root@nfs-client01 ~]# df -h ... 192.168.1.154:/tmp/ 65G 47G 15G 77% /mnt [root@nfs-client01 ~]# mount ... 192,168.1.154:/tmp/ on /mnt type nfs (rw,addr=192,168.1.154)
チューニングのためrsize、wsizeを大きくしていたり、
サーバ停止時の対策としてsoft、intr使ってるなら、ちゃんと入ってるかチェックしましょう
アクセス状況の確認
[root@nfs-client01 ~]# nfsstat -c Client rpc stats: calls retrans authrefrsh 1616 0 0 Client nfs v3: null getattr setattr lookup access readlink 0 0% 185 11% 13 0% 29 1% 129 8% 0 0% read write create mkdir symlink mknod 12 0% 35 2% 9 0% 6 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 1 0% 1 0% 2 0% 0 0% 0 0% 19 1% fsstat fsinfo pathconf commit 1162 72% 6 0% 0 0% 1 0% Client nfs v4: null read write commit open open_conf 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% open_noat open_dgrd close setattr fsinfo renew 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% setclntid confirm lock lockt locku access 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% getattr lookup lookup_root remove rename link 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% symlink create pathconf statfs readlink readdir 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% server_caps delegreturn 0 0% 0 0%
アクセス種別ごとの回数、比率などが確認できます。
サーバ側
export状況の確認
設定ファイルを確認
[root@nfs-server01 ~]# cat /etc/exports /tmp 192.168.1.0/24(rw,no_root_squash)
実際のエクスポート状況を確認
[root@nfs-server01 ~]# exportfs /tmp 192.168.1.0/24 [root@nfs-server01 ~]# showmount -e Export list for nfs-server01: /tmp 192.168.1.0/24
設定と差分があるようならexportfs -rか/etc/init.d/nfs reloadで反映させましょう
被マウント状況の確認
showmountで確認できます
[root@nfs-server01 /]# showmount -a All mount points on nfs-server01: 192.168.1.153:/tmp
正常にumountされなかったときの情報が残っていることがあるので、
正確な情報を得るためには出力された各クライアントにログインして調べる必要があると思います。
(もっといい方法ないのかな・・・)
アクセス状況の確認
[root@nfs-server01 ~]# nfsstat -s Server rpc stats: calls badcalls badauth badclnt xdrcall 2640 0 0 0 0 Server nfs v3: null getattr setattr lookup access readlink 11 0% 162 6% 9 0% 21 0% 122 4% 0 0% read write create mkdir symlink mknod 12 0% 23 0% 7 0% 6 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 1 0% 1 0% 0 0% 0 0% 0 0% 12 0% fsstat fsinfo pathconf commit 2228 84% 8 0% 0 0% 0 0%
アクセス種別ごとの回数、比率などが確認できます。
どのサーバがどのファイルにアクセスしてるの?
どのサーバが?
tcpdumpで見つけましょう
[root@nfs-server01 /]# tcpdump -n port 2049 17:20:32.476431 IP 192,168.1.153.3173409502 > 192,168.1.154.2049: 124 access [|nfs]
どのファイルに?
mtime、atimeでアクセス時間が判別できるならばfindでOKでしょう
[root@nfs-server01 ~]# find /tmp/ -mtime -1 [root@nfs-server01 ~]# find /tmp/ -atime -1
ただサーバ側でnoatimeつけてると読み込みファイルを探すのはけっこうたいへんな気がします。
というわけでrpcdebugというコマンドを紹介しておきます。
このコマンドでフラグを指定するとデバッグログが出力されるようになります。
・フラグ一覧の確認
[root@nfs-server01 ~]# rpcdebug -vh usage: rpcdebug [-v] [-h] [-m module] [-s flags...|-c flags...] set or cancel debug flags. Module Valid flags rpc xprt call debug nfs auth pmap sched trans svcsock svcdsp misc cache all nfs vfs dircache lookupcache pagecache proc xdr file root callback all nfsd sock fh export svc proc fileop auth repcache xdr lockd all nlm svc client clntlock svclock monitor clntsubs svcsubs hostcache xdr all
・サーバ側でデバッグログ出してみる
[root@nfs-server01 ~]# rpcdebug -m nfsd -s fh nfsd fh [root@nfs-server01 ~]# tail -f /var/log/messages ... Jul 31 16:09:35 nfs-server01 kernel: nfsd: fh_compose(exp fd:00/10049953 tmp/testdir, ino=0) ... Jul 31 16:09:41 nfs-server01 kernel: nfsd: fh_compose(exp fd:00/10049953 testdir/testfile, ino=0) ... Jul 31 17:01:27 nfs-server01 kernel: nfsd: fh_verify(20: 01000001 0000fd00 009959a1 009ded7d 26fbfccf 00000000) ... [root@nfs-server01 ~]# rpcdebug -m nfsd -c fh nfsd <no flags set>
アクセスのあったファイル名が出力されています。
ただ読み込みについては初回以降はファイル名が出てこないのでよくわかりません。
(最後の行。実は009ded7dがinode番号なのでfind -inumで見つけられなくはないです)
・クライアント側でデバッグログ出してみる
[root@nfs-client01 ~]# rpcdebug -m nfs -s vfs nfs vfs [root@nfs-client01 ~]# tail -f /var/log/messages ... Jul 31 17:14:02 nfs-client01 kernel: NFS: mkdir(0:19/10049953), testdir2 ... Jul 31 17:14:03 nfs-client01 kernel: NFS: dentry_delete(//testdir2, 0) ... Jul 31 17:14:37 nfs-client01 kernel: NFS: create(0:19/10349951), testfile2 ... Jul 31 17:14:37 nfs-client01 kernel: NFS: dentry_delete(testdir2/testfile2, 0) ... Jul 31 17:15:39 nfs-client01 kernel: NFS: dentry_delete(testdir2/testfile2, 8) [root@nfs-client01 ~]# rpcdebug -m nfs -c vfs nfs <no flags set>
こちらのほうが見やすいですし、読み込みの際もファイル名が出てきてくれます。
サービス系のNFS撲滅したい(;´Д`)ハァハァ