管理磁碟區

先決條件

新增磁碟區

請參閱磁碟區配置指南

列出磁碟區

若要從 DirectPV 取得磁碟區的資訊,請執行list volumes命令。輸出會類似如下

$ kubectl directpv list drives
┌────────┬──────┬──────┬─────────┬─────────┬─────────┬────────┐
│ NODE   │ NAME │ MAKE │ SIZE    │ FREE    │ VOLUMES │ STATUS │
├────────┼──────┼──────┼─────────┼─────────┼─────────┼────────┤
│ master │ vdb  │ -    │ 512 MiB │ 506 MiB │ -       │ Ready  │
│ node1  │ vdb  │ -    │ 512 MiB │ 506 MiB │ -       │ Ready  │
└────────┴──────┴──────┴─────────┴─────────┴─────────┴────────┘

擴展磁碟區

DirectPV 支援線上擴展磁碟區,而無需重新啟動使用這些磁碟區的 Pod。這是透過在擴展相關的 Persistent Volume Claim (PVC) 的大小後自動完成。

  1. 取得 PVC YAML

    kubectl get pvc [PersistentVolumeClaimName] -o yaml > my-file-name.yaml

  2. 在 PVC 中,修改 spec.resources.requests.storage 以變更請求的大小。

  3. 將更新的 PVC 套用至 Kubernetes 環境,例如使用 kubectl apply

    套用變更後,PVC 會更新,而且 DirectPV 會自動增加指派給聲明的磁碟區大小。

  4. 使用 kubectl get pvc [PersistentVolumeClaimName] -o yaml 驗證變更

    檢閱 status.capacity.storage 以查看更新後的大小。

刪除磁碟區

此為危險作業,會導致資料遺失

只有在沒有任何 Pod 使用該磁碟區該磁碟區處於 Ready 狀態時,才能刪除磁碟區。執行 kubectl delete pvc 命令以觸發 DirectPV 磁碟區刪除。刪除磁碟區會導致永久資料遺失。請務必確認您要刪除的磁碟區。

# Delete `sleep-pvc` volume
kubectl delete pvc sleep-pvc

清除過時的磁碟區

當 Pods 和/或 Persistent Volume Claims 被強制刪除時,相關聯的 DirectPV 磁碟區可能不會被刪除,導致磁碟區變成過時狀態。請執行 clean 指令來移除過時的磁碟區。

$ kubectl directpv clean --all

暫停磁碟區

資料遺失
這是一個危險的操作,會導致資料遺失。

根據 Kubernetes 的設計,只有當 StatefulSet 中所有的 Pods 都處於執行狀態時,該 StatefulSet 工作負載才會啟用。有故障的磁碟區會阻止 StatefulSet 啟動。

DirectPV 提供了一個解決方案,可以將故障的磁碟區掛載到空的 /var/lib/directpv/tmp 目錄,並以唯讀權限存取,以此暫停這些故障的磁碟區。這可以透過執行 suspend volumes 指令來達成。

kubectl directpv suspend volumes --nodes node-1 --drives dm-3

被暫停的磁碟區可以在修復後恢復。恢復後,對應的磁碟區將會恢復使用各自配置的磁碟機。

這可以使用 [resume volumes]](/command-line/resume-volumes/) 指令來達成。

kubectl directpv resume volumes --nodes node-1 --drives dm-3