> ## Documentation Index
> Fetch the complete documentation index at: https://docs.siflow.cn/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用动态存储卷

> 使用 StorageClass 按 PVC 的容量和访问要求自动创建 PV，并将存储卷提供给工作负载使用。

动态存储卷适用于希望按工作负载的存储申请自动创建 PV 的场景。您需要先准备 StorageClass，再创建引用该 StorageClass 的 PVC。存储插件会根据 PVC 的配置创建并绑定 PV。

## 操作前确认

* CKS 集群已安装目标存储后端对应的 CSI 驱动或存储插件。
* 通过 **卷模板** 页签创建 GPFS StorageClass 时，集群已安装 `cks-csi-plugin`，并且已有可用的 GPFS 文件系统。

## 创建或选择 StorageClass

如果集群中已有满足业务要求的 StorageClass，可以记录其名称并继续创建 PVC。需要为 GPFS 新建 StorageClass 时，优先使用卷模板。只有在已经获得 CSI 驱动及其完整参数时，才手工创建 StorageClass。

### 通过卷模板创建 GPFS StorageClass

1. 登录 [GPU 云服务控制台](https://console.siflow.cn/gpu-cloud/home)，进入 **集群** 页面。

2. 在 **集群** 页面单击目标集群名称，进入集群工作台。

3. 在左侧导航中进入 **存储** 页面，切换到 **卷模板** 页签。

4. 单击 **Create GPFS StorageClass**，配置 StorageClass。

   | 参数 | 说明 |
   | - | - |
   | **File system** | 选择用于创建动态存储卷的 GPFS 文件系统。 |
   | **FS path** | 设置在文件系统中用于创建存储卷的路径，例如 `/gpfs/data`。 |
   | **StorageClass name** | 设置 StorageClass 名称。创建 PVC 时，需要在 `storageClassName` 中使用该名称。 |
   | **Reclaim policy** | 选择 PVC 被删除后动态 PV 的回收方式。选择 **Delete** 前，确认后端数据不再需要；选择 **Retain** 后，需要由管理员继续处理保留的 PV 和数据。 |
   | **Archive when deleted** | 根据数据保留要求选择是否在删除时归档。启用前，应先确认归档位置和恢复方式。 |

5. 单击 **Create**。

<img src="https://mintcdn.com/siflow/Z3oydoQ8jnJ7q_Ig/gpu-cloud/media/cluster-create-gpfs-storageclass.png?fit=max&auto=format&n=Z3oydoQ8jnJ7q_Ig&q=85&s=c1a9a9cf19071e6578f0c81e848ee083" alt="通过卷模板创建 GPFS StorageClass" width="2368" height="1270" data-path="gpu-cloud/media/cluster-create-gpfs-storageclass.png" />

### 创建自定义 StorageClass

创建自定义 StorageClass 适用于已经从存储管理员或 CSI 插件文档中获得完整配置的场景。参数不完整时，应使用卷模板，避免创建无法正常创建存储卷的 StorageClass。

1. 登录 [GPU 云服务控制台](https://console.siflow.cn/gpu-cloud/home)，进入 **集群** 页面。

2. 在 **集群** 页面单击目标集群名称，进入集群工作台。

3. 在左侧导航中进入 **存储** 页面，切换到 **StorageClass** 页签，单击 **创建**。

4. 设置 **Name**，并在 **Spec (YAML)** 中填写 StorageClass 配置。

   以下 YAML 展示 StorageClass 的基本结构。将占位符替换为 CSI 插件要求的实际值，并根据需要补充参数。

   ```yaml theme={null}
   provisioner: <CSI_PROVISIONER_NAME>
   parameters:
     <PARAMETER_NAME>: <PARAMETER_VALUE>
   reclaimPolicy: Retain
   mountOptions: []
   volumeBindingMode: Immediate
   ```

5. 单击 **Create**。

<img src="https://mintcdn.com/siflow/Z3oydoQ8jnJ7q_Ig/gpu-cloud/media/cluster-create-storageclass.png?fit=max&auto=format&n=Z3oydoQ8jnJ7q_Ig&q=85&s=aefb7f42368d6aa600bee7f63265cdea" alt="手工创建 StorageClass" width="3276" height="1490" data-path="gpu-cloud/media/cluster-create-storageclass.png" />

## 创建 PVC

1. 在 **存储** 页面切换到 **PVC** 页签，单击 **创建**。

2. 配置 PVC。

   | 参数 | 说明 |
   | - | - |
   | **Name** | 设置 PVC 名称。工作负载通过该名称引用 PVC。 |
   | **Namespace** | 选择 PVC 所属命名空间。PVC 与引用它的工作负载必须位于同一命名空间。 |
   | **Spec (YAML)** | 填写 PVC 的 `metadata` 和 `spec`。不要填写 `apiVersion` 或 `kind`。 |

   将 `storageClassName` 替换为前一步选择或创建的 StorageClass 名称，并根据业务需要调整容量和访问模式。

   ```yaml theme={null}
   metadata:
     labels: {}
     annotations: {}
   spec:
     accessModes:
       - ReadWriteOnce
     resources:
       requests:
         storage: 50Gi
     storageClassName: gpfs-dynamic
     volumeMode: Filesystem
   ```

3. 单击 **Create**。

<img src="https://mintcdn.com/siflow/Z3oydoQ8jnJ7q_Ig/gpu-cloud/media/cluster-create-pvc.png?fit=max&auto=format&n=Z3oydoQ8jnJ7q_Ig&q=85&s=dd8180005d4c071a5b422fee4cfaec54" alt="创建动态存储卷 PVC" width="3302" height="1660" data-path="gpu-cloud/media/cluster-create-pvc.png" />

4. 返回 **PVC** 页签，确认 PVC 状态变为 `Bound`。

   状态变为 `Bound` 后，表示存储插件已创建 PV，且该 PV 已与 PVC 绑定。

## 后续操作

PVC 状态为 `Bound` 后，可以[为工作负载挂载持久化存储](/gpu-cloud/cluster/mount-persistent-storage-to-workload)。不再需要 PVC 或 PV 时，参考[清理持久化存储资源](/gpu-cloud/cluster/cleanup-persistent-storage-resources)。

## 常见问题

<Accordion defaultOpen title="PVC 长时间处于 Pending 状态怎么办？">
  确认 `storageClassName` 对应的 StorageClass 存在，并检查 CSI 驱动或存储插件是否已安装且运行正常。如果使用 GPFS，还应确认目标文件系统和创建路径可用。
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.