NFSv3/v4.0 に関する RHEL の問題、回避策、ベストプラクティス
すべてのとおり
環境
- ONTAP 9
- clustered Data ONTAP 8
- Data ONTAP 7-Mode
- Red Hat Enterprise Linux
回答
この記事では、 Data ONTAP 7-Mode または clustered Data ONTAP を実行している NetApp FAS コントローラで RHEL クライアントを使用する場合の主な既知の問題、対処方法、およびベストプラクティスを示します
既知の問題と回避策: :
RHEL 5.x の場合
- 問題 1
: RHEL5.8 :「 mount withsec=krb5
displays warning as 」rpc.idmapd/rpc.gssd appears not to be running
'.
説明: mountrpc.idmapd/rpc.gssd appears not to be running
では、実行中のエラーが「」として表示nfs-kerberos
sec=krb5
されるため、マウント時にエラーが発生します。
回避策nfs-utils
:パッケージをバージョン 1.0.9-66.el5 以降にアップデートします。詳細について[1]は、「 [RHEL5.8] NFSv4 'Mount' コマンドで RPC サービスが実行されていないことに関する警告が生成される」を参照してください。 - 問題 2
: RHEL5.9:chmod
、chgrp
chown
およびコマンドが NFSv3 マウントで失敗する。
回避策chmod
chgrp
chown
:マウントされたパスにトラバースしてから、、、およびコマンドを使用して作業します。 - 問題 3
: RHEL 5.10 および RHEL 5.11 : NLM クライアントがロックを回復できず、ロック解除処理が保留されている。
説明:クライアントが NLM ロックリカバリを実行すると、 RHEL 5.10 および RHEL 5.11 NLM クライアントは、保留中のロック解除操作の発行を停止し、既存のロックのみを再要求する状態になります。保留中のロック解除操作を伴うロックはロック解除されず、再利用されません。
回避策: RHEL 5 では回避策はありません。ロックリカバリの実行時に保留中のロック解除操作を適切に処理し、リカバリ後にすべてのロックをクリーンアップする RHEL 6.6 GA クライアントにアップグレードします。 - 問題 4
: RHEL 5.11 : "EIO (errno=5) " は、ストレージフェイルオーバー処理中に RHEL5U11 NFSv3 マウントでヒットします。
説明: RHEL 5.11 には最新の SunRPC レイヤ修正がないため、クライアントの EIO エラーが発生します。
回避策: RHEL 5 では回避策はありません。クライアントを RHEL 6.6 GA などの最新の RHEL カーネルにアップグレードしてください。この問題に対応し、最新の修正が適用されています。 - 問題 5
: RHEL 5.11 :「 Error: No locks available (errno=37) 」 Hit on NFSv3 mounts during storage failover operations
description: RHEL 5.11 には最新の SunRPC レイヤ修正がないため、「 Error #37 」エラーが発生します。
回避策: RHEL 5 では回避策はありません。クライアントを RHEL 6.6 GA などの最新の RHEL カーネルにアップグレードしてください。この問題に対応し、最新の修正が適用されています。 - 問題 6
:次のエラーメッセージが表示される。/var/log/messages:Aug 16 19:08:17 uscf1plat0 kernel: NFS: v4 server 10.113.49.8 returned a bad sequence-id error!
grep sequence-id messages.1
Aug 16 19:08:17 uscf1plat0 kernel: NFS: v4 server 10.113.49.8 returned a bad sequence-id error!
...
Aug 22 01:09:27 uscf1plat0 kernel: NFS: v4 server 10.113.49.8 returned a bad sequence-id error!
- ストレージシステムに一致するログがありません
- PKTTT を確認:クライアントが書き込みコールのループに入ると、ストレージシステムが戻ります
NFS4ERR_BAD_STATEID
RHEL 6.x
- 問題 1
: RHEL 6.x :nfs-kerberos
がpermission denied
allow_weak_crypto
無効になっているとエラーで失敗する。
説明:kinit
これらのクライアントで有効にnfs-kerberos
kinit: No supported encryption types (config file error?)
すると、認証は失敗し、表示されます。
回避策allow_weak_crypto=yes
/etc/krb5/krb5.conf
nfs-kerberos
:この機能を使用するには、を追加します。
- 問題 2
: RHEL 6.3/6.4:chmod
chgrp
、chown
およびコマンドが NFSv3 マウントで失敗する。
回避策chmod
chgrp
chown
:マウントされたパスにトラバースしてから、、、およびコマンドを使用して作業します。
- 問題 3
: RHEL 6.2/6.3 : RedHat 6.2/6.3 クライアントで実行されているアプリケーションが、 NFS マウントポイントへのファイルの書き込みを停止できないことがある。Ctrl キーを押しながら C キーを押しても問題は解決しません。RHEL 6 ( > Kernl 2.6.25 )以降のマウントoptions intr/nointr
オプションは廃止されました。ハングしSIGKILL
ているアプリケーションは、を使用して中断する必要があります。
回避策kill -9 pid
:コマンドを使用してプロセスを強制終了します。
- 問題 4
: RHEL 6.3/6.4:No locks available
NFS サーバがクラッシュすると、 NFSv3 プロセスが「」で終了することがある。
説明: NLM-ENOLCK
は、サーバがクラッシュした後にバイトロック要求を待って再試行しておらず、エラーが発生してアプリケーションに失敗しただけです。
回避策: RHEL 6.3 Errata カーネル( 2.6.32-279-46.1.el6 )にアップグレードします。6.4 正誤表カーネル( 2.6.32-358.49.1.el6 )
- 問題 5
: RHEL 6.1/6.2/6.3:
説明: NFSBAD_STATID
v4.0 委譲が有効
になっている間に、 RHEL 6.1/6.2/6.3 クライアントで実行されているアプリケーションがエラーでハングすることがある。回避策: RHEL 6.3 エラッタ( 2.6.32-279-46.1.el6 )にアップグレードする。
- 問題 6
: RHEL 6.4 : RHEL 6.4 クライアントのディレクトリリストに NFS v4.0 参照ディレクトリがない。
説明: RHEL 6.4 クライアントが、 HA ストレージノードの 1 つのボリュームのみを一覧表示する以外のすべてのボリュームの検索を取得しています。Red Hat で追跡した場合は、 https://bugzilla.redhat.com/show_bug.cgi?id=963337 を参照してください
- 問題 7
: RHEL 6.4 :sec=krb5
ボリュームに SYS として Export RO ルールが設定されているにもかかわらず、 RHEL 6.4 クライアントへのマウントが成功する。
説明: RHEL 6.4 クライアントでRPCSEC_GSS
AUTH_UNIX
は、マウント中にセキュリティの種類sec=krb5
が「」から「」に変更されるため、マウント中にマウントが成功します。ただし、ボリュームは RO ルールセットを sys としてエクスポートされています。同様krb5
SECINFO
に、クライアントが応答に基づいてセキュリティの種類を切り替えるため、 RO ルールを sys としてエクスポートし、 mount with も成功しますが、これはセキュリティのギャップのようです。Red Hat で追跡した場合は、 https://bugzilla.redhat.com/show_bug.cgi?id=948145 を参照してください
- 問題 8
: RHEL 6.4 : NFS v4.0 の状態リカバリで、権限チェックが委任OPEN
されているとデッドロックが発生することがある。
説明OPEN
OPEN
:クライアントが委任されたオープンパーミッションもチェックしている間に状態をリカバリしようとすると、 Open Owner の NFSv4 シーケンス ID で State Manager がデッドロックする可能性があります。
回避策: RHEL 6.4 Errata カーネル( 2.6.32-358.49.1.el6.x86_64 )にアップグレードします。
- 問題 9
: RHEL 6.4 : NFSv4.0setattr
:によって取り消された委譲の処理を修正。
説明_nfs4_do_setattr()
:書き込み可能なオープンファイルのステータス ID がない場合は、委譲ステータス ID が使用されます。サーバがその委譲状態 ID を取り消した場合nfs4_handle_exception()
struct nfs4_state
、への呼び出しは、の不足が原因でエラーを処理できず、エラーを単に EIO に変換します。
回避策:クライアントを RHEL 6.4 Errata カーネル( 2.6.32-358.49.1.el6.x86_64 )以降にアップグレードします。
- 問題 10
: RHEL 6.3/6.4 : NFS v4.0 StateID のリカバリzero_stateid NFS4ERR_BAD_STATEID
でループが発生することがある。これは、 https://bugzilla.redhat.com/show_bug.cgi?id=923939 で追跡されています。
回避策:クライアントを最新の RHEL 6.5 以降にアップグレードします。
- 問題 11
: RHEL6.x : cDOT : NFSv4 経由で接続ボリュームで chown -r を実行すると、循環ディレクトリ構造に関する警告が表示される。これは、 https://bugzilla.redhat.com/show_bug.cgi?id=1223978 で追跡されています。
説明:マルチレベルのジャンクションパス( /vol/vol2/vol3 )がマウントされている場合、 setattr または chmod を実行すると、再帰的なディレクトリ構造の警告が表示されることがあります。
回避策:最新のカーネル 6.7 にアップグレードします。
RHEL 7.x
ベストプラクティス
[2]『 clustered Data ONTAP NFS Best Practice and Implementation Guide 』については、 TR-4067 を参照してください。
- 問題 12
: RHEL6.x : "MIT krb5 gss_accept_sec_context() SECD が使用する実装では、サーバーの現在時刻よりも前にチケットの終了時刻が期限切れになった場合に、 Kerberos クロックスキューを考慮せずに、着信トークンを拒否します。これは #8268 で追跡されています。 krb5 gss_accept_sec_context() はクロックスキュー
概要を許可しません。 "CHECK トリガーの場合、 gss_accept_sec_context() は GSS コンテキストリフレッシュで GSS_S_credentials_expired を返しますが、これは NFS クライアントのベリファイア _cred_handle が期限切れであることを示すものではありません。
1
)サーバクロックがクライアントクロックよりも先であるが、サーバに設定されている Kerberos クロックスキュー内にある場合、チェックが失敗し、「 Permission denied 」がアプリケーションに返されます。
2 )サービスチケットの最大ライフタイムが、最大の TGT ライフタイムよりも短くなっている。
3 )クライアントサービスチケットがクライアントクロックに準拠している場合、「クロックスキューウィンドウ」の間に NFS クライアントが Kerberos 共有に要求を送信しており、サーバクロックに従って期限が切れている。
これにより、クロックスキューウィンドウ中に「 permissions denied 」エラーがアプリケーションに返されます。この場合、サーバは auth_error を指定して NFS 要求を拒否し、クライアント上で GSS コンテキストのリフレッシュ試行を開始します。クライアントは、既存のサーバサービスチケットを使用してリフレッシュを行います。このチケットは、 GSS_S_credentials_expired エラーでサーバによって拒否されます。サービスチケットが更新可能な場合、この状況はクライアントでサービスチケットが期限切れになると自動的に解消されるため、クライアントはサービスチケットを更新する必要があります。」回避策:回避策は、 KDC の最大サービスチケットライフタイムを、 TGT の最大ライフタイムと同じに設定することです。この場合、クライアントはサービスチケットの更新を要求されたときに、まず、 Linux NFS クライアントで Kerberos クロックスキューを考慮に入れて、その TGT を更新する必要があります。
-
問題 13
: RHEL6.3 、 6.4 、 6.5 : RHEL NFS クライアントがハングし、古い RHEL 6 カーネルと NFSv4.1 ( BURT : 814789 )で I/O が停止する。
説明: RHEL 6.4 や RHEL 6.3 などの Olderrhel 6 カーネルを実行している Red Hat Enterprise Linux ( RHEL ) NFS クライアントで NFSv4.1 を使用している場合、 LIF 移行などのネットアップ固有のコントローラタスクを実行すると、ハングや長い I/O 停止などのクライアントの問題が発生することがあります。 そのためには、負荷の高いワークロードの状態をリカバリする必要があります。回避策:上記の問題は、最新の RHEL 6.5.z Errata パッケージ
で解決
されています。 1 ) kernel-2.6.32431.29.2.el6 2 ) nfs-utils-1.2.3-39.el6_5.3.3 ) libtirc-0.2.1-6.el6_5.2 これらの問題を回避するには、クライアントをそれぞれの RHEL6.5.erratz パッケージにアップグレードすることを推奨します。 -
問題 14
回避策:上記の問題は、 RHEL 6.6 GA Kernel-2.6.32-504.el6 で解決されました。これらの修正を入手し、上記の問題が発生しないように、クライアントを RHEL 6.6 GA にアップグレードすることを推奨します。
: RHEL 6.4 、 6.5 、 6.5z : RHEL NFS クライアントの I/O 停止とエラー( BURT : 866544 )
説明: RHEL 6.5 などの古いカーネルを実行している Red Hat Enterprise Linux ( RHEL ) NFS クライアントでは、 I/O の停止とエラーが発生します。これは、 NFSv3 、 v4.0 、 v4.1 を含むすべての NFS バージョンで見られます。- 問題 1
: RHEL7.0x : RHEL 7.0 NFS クライアントの問題と修正( BURT : 915798
)説明: NFS クライアントの I/O エラー、カーネルクラッシュ、 Kerberos マウントポイントでの権限拒否エラー、および RHEL 7.0 などの古い Red Hat Enterprise Linux ( RHEL )カーネルで断続的に発生するデータ破損の問題が確認されています。これは、 NFS v3 、 v4.0 、 v4.1 を含むすべての NFS バージョンで見られます。
回避策:上記の問題は、 RHEL 7.1 GA Kernel-3.10.0-229.el7 で解決されました。これらの修正にアクセスし、上記の問題が発生しないように、クライアントをこの RHEL 7.1 GA リリースにアップグレードします。
- 問題 2
: RHEL 7.x : pNFS マウント時に、 EIO エラーが発生した後、 umount が DS へのセッションを破棄しない。これは、 https://bugzilla.redhat.com/show_bug.cgi?id=1234986 で追跡されています。
説明: RHEL 7.x クライアントで pNFS を使用してマウントし、 umount コマンドを実行すると、クライアントがサーバとのセッションを削除できない場合があります。
回避策:最新のカーネルバージョン 7.1z または 7.2 にアップグレードします(カーネル 3.10.0-320 より前)。 - 問題 3 : RHEL 7.x : pNFS を使用する RHEL7.1 の setattr で admin_revoked のために、 EIO を受信しました。これは、 https://bugzilla.redhat.com/show_bug.cgiid=1214410
で追跡されています。説明: RHEL 7.x クライアントで pNFS を使用してマウントし、サーバがフェイルオーバー(テイクオーバー / ギブバック)を実行する必要がある場合
は、次のような EIO エラー(エラー =5 )の回避策が表示されることがあります。 最新のカーネルバージョン 7.1z または 7.2 にアップグレードします(カーネル 3.1.0-289 以降)。 - 問題 4
: RHEL7.1 : MetroCluster スイッチオーバー後に、災害側クラスタのボリュームの NFS IO が断続的に失敗する。これは、 https://Bugzilla.redhat.com/show_bug.cgiid=1240790
で追跡されています。説明: RHEL 7.x クライアントで NFSv4 を使用してマウントし、ストレージシステムが MetroCluster スイッチオーバーを実行する必要がある場合は、と EIO ( Error = 5 )が表示されることがあります。
回避策:最新のカーネルバージョン 7.1z または 7.2 にアップグレードします(カーネル 3.1.0-295 以降)。 - 問題 5
: RHEL 7.x : cDOT : NFSv4 経由で接続ボリュームで chown -r を実行すると、循環ディレクトリ構造に関する警告が表示される。これは、 https://bugzilla.redhat.com/show_bug.cgi?id=1225090 で追跡されています。
説明:マルチレベルのジャンクションパス( /vol/vol2/vol3 )がマウントされている場合、 setattr または chmod を実行すると、再帰的なディレクトリ構造の警告が表示されることがあります。
回避策:最新のカーネル 7.1 にアップグレードします - 問題 6
: RHEL7.1 :新しい RHEL7.1 クライアントで LIF 移行後にファイルを閉じた後、 NFSv4 共有ロックがクリアされない。これは、 https://Bugzilla.redhat.com/show_bug.cgi?id=1263376
で追跡されています。説明: NFS v4.x マウントでファイルが開いており、ロックされていて、サーバが LIF 移行または SFO を通過した場合、ロックがクリアされないことがあります。データが破損する可能性があります。
回避策:カーネルバージョン 3.10.0-320 以上を使用します - 問題 7:
RHEL6.x / 7.x : "MIT krb5 gss_accept_sec_context() SECD が使用[3]
する実装では、サーバの現在時刻よりも前にチケットの終了時刻が期限切れになった場合、 Kerberos クロックスキューの考慮事項はありません。これは、 http://krbdev.mit.edu/rt/Ticket/Display.html?id=8268 概要で追跡されています。 "gss_accept_sec_context() は、正しくない のクレデンシャルがあることを返し、 のクレデンシャルとして、 の期限が正しく期限切れになったことを返した場合になったことを返します。
次
の場合は、チェックが失敗し、「 Permission Denied 」がアプリケーションに返されます。 1 )サーバのクロックがクライアントクロックよりも先行していて、サーバに設定されている Kerberos クロックスキュー内にある場合。
2 )サービスチケットの最大ライフタイムが、最大の TGT ライフタイムよりも短くなっている。
3 )クライアントサービスチケットがクライアントクロックに準拠している場合、「クロックスキューウィンドウ」の間に NFS クライアントが Kerberos 共有に要求を送信しており、サーバクロックに従って期限が切れている。
これにより、クロックスキューウィンドウ中にアプリケーションに「 Permissions Denied (権限が拒否されました)」エラーが返されます。この場合、サーバは auth_error を指定して NFS 要求を拒否し、クライアント上で GSS コンテキストのリフレッシュ試行を開始します。クライアントは、既存のサーバサービスチケットを使用してリフレッシュを行います。このチケットは、 GSS_S_credentials_expired エラーでサーバによって拒否されます。サービスチケットが更新可能な場合、この状況はクライアントでサービスチケットが期限切れになると自動的に解消されるため、クライアントはサービスチケットを更新する必要があります。
」回避策: この問題を回避するには、 KDC の最大サービスチケットライフタイムを、 TGT の最大ライフタイムと同じに設定します。この場合、クライアントはサービスチケットの更新を要求されたときに、まず、 Linux NFS クライアントで Kerberos クロックスキューを考慮に入れて、その TGT を更新する必要があります。
- 問題 1
追加情報
N/A