疑難排解與已知問題

本頁面提供一些常見問題和錯誤的疑難排解步驟。

已知問題

  • 如果檔案系統沒有發生任何 I/O,效能圖表會顯示「所選時間範圍內沒有可用的資料」訊息。這是因為只有在有 I/O 時,系統才會產生效能指標。如要進一步瞭解指標,請參閱「監控執行個體和作業」。
  • 不支援下列 Lustre 功能:
    • 用戶端資料壓縮
    • 永久用戶端快取
  • 系統不支援部分 Lustre 指令。
  • 但仍有部分例外狀況
  • Managed Lustre 無法掛接至受防護的 VM。在安全啟動環境中嘗試載入 Lustre 核心模組時,會失敗並顯示以下錯誤:ERROR: could not insert 'lustre': Required key not available.

執行個體作業問題

以下各節說明與執行個體作業相關的問題。

無法將作業加入佇列

嘗試啟動作業時,如果看到類似下列任一項的錯誤訊息:

ERROR: (gcloud.lustre.instances.import-data) ABORTED: unable to queue the operation
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
ERROR: (gcloud.lustre.instances.update) ABORTED: unable to queue the operation

如果嘗試啟動作業時,相同執行個體上已在進行相同類型的作業,就會發生這個錯誤。

  • 匯入/匯出:受管理 Lustre 執行個體一次只能執行一項有效的傳輸作業。佇列不支援轉移作業。
  • 執行個體更新:受管理 Lustre 允許每個執行個體一次進行一項更新,並允許將其他更新作業加入佇列。

如要解決這個問題,請等待目前的操作完成,再開始新的操作。

Compute Engine 問題

如果無法在 Compute Engine 執行個體上掛接 Managed Lustre 檔案系統,請按照下列步驟診斷問題。

確認 Managed Lustre 執行個體是否可連線

首先,請確認 Managed Lustre 執行個體可從 Compute Engine 執行個體連線:

sudo lctl ping IP_ADDRESS@tcp

如要取得 IP_ADDRESS 的值,請參閱「取得執行個體」。

成功 Ping 會傳回類似以下的回應:

12345-0@lo
12345-10.115.0.3@tcp

如果連線偵測 (ping) 失敗,系統會傳回下列內容:

failed to ping 10.115.0.3@tcp: Input/output error

如果 Ping 失敗:

  • 確認受管理 Lustre 執行個體和 Compute Engine 執行個體位於相同的 VPC 網路。比較下列指令的輸出內容:

    gcloud compute instances describe VM_NAME \
      --zone=VM_ZONE \
      --format='get(networkInterfaces[0].network)'
    
    gcloud lustre instances describe INSTANCE_NAME \
      --location=ZONE --format='get(network)'
    

    輸出內容如下所示:

    https://www.googleapis.com/compute/v1/projects/my-project/global/networks/my-network
    projects/my-project/global/networks/my-network
    

    gcloud compute instances describe 指令的輸出內容會以 https://www.googleapis.com/compute/v1/ 為前置字串;該字串後方的所有內容都必須與 gcloud lustre instances describe 指令的輸出內容相符。

  • 檢查 VPC 網路的防火牆規則和路由設定,確保這些規則允許 Compute Engine 執行個體與 Managed Lustre 執行個體之間的流量。

檢查 LNet 接受埠

您可以設定受管理 Lustre 執行個體,在建立時指定 --gke-support-enabled 旗標,支援 GKE 用戶端。

如果已啟用 GKE 支援,您必須在所有 Compute Engine 執行個體上將 LNet 設為使用 accept_port 6988。請參閱gke-support-enabled 執行個體設定 LNet

如要判斷執行個體是否已設定為支援 GKE 用戶端,請執行下列指令:

gcloud lustre instances describe INSTANCE_NAME \
  --location=LOCATION | grep gkeSupportEnabled

如果指令傳回 gkeSupportEnabled: true,則必須設定 LNet。

Ubuntu 核心版本與 Lustre 用戶端不符

如果是執行 Ubuntu 的 Compute Engine 執行個體,Ubuntu 核心版本必須與特定版本的 Lustre 用戶端套件相符。如果 Lustre 用戶端工具失敗,請檢查 Compute Engine 執行個體是否已自動升級至較新的核心。

