07 - AI 公司 PV/PVC 存储规划
存储需求矩阵
| 数据类型 | 大小 | 访问模式 | 读写特征 | 生命周期 | 推荐存储 |
|---|---|---|---|---|---|
| 训练数据集 | TB 级 | 多 Pod 读 | 高吞吐顺序读 | 长期 | NAS / OSS |
| 模型 Checkpoint | GB-TB 级 | 多 Pod 读写 | 频繁写入 | 训练期间 | NAS |
| 模型文件 | GB 级 | 多 Pod 读 | 低频读取 | 长期 | NAS / OSS |
| 数据库 | GB 级 | 单 Pod 读写 | 高 IOPS 随机读写 | 长期 | 云盘 SSD |
| 日志/指标 | GB-TB 级 | 写入后查询 | 追加写入 | 保留 30 天 | 云盘 / OSS |
| 临时缓存 | GB 级 | 单 Pod | 高速读写 | Pod 生命周期 | emptyDir (SSD) |
| 原始采集数据 | TB-PB 级 | 批量写入/读取 | 大文件 | 长期归档 | OSS |
| OTA 更新包 | GB 级 | 只读分发 | 低频 | 版本管理 | OSS |
阿里云存储类型对比
┌────────────────────────────────────────────────────────────────┐
│ ACK 存储选择指南 │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ 云盘 (EBS) │ │ NAS │ │ OSS │ │
│ │ │ │ │ │ │ │
│ │ 块存储 │ │ 文件存储 │ │ 对象存储 │ │
│ │ 高 IOPS │ │ 共享读写 │ │ 海量低成本 │ │
│ │ RWO 单挂载 │ │ RWX 多挂载 │ │ 通过 SDK/CSI │ │
│ │ │ │ │ │ │ │
│ │ 适用: │ │ 适用: │ │ 适用: │ │
│ │ 数据库 │ │ 训练数据 │ │ 数据归档 │ │
│ │ 单实例缓存 │ │ 模型共享 │ │ 日志存储 │ │
│ │ │ │ Checkpoint │ │ OTA 包分发 │ │
│ │ │ │ │ │ 原始数据 │ │
│ │ 价格: 中 │ │ 价格: 中高 │ │ 价格: 低 │ │
│ └──────────────┘ └──────────────┘ └──────────────────┘ │
└────────────────────────────────────────────────────────────────┘| 特性 | 云盘 SSD | NAS 通用型 | NAS 极速型 | OSS |
|---|---|---|---|---|
| 访问模式 | RWO | RWX | RWX | 通过 SDK |
| IOPS | 50,000+ | 15,000 | 100,000 | N/A |
| 吞吐 | 350 MB/s | 600 MB/s | 1,200 MB/s | 高 |
| 最小购买 | 20 GB | 按量 | 按量 | 按量 |
| 价格/GB/月 | ~0.8 元 | ~0.35 元(容量型) | ~1.85 元 | ~0.12 元 |
| 数据安全 | 三副本 | 多 AZ | 多 AZ | 多 AZ |
StorageClass 配置
yaml
# 1. 云盘 SSD(数据库用)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-disk-ssd
provisioner: diskplugin.csi.alibabacloud.com
parameters:
type: cloud_essd # ESSD 性能更好
performanceLevel: PL1 # PL0/PL1/PL2/PL3
reclaimPolicy: Retain # 数据库数据保留
allowVolumeExpansion: true # 允许在线扩容
volumeBindingMode: WaitForFirstConsumer
---
# 2. NAS 通用型(训练数据/模型共享)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-nas
provisioner: nasplugin.csi.alibabacloud.com
parameters:
volumeAs: subpath
server: "<nas-id>.cn-hangzhou.nas.aliyuncs.com"
reclaimPolicy: Retain
mountOptions:
- nolock
- proto=tcp
- rsize=1048576
- wsize=1048576
---
# 3. NAS 极速型(高性能训练 I/O)
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alicloud-nas-extreme
provisioner: nasplugin.csi.alibabacloud.com
parameters:
volumeAs: filesystem
fileSystemType: extreme
storageType: standard
reclaimPolicy: Retain按 Namespace 规划 PVC
training (训练命名空间)
yaml
# 训练数据集 — NAS 共享读,所有训练 Pod 挂载
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: datasets
namespace: training
spec:
accessModes: [ReadWriteMany]
storageClassName: alicloud-nas
resources:
requests:
storage: 2Ti
---
# Checkpoint 和模型输出 — NAS 共享读写
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: model-outputs
namespace: training
spec:
accessModes: [ReadWriteMany]
storageClassName: alicloud-nas
resources:
requests:
storage: 500Gi
---
# 高性能缓存 — 训练热数据加速
# 使用 NAS 极速型或 emptyDir (本地 SSD)训练 Pod 中的使用方式:
yaml
spec:
initContainers:
- name: data-warmup
image: busybox
command: ["cp", "-r", "/datasets/current-experiment/", "/fast-cache/"]
volumeMounts:
- name: datasets
mountPath: /datasets
readOnly: true
- name: fast-cache
mountPath: /fast-cache
containers:
- name: train
volumeMounts:
- name: datasets
mountPath: /data
readOnly: true # 训练数据只读
- name: model-outputs
mountPath: /output # Checkpoint 输出
- name: fast-cache
mountPath: /fast-data # 本地高速缓存
- name: shm
mountPath: /dev/shm # NCCL 共享内存
volumes:
- name: datasets
persistentVolumeClaim:
claimName: datasets
- name: model-outputs
persistentVolumeClaim:
claimName: model-outputs
- name: fast-cache
emptyDir:
sizeLimit: 100Gi # 节点本地 SSD
- name: shm
emptyDir:
medium: Memory
sizeLimit: 16Giserving (推理/API 命名空间)
yaml
# 模型文件 — NAS 只读挂载(从 training 输出同步过来)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: model-store
namespace: serving
spec:
accessModes: [ReadOnlyMany] # 推理只需要读
storageClassName: alicloud-nas
resources:
requests:
storage: 200Gi推理 Pod 中的使用方式:
yaml
spec:
containers:
- name: inference
volumeMounts:
- name: models
mountPath: /models
readOnly: true # 模型文件只读
volumes:
- name: models
persistentVolumeClaim:
claimName: model-storedata (数据平台命名空间)
yaml
# 标注数据 — NAS 读写
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: annotation-data
namespace: data
spec:
accessModes: [ReadWriteMany]
storageClassName: alicloud-nas
resources:
requests:
storage: 1Tiinfra (基础设施命名空间)
yaml
# PostgreSQL 数据库 — 云盘 SSD 高 IOPS
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-data
namespace: infra
spec:
accessModes: [ReadWriteOnce] # 数据库单实例
storageClassName: alicloud-disk-ssd
resources:
requests:
storage: 100Gi
---
# Redis 持久化 — 云盘 SSD
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-data
namespace: infra
spec:
accessModes: [ReadWriteOnce]
storageClassName: alicloud-disk-ssd
resources:
requests:
storage: 20Gi
---
# Prometheus 监控数据 — 云盘
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: prometheus-data
namespace: infra
spec:
accessModes: [ReadWriteOnce]
storageClassName: alicloud-disk-ssd
resources:
requests:
storage: 200Gi
---
# Grafana 仪表盘 — 云盘(小容量)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: grafana-data
namespace: infra
spec:
accessModes: [ReadWriteOnce]
storageClassName: alicloud-disk-ssd
resources:
requests:
storage: 10Gi数据流转路径
机器人端采集数据
│ 上传
▼
OSS (原始数据归档) ←── 成本最低,PB 级
│ 数据处理 Job
▼
NAS (datasets PVC) ←── 训练可直接访问
│ 训练 Pod 读取
▼
NAS (model-outputs PVC) ←── Checkpoint + 最终模型
│ 模型评估通过
▼
NAS (model-store PVC) ←── 推理服务加载
│ 同时归档一份
▼
OSS (模型归档) ←── 版本管理,长期保存存储成本预估(月度)
| 存储 | 类型 | 容量 | 月费 |
|---|---|---|---|
| NAS datasets | 通用型 | 2 TB | ~700 元 |
| NAS model-outputs | 通用型 | 500 GB | ~175 元 |
| NAS model-store | 通用型 | 200 GB | ~70 元 |
| NAS annotation-data | 通用型 | 1 TB | ~350 元 |
| 云盘 (PG+Redis+Prometheus) | ESSD PL1 | 330 GB | ~264 元 |
| OSS (原始数据+归档) | 标准型 | 5 TB | ~600 元 |
| 总计 | ~2,159 元 |
关键实践
1. NAS 挂载优化
yaml
mountOptions:
- nolock # 禁用文件锁(提升并发性能)
- proto=tcp # 使用 TCP 协议
- rsize=1048576 # 读缓冲区 1MB
- wsize=1048576 # 写缓冲区 1MB
- hard # 网络异常时持续重试
- noresvport # 不使用保留端口(允许更多连接)2. 数据生命周期管理
热数据 (最近训练使用) → NAS / 本地 SSD 缓存
温数据 (历史数据集) → NAS 容量型
冷数据 (归档) → OSS 低频 / 归档型3. 备份策略
- 数据库:云盘快照(每天自动)
- NAS:NAS 快照(每周)+ 跨区域复制
- 模型文件:训练完成后自动上传 OSS
- 配置:GitOps 管理所有 YAML,Git 即备份
4. reclaimPolicy 选择
- 数据库/重要数据:
Retain(PVC 删除后保留数据,手动清理) - 临时数据/可重建数据:
Delete(PVC 删除后自动清理)
