Skip to content

2. 核心思想

存储系统的核心问题可以概括为一句话:把数据可靠地放下去,并在需要的时候高效地取出来。 围绕这句话,衍生出一整套概念、协议和工程 trade-off。

2.1 存储抽象栈

从应用到物理设备,存储通常被组织成多层抽象:

每一层都向上层屏蔽下层的复杂性,同时也带来自己的开销和限制。

2.2 三种核心存储语义

语义接口典型系统适用场景
块(Block)固定大小的块地址读写SAN、EBS、本地磁盘数据库、文件系统底层、裸设备
文件(File)路径 + POSIX APIext4、xfs、NFS、Lustre通用应用、训练数据、源代码
对象(Object)bucket + key + 元数据S3、GCS、MinIO、Ceph模型权重、artifact、日志、备份

2.3 POSIX vs S3 API

维度POSIXS3 API
命名层级目录树扁平 bucket + key
一致性强一致(本地 FS)最终一致(早期),现在多为强一致
原子性rename 原子无原生 rename,需 copy+delete
语义支持追加、随机写整体覆盖写,无追加
扩展传统文件系统HTTP/REST,易扩展

AI 平台中,训练数据和代码通常走 POSIX(并行文件系统),模型 artifact 和 checkpoint 通常走 S3 API。

2.4 一致性模型

一致性描述的是写入操作完成后,其他读者何时能看到新数据。

模型含义例子
强一致写入完成后,所有后续读取都返回最新值本地文件系统、多数现代对象存储
读写一致自己写入的数据,自己一定能读到S3 默认行为
最终一致一段时间后所有读取都返回最新值早期 S3、部分跨地域复制

对于 checkpoint 保存,强一致是刚需;否则训练恢复时可能读到旧版本,导致从头训练。

2.5 耐久性:复制 vs 纠删码

为了保证数据不因为硬件故障而丢失,存储系统通常采用两种机制:

复制(Replication)

同一份数据保存多个副本,通常是 3 副本。

  • 优点:简单、读取快、恢复简单。
  • 缺点:存储利用率低(3 副本只有 33% 有效数据)。

纠删码(Erasure Coding)

把数据切成 k 个数据块,生成 m 个校验块,任意 k 个块即可恢复完整数据。例如 RS(10,4) 表示 10 个数据块 + 4 个校验块。

  • 优点:存储利用率高(10/14 ≈ 71%)。
  • 缺点:写入时需要计算校验块,恢复时需要大量计算和网络带宽。

2.6 延迟、吞吐与 IOPS

指标含义AI 场景关注点
延迟(Latency)单次 I/O 的响应时间checkpoint 保存完成时间、模型加载 TTFB
吞吐(Throughput)单位时间传输的数据量大文件顺序读写、数据集加载
IOPS每秒 I/O 操作数海量小文件元数据操作、随机读

AI 训练通常追求高吞吐的顺序读写,而模型服务更关注低延迟加载

2.7 数据局部性、缓存与分层

数据局部性原则:把经常访问的数据放在离计算更近、更快的地方。

  • 热层:GPU 显存、本地 NVMe,容量小、速度快、贵;
  • 温层:并行文件系统、对象存储,容量大、速度中等;
  • 冷层:归档存储(Glacier、OSS 归档),容量极大、速度慢、便宜。

2.8 快照、克隆与瘦置备

技术作用AI 场景
快照(Snapshot)某一时刻的数据只读副本保存训练中间状态
克隆(Clone)快照的可写副本快速复制环境做实验
瘦置备(Thin Provisioning)按需分配物理空间避免预分配大量未使用空间

2.9 CAP 在存储中的体现

存储系统同样受 CAP 定理约束:

  • C(Consistency):多个副本之间的数据一致性;
  • A(Availability):系统在部分故障时仍能响应;
  • P(Partition Tolerance):网络分区时仍能运行。

分布式存储通常需要在 C 和 A 之间做选择。AI 训练 checkpoint 通常优先保证 CP(一致性和分区容忍),因为读到错误数据比短暂不可用危害更大。

2.10 一句话总结

存储系统的所有设计,都是在成本、性能、可靠性和一致性之间做 trade-off;理解这些 trade-off,是做出正确选型的前提。

Released under CC-BY-SA-4.0 License.