SVM で pNFS が有効になっている場合、NFSv4.1 クライアントの読み取り/書き込み操作がハングする可能性があります
環境
- ONTAP 9
- NFS v4.1 または NFS v4.2
- パラレルNFS(pNFS)
問題
- NFS v4.1 または NFS v4.2 クライアントが pNFS が有効になっている NFS エクスポートに対して読み取り/書き込み (または ls、cat、cd コマンドの実行) を試行すると、操作がハングしたり、遅延が発生することがあります 同時に、クライアントは次の場所にエラーを記録します:
nfs: [LIF address/hostname] server not responding- SVMには複数のデータLIFがあり、すべてがクライアントから到達可能ではありません
/var/log/messages: 原因
- pNFSはSVMに割り当てられた任意のLIFを使用できますが、そのLIFはクライアントからアクセスまたはルーティングできない場合があります。
- データLIF IPにクライアントが到達できないため、読み取り/書き込み操作がハングします(lsコマンドを含む)。
解決策
- CONTAP-356183:pNFSには利用可能なインターフェイスを選択するためのメカニズムが必要です - NetAppナレッジベースの実装を含むバージョンにアップグレードします
- NFSが有効になっているSVMのすべてのデータLIFにクライアントがアクセスできることを確認します
- これには、SVMのルートの作成が含まれる場合があります。network route createを参照してください
回避策
- SVM で pNFS のサポートを無効にします
::> nfs modify -v4.1-pnfs disabled- または、pNFS機能を使用しないNFSv3を使用します
追加情報
- pNFSの詳細については、TR-4063を参照してください。
- NFSクライアントが読み取りまたは書き込み操作のためにデータボリュームからファイルにアクセスしようとすると、クライアントはメタデータサーバとして指定されたNetApp LIFに
LAYOUTGETコールを発行し、続いてGETDEVICEINFOコールを発行します。 - このコール中に、メタデータサーバはボリュームを持つノードに関するネットワークパス情報を提供します。
- NFSサーバは、サブネット、VLANなどに関係なく、すべてのデータLIFを含む、pNFSで使用可能なデータLIFを検索します。
- この問題を引き起こす到達不能なデータLIFがデータアクセスには必要なく、たとえば管理アクセス用である場合、LIFを'data-protocol none'で設定できます。これにより、データアクセスのためにLIFがクライアントに参照されることがなくなります。
注記:SVM上でpNFSを無効にした状態でクライアントが読み取り/書き込みを試行すると、操作は問題なく機能します。
- SVMでpNFSが有効になっています:
::*> vserver nfs show -vserver svm -fields v4.0,v4.1,v4.1-pnfs,v4.1-implementation-domain
vserver v4.0 v4.1 v4.1-implementation-domain v4.1-pnfs
--------- ------- ------- -------------------------- ---------
svm enabled enabled naslab.local enabled
- SVMには異なるネットワークセグメントからのLIFがあり、すべてがクライアントからアクセス可能というわけではありません。
::*> network interface show -vserver svm
Logical Status Network Current Current Is
Vserver Interface Admin/Oper Address/Mask Node Port Home
----------- ---------- ---------- ------------------ ------------- ------- ----
svm
bad up/up 10.xx.42.yy/24 node-01 e0d true <<< This LIF is not reachable by Client
good up/up 10.xx.41.yy/24 node-02 e0d true
- クライアントは、node-02からLIF good(10.xx.41.yy/24)を使用してエクスポートをマウントしました。
[root@nisserver1 ~]# mount | grep -i mnt
10.xx.41.yy:/unixtest1 on /mnt type nfs4
(rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,
timeo=600,retrans=2,sec=sys,clientaddr=10.xx.41.zz,local_lock=none,addr=10.xx.41.yy)
- NFSエクスポートは、ノードnode-01上のアグリゲートから提供されます
::*> volume show -vserver svm -volume unixtest1 -fields aggregate
vserver volume aggregate
--------- --------- ---------
svm unixtest1 aggr1 <<<<<<
::*> storage aggregate show -aggregate aggr1 -fields node
aggregate node
--------- ----------------------
aggr1 node-01 <<<<<<<
- トレースは、ONTAPがクライアントから到達できないlif IPを返しており、クライアントはそのlifから応答を取得していないことを示しています:
130 2019-04-24 14:05:43.899496 0.000129000 0 10.1.1.46 10.1.1.209 NFS 816,2049 248 V4 Call (Reply In 131) LAYOUTGET
131 2019-04-24 14:05:43.899535 0.000039000 0 10.1.1.209 10.1.1.46 NFS 2049,816 248 V4 Reply (Call In 130) LAYOUTGET
132 2019-04-24 14:05:43.899632 0.000097000 0 10.1.1.46 10.1.1.209 NFS 816,2049 176 V4 Call (Reply In 133) GETDEVINFO
133 2019-04-24 14:05:43.899664 0.000032000 0 10.1.1.209 10.1.1.46 NFS 2049,816 152 V4 Reply (Call In 132) GETDEVINFO
Opcode: GETDEVINFO (47)
r_netid: tcp
length: 3
contents: tcp
fill bytes: opaque data
r_addr: 10.1.1.208.8.1
length: 17
contents: 10.1.1.208.8.1
内部情報
- 9.8以降、これを回避するため、新しいvserverではNFS vserverオプション「v4.1-pnfs」がデフォルトで「無効」に設定されます(RFE 1227093) RedHat KB(ログインが必要です)