如要查看核心版本,請按照下列步驟操作:

uname -r

回應如下所示:

6.8.0-1029-gcp

如要查看 Lustre 用戶端套件版本,請按照下列步驟操作:

dpkg -l | grep -i lustre

回應如下所示:

ii  lustre-client-modules-6.8.0-1029-gcp 2.14.0-ddn198-1  amd64  Lustre Linux kernel module (kernel 6.8.0-1029-gcp)
ii  lustre-client-utils                  2.14.0-ddn198-1  amd64  Userspace utilities for the Lustre filesystem (client)

如果兩個指令列出的核心版本不符,請重新安裝 Lustre 用戶端套件

檢查 dmesg 是否有 Lustre 錯誤

許多 Lustre 警告和錯誤都會記錄到 Linux 核心環狀緩衝區。dmesg 指令會列印核心環狀緩衝區。

如要搜尋 Lustre 專屬訊息,請搭配使用 grepdmesg

dmesg | grep -i lustre

或者,如要尋找可能相關的一般錯誤:

dmesg | grep -i error

支援要求中應包含的資訊

如果無法解決掛接失敗問題,請先收集診斷資訊,再建立支援案件。

執行 sosreport:這項公用程式會收集系統記錄和設定資訊,並產生壓縮的 tarball:

sudo sosreport

sosreport 封存檔和 dmesg 的任何相關輸出內容附加到支援案件中。

GKE 問題

在按照本節的疑難排解步驟操作之前,請先參閱從 GKE 連線至 Managed Lustre 時的限制

更新執行個體容量下限

受管理 Lustre 執行個體的容量下限已更新為 9000 GiB。如要透過代管 Lustre CSI 驅動程式建立 9000 GiB 執行個體,請將叢集版本升級至 1.34.0-gke.2285000 以上版本。

動態佈建的 Lustre 執行個體效能層級不正確

動態佈建 Lustre 執行個體時,無論 API 要求中指定的 perUnitStorageThroughput 值為何,執行個體建立作業都會因 InvalidArgument 錯誤而失敗。這會影響 1.33.4-gke.1036000 之前的 GKE 1.33 版本。

解決方法:

將 GKE 叢集升級至 1.33.4-gke.1036000 以上版本。如果使用穩定版,可能還無法取得較新版本。在這種情況下,您可以從「一般」或「快速」管道手動選取包含修正程式的版本。

Managed Lustre 通訊埠

Managed Lustre CSI 驅動程式會使用不同的通訊埠與 Managed Lustre 執行個體通訊,具體取決於 GKE 叢集版本和現有的 Managed Lustre 設定。

  • 預設通訊埠 (988):對於執行 1.33.2-gke.4780000 以上版本的新 GKE 叢集,驅動程式預設會使用通訊埠 988 進行 Lustre 通訊。

  • 舊版通訊埠 (6988):在下列情況中,驅動程式會使用通訊埠 6988

    • 較舊的 GKE 版本:如果您的 GKE 叢集執行版本低於 1.33.2-gke.4780000,啟用 CSI 驅動程式時必須使用 --enable-legacy-lustre-port 標記。啟用這個旗標可解決 GKE 節點上 gke-metadata-server 的通訊埠衝突問題。
    • 支援 GKE 的現有 Managed Lustre 執行個體:如果您要連線至使用 --gke-support-enabled 旗標建立的現有 Managed Lustre 執行個體,無論叢集版本為何,啟用 CSI 驅動程式時都必須加入 --enable-legacy-lustre-port。如果沒有這個標記,GKE 叢集就無法掛接現有的 Lustre 執行個體。

    如要進一步瞭解如何透過舊版通訊埠啟用 CSI 驅動程式,請參閱「Lustre 通訊埠」。

記錄查詢

如要檢查記錄,請在 Logs Explorer 中執行下列查詢。

如要傳回 Managed Lustre CSI 驅動程式節點伺服器記錄,請執行下列操作:

resource.type="k8s_container"
resource.labels.pod_name=~"lustre-csi-node*"

排解磁碟區佈建問題

