

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# I/O エラーと NFS ロックの再利用の失敗のトラブルシューティング
<a name="nfs-failover-issues"></a>

このセクションでは、FSx for ONTAP ファイルシステムのフェイルオーバーイベント中の I/O エラーと NFS ロックの再利用の失敗に関連する問題と、それぞれの解決策について説明します。

## フェイルオーバーイベント中に I/O エラーが発生している
<a name="io-errors-during-failover"></a>

FSx for ONTAP シングル AZ ファイルシステムのフェイルオーバー中に、NFS クライアントで一時的な I/O エラーや長時間の一時停止が発生する可能性があります。NFSv4\$1 クライアントの場合、次のようなカーネルログメッセージが表示されることがあります。

```
NFS: __nfs4_reclaim_open_state: Lock reclaim failed!
```

これらのメッセージは、フェイルオーバーウィンドウ中にクライアントが NFS ロックを正常に再利用できなかったことを示します。

**フェイルオーバーイベント中の I/O エラーを減らすには**  
Linux では、クライアントでネットワーク設定を行い、フェイルオーバー検出時間を 55～60 秒から 15～20 秒に短縮できます。

**重要**  
これらの設定は、必ず本番環境以外で最初にテストしてください。これらの設定により、IP アドレスをローカルネットワーク上の物理 (MAC) アドレスにマッピングするために使用されるアドレス解決プロトコル (ARP) トラフィックが増加し、ネットワークに制約のある環境には適さない場合があります。

**NFS クライアント用に最適化されたネットワーク設定を構成するには**

1. 各 NFS クライアントに sysctl 設定ファイルを作成します。次の例では`default`、 を使用してすべてのネットワークインターフェイスに設定を適用します。インスタンスに複数のネットワークインターフェイスがある場合は、 を FSx for ONTAP シングル AZ ファイルシステムへの接続に使用される特定のインターフェイス名 ( `eth0`や など`ens5`) `default`に置き換えることができます。

   ```
   $ sudo tee /etc/sysctl.d/99-fsx-failover.conf > /dev/null << 'EOF'
   # NFS client optimizations for faster failover detection
   # Replace 'default' with your interface name (e.g., eth0, ens5) to target a specific interface
   net.ipv4.neigh.default.base_reachable_time_ms=5000
   net.ipv4.neigh.default.delay_first_probe_time=1
   net.ipv4.neigh.default.ucast_solicit=0
   net.ipv4.tcp_syn_retries=3
   EOF
   ```

1. 設定をすぐに適用します。

   ```
   $ sudo sysctl -p /etc/sysctl.d/99-fsx-failover.conf
   ```

1. 設定がアクティブであることを確認します。を使用した場合は`default`、次のコマンドを使用して を確認できます。特定のインターフェイスを指定した場合は、 をインターフェイス名 (例: `eth0`または `ens5`) `default`に置き換えます。

   ```
   $ sysctl net.ipv4.neigh.default.base_reachable_time_ms
   $ sysctl net.ipv4.neigh.default.delay_first_probe_time
   $ sysctl net.ipv4.neigh.default.ucast_solicit
   $ sysctl net.ipv4.tcp_syn_retries
   ```

これらの設定が、同じアベイラビリティーゾーン内の FSx for ONTAP ファイルシステムに接続するすべての NFS クライアントに一貫して適用されることを確認します。これらのネットワーク最適化を使用する場合は、次の点に注意してください。
+ **base\$1reachable\$1time\$1ms=5000** – ARP キャッシュエントリの有効性を 30 秒から 5 秒に減らし、フェイルオーバーイベント中にクライアントが IP 所有権の変更をより迅速に検出できるようにします。
+ **delay\$1first\$1probe\$1time=1** – 古いネットワークエントリを調べるまでの遅延を 5 秒から 1 秒に短縮します。
+ **ucast\$1solicit=0** – ユニキャストネイバープローブをスキップし、ブロードキャスト ARP リクエストをすぐに発行して、アクティブなファイルサーバーの再検出を高速化します。
+ **tcp\$1syn\$1retries=3** – TCP 接続の再試行時間を 127 秒から 15 秒に短縮します。

ネットワーク設定が完了したら、環境をモニタリングして変更を検証する必要があります。ファイルシステムのスループットキャパシティを変更することで、フェイルオーバーイベントをテストできます。詳細については、「[ファイルシステムでフェイルオーバーをテストする](high-availability-AZ.md#testing-failover)」を参照してください。

**変更を適用した後の環境のモニタリング**  

+ **NFS エラーのシステムログをモニタリング**して、NFS 関連のカーネルログメッセージを表示します。

  ```
  $ sudo journalctl -f | grep -i nfs
  ```

  などのメッセージの発生が少ないことを確認します`Lock reclaim failed`。
+ **アプリケーションログをモニタリング**して、フェイルオーバーイベント中の I/O タイムアウト、接続エラー、再試行関連の障害が少ないことを確認します。
+ **ネットワークへの影響を検証**して、ARP トラフィックの増加が環境のネットワークパフォーマンスに悪影響を及ぼさないことを確認します。

## NFSv4 環境の代替アプローチ
<a name="nfsv4-alternative-approaches"></a>

クライアント側の設定を変更できない NFSv4 環境では、次の代替方法を検討してください。
+ **NFSv4 リースタイムアウトを延長します。**ストレージ管理者と協力して、NFSv4 リースタイムアウトを増やします。これらのタイムアウトを延長すると、クライアントはフェイルオーバーイベント中にロックを再利用するための追加の時間を確保できます。詳細については、 NetApp ONTAPドキュメントの[NFSv4 ロック猶予期間を指定する](https://docs.netapp.com/us-en/ontap/nfs-admin/specify-nfsv4-locking-grace-period-task.html)」を参照してください。