Skip to content

07 - AI 公司 PV/PVC 存储规划

存储需求矩阵

数据类型大小访问模式读写特征生命周期推荐存储
训练数据集TB 级多 Pod 读高吞吐顺序读长期NAS / OSS
模型 CheckpointGB-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 包分发       │     │
│  │             │  │              │  │ 原始数据         │     │
│  │ 价格: 中    │  │ 价格: 中高   │  │ 价格: 低         │     │
│  └──────────────┘  └──────────────┘  └──────────────────┘     │
└────────────────────────────────────────────────────────────────┘
特性云盘 SSDNAS 通用型NAS 极速型OSS
访问模式RWORWXRWX通过 SDK
IOPS50,000+15,000100,000N/A
吞吐350 MB/s600 MB/s1,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: 16Gi

serving (推理/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-store

data (数据平台命名空间)

yaml
# 标注数据 — NAS 读写
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: annotation-data
  namespace: data
spec:
  accessModes: [ReadWriteMany]
  storageClassName: alicloud-nas
  resources:
    requests:
      storage: 1Ti

infra (基础设施命名空间)

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 PL1330 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 删除后自动清理)

下一步

08 - AI 公司 ACR 镜像仓库规划