如果 PersistentVolumeClaim (PVC) 仍處於 Pending 狀態,且 20 到 30 分鐘後仍未建立 PersistentVolume (PV),則可能發生錯誤。

  1. 檢查 PVC 事件:

    kubectl describe pvc PVC_NAME
    
  2. 如果錯誤訊息指出設定問題或引數無效,請檢查 StorageClass 參數

  3. 重新建立 PVC。

  4. 如果問題仍未解決,請與 Cloud Customer Care 團隊聯絡。

排解磁碟區掛接問題

Pod 排定至節點後,系統會掛接磁碟區。如果失敗,請檢查 Pod 事件和 kubelet 記錄。

kubectl describe pod POD_NAME

啟用 CSI 驅動程式時發生問題

症狀:

MountVolume.MountDevice failed for volume "yyy" : kubernetes.io/csi: attacher.MountDevice failed to create newCsiDriverClient: driver name lustre.csi.storage.gke.io not found in the list of registered CSI drivers

MountVolume.SetUp failed for volume "yyy" : kubernetes.io/csi: mounter.SetUpAt failed to get CSI client: driver name lustre.csi.storage.gke.io not found in the list of registered CSI drivers

原因:CSI 驅動程式未啟用或尚未執行。

解決方法:

  1. 確認 CSI 驅動程式已啟用
  2. 如果叢集最近才完成擴充或升級,請稍候幾分鐘,等待驅動程式恢復運作。
  3. 如果錯誤仍存在,請檢查 lustre-csi-node 記錄檔是否有「Operation not permitted」(不允許的操作)。這表示節點版本過舊,無法支援 Managed Lustre。如要解決這個問題,請將節點集區升級至 1.33.2-gke.1111000 以上版本。
  4. 如果記錄顯示「LNET_PORT mismatch」,請升級節點集區,確保安裝相容的 Lustre 核心模組。

掛接點已存在

症狀:

MountVolume.MountDevice failed for volume "yyy" : rpc error: code = AlreadyExists
desc = A mountpoint with the same lustre filesystem name "yyy" already exists on
node "yyy". Please mount different lustre filesystems

原因:系統不支援在單一節點上,從不同 Managed Lustre 執行個體掛接多個檔案系統名稱相同的磁碟區。

解決方法:為每個 Managed Lustre 執行個體使用專屬的檔案系統名稱。

掛接失敗:找不到你所指定的檔案或目錄

症狀:

MountVolume.MountDevice failed for volume "yyy" : rpc error: code = Internal desc = Could not mount ... failed: No such file or directory

原因:指定檔案系統名稱有誤或不存在。

解決方法:確認 StorageClass 或 PV 設定中的 fs_name 與 Managed Lustre 執行個體相符。

掛接失敗:輸入/輸出錯誤

症狀:

MountVolume.MountDevice failed for volume "yyy" : rpc error: code = Internal desc = Could not mount ... failed: Input/output error

原因:叢集無法連線至 Managed Lustre 執行個體。

解決方法:

  1. 確認 Managed Lustre 執行個體的 IP 位址。
  2. 確認 GKE 叢集和 Managed Lustre 執行個體位於同一個虛擬私有雲網路,或已正確對等互連。

內部錯誤

症狀: rpc error: code = Internal desc = ...

解決方法:如果錯誤持續發生,請與 Cloud Customer Care 團隊聯絡。

排解磁碟區卸載問題

症狀:

UnmountVolume.TearDown failed for volume "yyy" : rpc error: code = Internal desc = ...

解決方法:

  1. 強制刪除 Pod:

    kubectl delete pod POD_NAME --force
    
  2. 如果問題仍未解決,請與 Cloud Customer Care 團隊聯絡。

排解磁碟區刪除問題

如果刪除 PVC 後,PV 仍處於「已發布」狀態一段時間 (例如超過一小時),請與 Cloud Customer Care 聯絡。

排解磁碟區擴充問題

PVC 停滯在 ExternalExpanding 狀態

症狀:PVC 狀態不會變更為 Resizing,且事件會顯示 ExternalExpanding

原因:allowVolumeExpansion 欄位可能遺失或設為 false

解決方法: 確認 StorageClass 具有 allowVolumeExpansion: true

