CPFS(Cloud Paralleled File System)是一种并行文件系统,其数据存储在集群中的多个数据节点上,并支持多个客户端同时访问,从而为大型高性能计算集群提供高IOPS、高吞吐量以及低延迟的数据存储服务。本文介绍如何在RDS Custom容器系列节点中挂载并使用CPFS文件系统。
前提条件
步骤一:创建CPFS文件系统和协议服务
CPFS仅支持静态挂载。您需要先创建CPFS文件系统以及对应的协议服务,并获取挂载地址以便后续挂载使用。
请在RDS Custom容器系列节点所属地域创建CPFS文件系统。
CPFS文件系统的VPC必须与RDS Custom容器系列节点所处的ACK集群的VPC一致。
如果使用已有CPFS文件系统,请在NAS控制台的文件系统列表页面单击目标CPFS文件系统,在基本信息页面确认CPFS版本号为2.3.0及以上。如果不满足,请创建新的CPFS文件系统。
在执行数据流动任务前,需要在CPFS文件系统中指定目录作为数据流动的Fileset。
在进行CPFS Fileset与OSS Bucket之间的数据流动之前,需要确保已经创建对应的数据流动。
配置导出目录时,协议导出选择Fileset。
请使用RDS Custom容器系列节点对应的VPC和交换机创建协议服务,并生成挂载点。
如果使用已有协议服务,请确认协议服务所使用的VPC是否与RDS Custom容器系列节点一致(CPFS不支持跨VPC挂载)。如果不满足,请重新创建协议服务。
获取协议服务的挂载地址。
在协议服务页面,单击导出目录,然后在挂载地址列复制并保存挂载地址。挂载地址包含挂载点域名以及挂载目录,如果指定导出的是
/
目录,则挂载地址显示为cpfs-****.<Region ID>.cpfs.aliyuncs.com:/share
。
步骤二:创建静态卷PV
执行以下命令创建静态卷PV。
kubectl create -f pv-cfps.yaml
部分参数要求如下:
mountProtocol:必须设置为
cpfs-nfs
。server:为目标CPFS挂载地址前的域名,比如
cpfs-****.<Region ID>.cpfs.aliyuncs.com
。path:为
/share/{CPFS Fileset的目录名}/{OSS下的模型路径}
。例如/share/models/Qwen3-32B/
。volumeHandle:为目标CPFS的实例ID。
以下为创建静态卷PV的cpfs-test
示例文件。
apiVersion: v1
kind: PersistentVolume
metadata:
name: cpfs-test # PV的名称,需唯一
labels:
alicloud-pvname: cpfs-test # 自定义标签,用于标识PV
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 1Ti
csi:
driver: nasplugin.csi.alibabacloud.com
volumeAttributes:
mountProtocol: cpfs-nfs # 默认必填
server: cpfs-****.<Region ID>.cpfs.aliyuncs.com # 目标CPFS的挂载地址
path: /share/models/Qwen3-32B/ # 为/share/{CPFS Fileset的目录名}/{OSS下的模型路径}
volumeHandle: cpfs-03ab50a14b9e**** # 目标CPFS的实例ID
步骤三:创建存储声明PVC
执行以下命令创建存储声明PVC。
kubectl create -f pvc-cfps.yaml
以下为创建存储声明PVC的cpfs-test.yaml示例文件。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cpfs-test
spec:
volumeName: cpfs-test
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Ti
步骤四:部署Pod并挂载PVC
执行以下命令,部署Pod并挂载PVC。
kubectl apply -f pod.yaml
以下为部署Pod的sglang-qwen3.yaml示例文件。
# Pod配置
apiVersion: v1
kind: Pod
metadata:
name: sglang-qwen3
spec:
containers:
- command:
- sh
- -c
- echo hello world; sleep infinity;
image: aliclouddb-pub-registry-vpc.cn-beijing.cr.aliyuncs.com/aliclouddb-public/des-ai-nv:25.05-sglang0.4.6.post4-pytorch2.6-cu124-20250513-serverless
imagePullPolicy: IfNotPresent
name: sglang
ports:
- containerPort: 8000
name: restful
protocol: TCP
resources:
requests:
cpu: "80"
memory: "300Gi"
nvidia.com/gpu: "2" # 请求2个GPU
limits:
cpu: "80"
memory: "300Gi"
nvidia.com/gpu: "2" # 限制2个GPU
volumeMounts:
- name: cpfs-volume
mountPath: "/data"
volumes:
- name: cpfs-volume
persistentVolumeClaim:
claimName: cpfs-test
restartPolicy: Always
nodeSelector:
alibabacloud.com/virtual-node: "true"
tolerations:
- effect: NoSchedule
key: virtual-kubelet.io/provider
value: aliclouddb
步骤五:验证挂载结果
执行以下命令,验证挂载结果。
kubectl exec <pod名称> -- df -h /data
示例:
kubectl exec sglang-qwen3 -- df -h /data
Filesystem Size Used Avail Use% Mounted on
cpfs-****.cn-beijing.cpfs.aliyuncs.com:/share/models 3.6T 416M 3.6T 1% /dat