

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對 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 單一可用區檔案系統的容錯移轉期間，NFS 用戶端可能會遇到暫時性 I/O 錯誤或延長暫停。對於 NFSv4\+ 用戶端，您可能會看到核心日誌訊息，例如：

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

這些訊息表示用戶端無法在容錯移轉時段成功回收 NFS 鎖定。

**減少容錯移轉事件期間的 I/O 錯誤**  
在 Linux 上，您可以在用戶端上設定網路設定，將容錯移轉偵測時間從 55-60 秒縮短為 15-20 秒。

**重要**  
一律先在非生產環境中測試這些組態。這些設定會增加位址解析通訊協定 (ARP) 流量，用於將 IP 地址映射至本機網路上的實體 (MAC) 地址，可能不適用於網路受限的環境。

**設定 NFS 用戶端的最佳化網路設定**

1. 在每個 NFS 用戶端上建立 sysctl 組態檔案。下列範例使用 `default`將設定套用至所有網路介面。如果您的執行個體有多個網路介面，您可以將 取代`default`為用來連線至 FSx for ONTAP Single-AZ 檔案系統的特定介面名稱 （例如 `eth0`或 `ens5`)：

   ```
   $ 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`，您可以使用下列命令來驗證 。如果您指定了特定的界面，請將 取代`default`為您的界面名稱 （例如， `eth0`或 `ens5`)：

   ```
   $ 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\_reachable\_time\_ms=5000** – 將 ARP 快取項目有效性從 30 秒縮短為 5 秒，讓用戶端在容錯移轉事件期間更快速地偵測 IP 擁有權變更。
+ **delay\_first\_probe\_time=1** – 將探查過時網路項目之前的延遲從 5 秒縮短為 1 秒。
+ **ucast\_solicit=0** – 略過單播鄰近探查並立即發出廣播 ARP 請求，加速重新探索作用中檔案伺服器。
+ **tcp\_syn\_retries=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)。