kubectl get storageclass STORAGE_CLASS_NAME -o yaml

擴充失敗:引數無效

症狀: VolumeResizeFailed: rpc error: code = InvalidArgument ...

原因:要求的尺寸無效 (例如不是步階大小的倍數,或超出限制)。

解決方法: 檢查有效容量範圍,並使用有效大小更新 PVC。

擴展失敗:內部錯誤

症狀: VolumeResizeFailed ... rpc error: code = Internal

解決方法: 重新套用 PVC,然後重試擴充作業。如果多次失敗,請與 Cloud Customer Care 聯絡。

已超過期限

症狀:VolumeResizeFailed DEADLINE_EXCEEDED

原因:作業處理時間超出預期,但可能仍在進行中。

解決方法: 請等待作業完成。縮放器會自動重試。如果長時間卡在某個畫面 (例如> 90 分鐘),請聯絡支援團隊。

超過配額

症狀:擴充作業因配額限制而失敗。

解決方法: 申請提高配額,或申請較小的容量增幅。

虛擬私有雲網路問題

以下各節說明常見的 VPC 網路問題。

無法從對等專案存取 Managed Lustre

如要從對等互連 VPC 網路中的 VM 存取 Managed Lustre 執行個體,必須使用 Network Connectivity Center (NCC)。NCC 可讓您將多個 VPC 網路和內部部署網路連線至中央中樞,在這些網路之間提供連線。

如需設定 NCC 的操作說明,請參閱 Network Connectivity Center 說明文件

在多 NIC VM 上掛接 Lustre 失敗

如果 VM 有多個網路介面控制器 (NIC),且 Managed Lustre 執行個體位於連線至次要 NIC 的 VPC (例如 eth1),執行個體可能無法掛接。如要解決這個問題,請按照這篇文章的指示,使用次要 NIC 進行掛接。

無法從 172.17.0.0/16 子網路範圍連線

IP 位址位於 172.17.0.0/16 子網路範圍內的 Compute Engine 和 GKE 用戶端,無法掛接 Managed Lustre 執行個體。

權限遭拒,無法為服務「servicenetworking.googleapis.com」新增對等互連

ERROR: (gcloud.services.vpc-peerings.connect) User [$(USER)] does not have
permission to access services instance [servicenetworking.googleapis.com]
(or it may not exist): Permission denied to add peering for service
'servicenetworking.googleapis.com'.

這項錯誤表示您的使用者帳戶沒有 servicenetworking.services.addPeering IAM 權限。

如需將下列任一角色新增至帳戶的操作說明,請參閱「使用 IAM 控管存取權」:

  • roles/compute.networkAdmin
  • roles/servicenetworking.networksAdmin

無法修改 CreateConnection 中的分配範圍

ERROR: (gcloud.services.vpc-peerings.connect) The operation
"operations/[operation_id]" resulted in a failure "Cannot modify allocated
ranges in CreateConnection. Please use UpdateConnection."

如果您已在這個網路上建立具有不同 IP 範圍的 VPC 對等互連,系統就會傳回這項錯誤。兩個可能的解決方案如下:

取代現有 IP 範圍:

gcloud services vpc-peerings update \
  --network=NETWORK_NAME \
  --ranges=IP_RANGE_NAME \
  --service=servicenetworking.googleapis.com \
  --force

或者,將新的 IP 範圍新增至現有連線:

  1. 擷取對等互連的現有 IP 範圍清單:

    EXISTING_RANGES="$(
      gcloud services vpc-peerings list \
        --network=NETWORK_NAME \
        --service=servicenetworking.googleapis.com \
        --format="value(reservedPeeringRanges.list())" \
        --flatten=reservedPeeringRanges
    )
    
  2. 然後將新範圍新增至對等互連:

    gcloud services vpc-peerings update \
      --network=NETWORK_NAME \
      --ranges="${EXISTING_RANGES}",IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

IP 位址範圍用盡

如果執行個體建立作業失敗,並顯示範圍用盡錯誤:

ERROR: (gcloud.alpha.Google Cloud Managed Lustre.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted

請按照虛擬私有雲指南的說明修改現有私人連線,新增 IP 位址範圍。

建議前置字元長度至少為 /20 (1024 個位址)。