管理卷

前提条件

添加卷

参考 卷配置指南

列出卷

要获取 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

清理陈旧的卷

当 Pod 和/或 Persistent Volume Claim 被强制删除时,相关的 DirectPV 卷可能会被遗留下来,导致卷变得陈旧。运行 clean 命令可以删除陈旧的卷。

$ kubectl directpv clean --all

挂起卷

数据丢失
这是一种危险的操作,会导致数据丢失。

根据 Kubernetes 的设计,StatefulSet 工作负载只有在所有 Pod 都处于运行状态时才会处于活动状态。故障的卷会阻止 StatefulSet 启动。

DirectPV 提供了一种解决方法,通过将失败的卷挂载到空目录 /var/lib/directpv/tmp 上,并以只读方式访问,来挂起失败的卷。这可以通过执行 挂起卷 命令来完成。

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

挂起的卷可以在修复后恢复。恢复后,相应的卷将恢复使用各自分配的驱动器。

这可以通过使用 [恢复卷](/command-line/resume-volumes/) 命令来完成。

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