为什么安装 Block Storage for Classic 失败时发生文件系统检查错误?

排查存储卷的文件系统检查问题。

经典基础设施

当您查看使用 的 Pod 的日志时,会 Block Storage for Classic 看到类似以下示例的错误。

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

磁盘已损坏。 磁盘损坏发生在持久卷(PV)处于读写模式时,若关联的Pod在未被正确移除前被强制删除,或节点在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. 如果问题仍然存在,请联系支持团队。 打开 支持案例。 在案例详细信息中,请确保包含任何相关日志文件,错误消息或命令输出。