Skip to content

10. 面试题

面试中存储相关的问题,通常从基础协议开始,逐渐深入到 AI Infra 场景。本章按初、中、高级整理。

10.1 初级

1. 块存储、文件存储、对象存储有什么区别?

参考答案:块存储暴露原始块地址,适合数据库和文件系统底层;文件存储提供 POSIX 路径和目录树,适合通用应用;对象存储用 bucket+key+元数据,HTTP API,适合海量非结构化数据。

2. 什么是 RAID?RAID 0、1、5、10 各有什么特点?

参考答案:RAID 0 条带化性能高但无冗余;RAID 1 镜像可靠性高但容量减半;RAID 5/6 用校验信息兼顾容量和冗余;RAID 10 是镜像+条带,适合高并发读写。

3. 什么是 POSIX?对象存储为什么不完全兼容 POSIX?

参考答案:POSIX 是类 Unix 文件系统接口标准(open/read/write/rename 等)。对象存储的扁平命名空间、无追加写、无原子 rename 等特性与 POSIX 语义冲突,因此通常只提供 S3 API。

4. 解释一下对象存储的 multipart 上传。

参考答案:大文件被分成多个 part 并发上传,每个 part 有独立 ETag,最后通过 CompleteMultipartUpload 合并成完整对象。优点是提高并发和容错性。

5. 什么是最终一致性?对象存储通常是什么一致性?

参考答案:最终一致性指写入后一段时间内并非所有读取都返回最新值。现代对象存储(S3、GCS 等)通常提供强一致性。

10.2 中级

6. 复制和纠删码有什么区别?AI 场景如何选择?

参考答案:复制保存多份完整数据,简单但利用率低;纠删码切分数据并生成校验块,利用率高但计算和恢复开销大。热数据/关键元数据常用复制,冷数据/大容量对象存储常用纠删码。

7. 什么是 CAP 定理?存储系统通常怎么选择?

参考答案:CAP 指一致性、可用性、分区容忍性,最多同时满足两个。分布式存储通常选 CP 或 AP。AI checkpoint 等场景优先 CP。

8. 解释 Kubernetes 中 PV、PVC、StorageClass 的关系。

参考答案:StorageClass 是存储模板;PVC 是应用对存储的请求;PV 是实际分配的卷。PVC 绑定到满足条件的 PV,由 StorageClass 指定的 provisioner 动态创建。

9. 什么是 CSI?它解决了什么问题?

参考答案:CSI 是 Container Storage Interface,标准化容器与存储系统的集成。它让存储厂商可以独立开发 driver,无需修改 Kubernetes 核心代码。

10. 并行文件系统和 NFS 有什么区别?

参考答案:并行文件系统(Lustre/GPFS/WEKA)通过多个数据服务器并行提供高吞吐共享访问;NFS 基于单服务器架构,容易成为瓶颈。

11. 为什么 AI 训练 checkpoint 通常先写本地 NVMe?

参考答案:本地 NVMe 延迟低、吞吐高,可以减少训练阻塞时间;之后再异步上传到对象存储或并行文件系统做持久化。

12. 对象存储的生命周期管理有什么用?

参考答案:自动将旧对象转换到更便宜的存储类型(如 IA、归档)或删除,降低成本。

10.3 高级

13. 设计一个万卡 AI 训练集群的存储架构。

参考答案要点

  • 每个计算节点配置本地 NVMe 作为 checkpoint 热缓冲;
  • 使用并行文件系统(Lustre/WEKA)承载训练数据集和共享模型仓库;
  • 对象存储用于长期归档、artifact 和日志;
  • 异步 checkpoint 机制,本地写入后后台上传到对象存储;
  • 热/温/冷分层,配合生命周期管理降低成本;
  • 监控 checkpoint 耗时、存储带宽、IOPS、容量。

14. PyTorch Distributed Checkpoint 相比 torch.save 有什么优势?

参考答案要点

  • 每个 rank 独立写自己的 shard,消除单文件竞争;
  • .metadata 驱动加载,支持不同并行策略间恢复;
  • 使用 fsspec 统一本地和对象存储后端;
  • 支持异步保存和分片优化。

15. LLM 推理服务冷启动慢,如何从存储角度优化?

参考答案要点

  • 节点级本地缓存共享已下载权重;
  • 使用 JuiceFS/Alluxio 等带缓存的 POSIX 层;
  • 热门模型预加载到节点镜像;
  • 使用对象存储的 multipart/并发下载;
  • 共享 ReadOnlyMany PVC。

16. 比较 Local PV 和 EBS/RBD 在 AI 训练中的 trade-off。

参考答案:Local PV 延迟低、吞吐高,但 Pod 绑定节点、数据不随 Pod 迁移;EBS/RBD 可以跨节点迁移,但网络延迟和带宽受限。checkpoint 等临时高吞吐数据适合 Local PV,状态服务适合 EBS/RBD。

17. 海量小对象对对象存储有什么问题?如何解决?

参考答案:LIST/HEAD 元数据开销大、请求成本高。解决方案:合并小对象(如 parquet、tar)、使用前缀索引、选择高元数据性能的对象存储、使用生命周期规则。

18. 如何保证 checkpoint 不丢且可恢复?

参考答案

  • 写入完成后显式 fsync/close;
  • 保存 manifest 记录所有 shard;
  • 加载前校验 checksum;
  • 保留多个历史版本;
  • 异地/跨可用区备份。

10.4 场景设计题

19. 设计一个多区域 LLM 推理服务的模型分发方案。

参考答案要点

  • 模型权重放在中心对象存储;
  • 每个区域部署带缓存的本地对象存储/文件系统;
  • Pod 启动时优先从区域缓存加载;
  • 新版本发布时预热到各区域;
  • 监控加载延迟和缓存命中率。

20. 如何在 Kubernetes 上为训练 Job 提供高吞吐本地 NVMe checkpoint?

参考答案要点

  • 使用 Local Static Provisioner 管理节点本地 NVMe;
  • StorageClass 设置 volumeBindingMode: WaitForFirstConsumer
  • Pod 声明 Local PV,训练代码写入本地路径;
  • 异步 sidecar 或训练框架将 checkpoint 上传到对象存储;
  • Job 完成后清理或保留关键 checkpoint。

Released under CC-BY-SA-4.0 License.