web-dev-qa-db-ja.com

NFSv4がマウントでハングする

NFSマウントコマンドは、サーバーの再起動後、クライアントで無期限にハングします。

私はこのコマンドを実行しています:mount -t nfs -v 10.17.25.27:/DATA/projects/assets-db/log-Apache test

私のNFSサーバーは:10.17.25.27、クライアントIPは10.17.25.152

Nfsのsyslogデバッグを有効にしましたが、次のエラーが表示されます。

Aug 31 16:26:06 SEFRAPP05155 kernel: NFS call  setclientid_confirm auth=UNIX, (client ID 9ee5cc5a6d8c0000)
Aug 31 16:26:06 SEFRAPP05155 kernel: NFS reply setclientid_confirm: -10008
Aug 31 16:26:06 SEFRAPP05155 kernel: NFS call  setclientid auth=UNIX, 'Linux NFSv4.0 10.17.25.152/10.17.25.27 tcp'
Aug 31 16:26:06 SEFRAPP05155 kernel: NFS reply setclientid: 0
Aug 31 16:26:06 SEFRAPP05155 kernel: NFS call  setclientid_confirm auth=UNIX, (client ID 9ee5cc5a6e8c0000)
Aug 31 16:26:06 SEFRAPP05155 kernel: NFS reply setclientid_confirm: -10008
Aug 31 16:26:06 SEFRAPP05155 kernel: --> nfs_put_client({8})
Aug 31 16:26:06 SEFRAPP05155 kernel: NFS: <-- nfs40_walk_client_list status = -10008
Aug 31 16:26:06 SEFRAPP05155 kernel: --> nfs4_create_server()
Aug 31 16:26:06 SEFRAPP05155 kernel: --> nfs4_init_server()
Aug 31 16:26:06 SEFRAPP05155 kernel: --> nfs4_set_client()
Aug 31 16:26:06 SEFRAPP05155 kernel: --> nfs_get_client(10.17.25.27,v4)
Aug 31 16:26:06 SEFRAPP05155 kernel: <-- nfs_found_client found nfs_client ffff8801e93a0400 for 10.17.25.27
Aug 31 16:26:06 SEFRAPP05155 kernel: <-- nfs4_set_client() = 0 [new ffff8801e93a0400]
Aug 31 16:26:06 SEFRAPP05155 kernel: <-- nfs4_init_server() = 0
Aug 31 16:26:06 SEFRAPP05155 kernel: --> nfs4_get_rootfh()
...
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS call  setclientid_confirm auth=UNIX, (client ID 9ee5cc5a6f8c0000)
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS reply setclientid_confirm: -10008
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS call  setclientid auth=UNIX, 'Linux NFSv4.0 10.17.25.152/10.17.25.27 tcp'
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS reply setclientid: 0
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS call  setclientid_confirm auth=UNIX, (client ID 9ee5cc5a708c0000)
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS reply setclientid_confirm: -10008
Aug 31 16:26:08 SEFRAPP05155 kernel: --> nfs_put_client({9})
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS: <-- nfs40_walk_client_list status = -10008
Aug 31 16:26:08 SEFRAPP05155 kernel: nfs4_get_rootfh: getroot error = 512
Aug 31 16:26:08 SEFRAPP05155 kernel: <-- nfs4_get_rootfh() = -512
Aug 31 16:26:08 SEFRAPP05155 kernel: --> nfs_free_server()
Aug 31 16:26:08 SEFRAPP05155 kernel: --> nfs_put_client({8})
Aug 31 16:26:08 SEFRAPP05155 kernel: <-- nfs_free_server()
Aug 31 16:26:08 SEFRAPP05155 kernel: <-- nfs4_create_server() = error -512
...
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS call  setclientid_confirm auth=UNIX, (client ID 9ee5cc5a6f8c0000)
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS reply setclientid_confirm: -10008
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS call  setclientid auth=UNIX, 'Linux NFSv4.0 10.17.25.152/10.17.25.27 tcp'
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS reply setclientid: 0
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS call  setclientid_confirm auth=UNIX, (client ID 9ee5cc5a708c0000)
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS reply setclientid_confirm: -10008
Aug 31 16:26:08 SEFRAPP05155 kernel: --> nfs_put_client({9})
Aug 31 16:26:08 SEFRAPP05155 kernel: NFS: <-- nfs40_walk_client_list status = -10008
Aug 31 16:26:08 SEFRAPP05155 kernel: nfs4_get_rootfh: getroot error = 512
Aug 31 16:26:08 SEFRAPP05155 kernel: <-- nfs4_get_rootfh() = -512
Aug 31 16:26:08 SEFRAPP05155 kernel: --> nfs_free_server()
Aug 31 16:26:08 SEFRAPP05155 kernel: --> nfs_put_client({8})
Aug 31 16:26:08 SEFRAPP05155 kernel: <-- nfs_free_server()
Aug 31 16:26:08 SEFRAPP05155 kernel: <-- nfs4_create_server() = error -512
Aug 31 16:26:09 SEFRAPP05155 kernel: NFS call  setclientid_confirm auth=UNIX, (client ID 9ee5cc5a708c0000)
Aug 31 16:26:09 SEFRAPP05155 kernel: NFS reply setclientid_confirm: -10008
Aug 31 16:26:09 SEFRAPP05155 kernel: NFS call  setclientid auth=UNIX, 'Linux NFSv4.0 10.17.25.152/10.17.25.27 tcp'
Aug 31 16:26:09 SEFRAPP05155 kernel: NFS reply setclientid: 0
Aug 31 16:26:09 SEFRAPP05155 kernel: NFS call  setclientid_confirm auth=UNIX, (client ID 9ee5cc5a718c0000)
Aug 31 16:26:09 SEFRAPP05155 kernel: NFS reply setclientid_confirm: -10008
Aug 31 16:26:09 SEFRAPP05155 kernel: --> nfs_put_client({8})
Aug 31 16:26:09 SEFRAPP05155 kernel: NFS: <-- nfs40_walk_client_list status = -10008

このようなログ行が繰り返されているのがわかります。

実行するとrpcinfo -p 10.17.25.27クライアントでは、次のように表示されます。

   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp    662  status
    100005    1   udp    892  mountd
    100024    1   tcp    662  status
    100005    1   tcp    892  mountd
    100005    2   udp    892  mountd
    100005    2   tcp    892  mountd
    100005    3   udp    892  mountd
    100005    3   tcp    892  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  32768  nlockmgr
    100021    3   udp  32768  nlockmgr
    100021    4   udp  32768  nlockmgr
    100021    1   tcp  32768  nlockmgr
    100021    3   tcp  32768  nlockmgr
    100021    4   tcp  32768  nlockmgr

NFSのバージョン3でのマウントは機能しますが、バージョン4の機能が必要なため、この古いバージョンのプロトコルにダウングレードすることはできません。

私はCentOS 7.2カーネル付き3.10.0-514.26.2.el7.x86_64

1
jobou

NFSが突然ダウンした理由がわかりませんでした。再起動後、クライアントはエクスポートされたファイルシステムをマウントできませんでした。マシン間のすべてのポートを開くために、すべてのサーバーを再起動しようとしましたが、何もうまくいきませんでした。

ただし、カーネルをバージョン3.10.0-514.26.2.el7.x86_64から3.10.0-862.11.6.el7.x86_64にアップグレードした後、再び機能させることができました。

0
jobou