為何裝載 Block Storage for Classic 會因檔案系統檢查錯誤而失敗?

排除儲存卷檔系統檢查問題。

經典基礎設施

當您檢視使用 的 Pod 之 Pod 日誌時 Block Storage for Classic,會看到類似以下範例的錯誤訊息。

UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.(i.e., without -a or -p
options)

磁碟已毀損。 當持久卷(PV)處於讀寫模式時,若相關 Pod 在未被正確驅逐前遭強制刪除,或在卷仍處於掛載狀態時節點被重啟/重新載入,即會發生磁碟損壞。 在這些情況下,卸載程序未能正確完成,導致卷保持在不一致的狀態。 這種情況通常發生在執行節點重新載入或更新的工作流程中,這些流程會在清空資源後立即執行操作,卻未驗證所有 Pod 是否已完成遷移且磁碟區是否已解除掛載。

執行下列指令,以修補 Pod 正在裝載的 PV。

  1. 取得失敗 Pod 的詳細資料,並記下它正在裝載的 PV 及 PVC。

    kubectl get pods
    
  2. 對 PV 進行修補,以新增 "ibm.io/autofix-fsckErr":"true" 註解。

    kubectl patch pv PVNAME -p '{"metadata": {"annotations":{"ibm.io/autofix-
    fsckErr":"true"}}}'
    
  3. 刪除並重建應用程式 Pod,以重試裝載 PV。 刪除並重建 Pod 之後,Kubernetes 會重試裝載作業,且 Block Storage for Classic 驅動程式 Pod 會嘗試根據 "ibm.io/autofix-fsckErr":"true" 註釋自動修正問題。

  4. 順利部署並執行 Pod 之後,請執行下列指令來編輯 PV。

    kubectl edit pv PVNAME
    
  5. 從 PV 中移除 "ibm.io/autofix-fsckErr: true" 註釋並儲存它。

  6. 如果仍然發生此問題,請聯絡支援人員。 開啟 支援案例。 在案例詳細資料中,請務必包括任何相關日誌檔、錯誤訊息或指令輸出。