理解什么是 Server SAN?
在深入原理之前,我们先给 Server SAN 一个清晰的定义。

Server SAN 是一种现代的、软件定义的存储架构,它将多台通用服务器(x86 架构)本地直连的硬盘(HDD、SSD)通过一个存储软件整合成一个统一的、共享的存储资源池,并以 SAN(存储区域网络)的风格(即块存储)提供给虚拟机或应用程序使用。
核心思想: 将计算和存储资源紧密地整合在一起,打破传统 SAN 中存储阵列和计算服务器之间的物理壁垒。
关键特征:
- 软件定义: 存储的所有功能(如数据复制、精简配置、快照、高可用等)都由软件实现,而不是依赖昂贵的专用硬件。
- 通用硬件: 使用标准的、成本低廉的 x86 服务器和硬盘,避免了厂商锁定的专有存储硬件。
- 分布式架构: 存储资源池由多台服务器共同提供,数据分散存储在这些服务器的本地硬盘上。
- 以服务器为中心: 架构的起点是服务器,存储是作为服务器的延伸和扩展而存在的,这与传统 SAN 以存储阵列为中心的理念完全相反。
核心技术原理剖析
Server SAN 的实现依赖于一系列关键技术,这些技术共同作用,构建了一个高效、可靠、可扩展的存储系统。

架构基础:计算与存储融合
这是 Server SAN 的基石,每台服务器(通常称为“节点”或“Node”)不仅运行虚拟化或应用程序,同时也作为存储节点贡献出自己的本地磁盘空间。
- 节点组成:
- CPU/内存: 运行虚拟机、应用程序和存储控制软件。
- 本地磁盘: 通常分为两类:
- 高性能 SSD (日志盘/缓存盘): 用于存储元数据、写日志和缓存,以提升随机 I/O 性能。
- 大容量 HDD (数据盘): 用于存储实际的数据块。
- 网络接口卡: 通常使用高速网络(如 10GbE, 25GbE, InfiniBand)连接所有节点,用于节点间的数据同步和客户端访问。
数据放置策略:分布式与一致性哈希
这是 Server SAN 实现横向扩展和高可用的核心,当有数据需要写入时,存储软件必须决定将其放在哪个节点的哪块磁盘上。
- 传统方法的问题: 如果使用简单的哈希表,增加或减少一个节点都会导致哈希键的重新计算,从而引发大规模的数据迁移(“数据洗牌”),这在大型集群中是不可接受的。
- 解决方案: 一致性哈希
- 原理: 将整个哈希空间(0 到 2^32-1)组织成一个虚拟的环,每个节点根据其标识符(如 IP 地址)计算哈希值,并映射到环上的一个位置,每个数据块也通过其键计算哈希值,并顺时针找到距离它最近的节点进行存储。
- 优势:
- 平滑扩展: 当新增一个节点时,只会影响环上相邻节点的一小部分数据,而不是全局数据,大大减少了数据迁移量。
- 高可用: 如果一个节点故障,其负责的数据会自动由环上的下一个“虚拟邻居”节点接管。
数据保护与高可用:数据复制机制
为了防止数据因硬盘或节点故障而丢失,Server SAN 必须有强大的数据保护机制,主流的两种技术是:
-
副本:
(图片来源网络,侵删)- 原理: 将同一个数据块的多个副本(通常是 3 个,分布在不同的物理节点上)存储在集群中,任何一个副本所在的硬盘或节点发生故障,其他副本仍然可以提供服务。
- 写入过程: 客户端写入一个数据块,存储软件会将其同时复制到多个节点上,直到所有副本都写入成功才向客户端返回“写入成功”的确认。
- 读过程: 客户端读取数据时,可以从任何一个拥有该数据副本的节点读取,最近的副本会被优先选择,以降低延迟。
- 恢复: 当一个副本丢失后,系统会自动从其他副本创建一个新的副本,以维持设定的副本数量。
-
纠删码:
- 原理: 这是一种更节省空间的数据保护技术,它将一个数据块分割成多个数据块和校验块,并将它们分散存储在不同的节点上,一个典型的
k+m纠删码方案(如 6+3)会将 6 个数据块和 3 个校验块共 9 个块分布到集群中,只要有任意k(这里是 6)个块存在,就可以通过计算恢复出原始的 6 个数据块。 - 优势: 存储开销远低于副本(3副本需要 200% 的额外空间,6+3 纠删码只需要 50%),非常适合用于“冷数据”或“归档数据”场景。
- 劣势: 计算开销大,重建数据时的性能开销远高于副本,通常用于读多写少的场景。
- 原理: 这是一种更节省空间的数据保护技术,它将一个数据块分割成多个数据块和校验块,并将它们分散存储在不同的节点上,一个典型的
性能优化:日志结构化 与缓存技术
为了提升随机 I/O 性能,特别是写性能,Server SAN 普遍采用以下技术:
-
日志结构化文件系统:
- 原理: 数据不是直接覆盖写入,而是顺序追加到一个“日志”或“写时复制”区域,当需要修改一个数据块时,系统会将其标记为无效,然后在新的位置写入修改后的版本,后台会有一个“垃圾回收”进程,将这些无效的数据块空间回收。
- 优势: 极大地优化了 SSD 的写入性能,避免了 SSD 的“写放大”问题,并延长了 SSD 的寿命。
-
分层缓存:
- 原理: 利用高速的 SSD 作为缓存,来加速对慢速 HDD 的访问。
- 读缓存: 热点数据(被频繁读取的数据)会被缓存在节点的 SSD 上,后续的读取请求可以直接从 SSD 响应,速度极快。
- 写缓存: 写入请求首先被快速地记录在节点的 SSD 日志中,然后立即返回给客户端确认,后台的“后端线程”再将这些数据从 SSD 日志刷到最终的 HDD 数据盘中,这极大地降低了写入延迟。
元数据管理:集中式与分布式
元数据是关于数据的数据,如文件名、位置、大小、权限、数据块映射信息等,元数据管理的性能直接影响整个存储系统的效率。
-
集中式元数据:
- 原理: 指定一个或少数几个节点作为“主节点”或“元数据服务器”,负责管理所有的元数据。
- 优势: 管理简单,元数据查询速度快。
- 劣势: 存在单点性能瓶颈和单点故障风险,成为整个集群的扩展瓶颈。
-
分布式元数据:
- 原理: 元数据被分散存储在集群中的多个节点上,没有一个中心化的管理者。
- 优势: 没有单点瓶颈,可以随着集群规模的扩大而线性扩展。
- 劣势: 设计和实现复杂,需要解决元数据的一致性问题(通常使用 Paxos 或 Raft 等一致性协议)。
主流 Server SAN 产品实例
理解了以上原理,我们再来看看市场上的主流产品,你会发现它们都遵循了这些设计思路:
| 产品/技术 | 核心原理 |
|---|---|
| VMware vSAN | - 架构: 融合架构,vSAN 软件作为 ESXi 内核的一部分。 - 数据放置: 分布式。 - 数据保护: 副本策略(允许 RAID 配置,本质是副本的一种)。 - 性能优化: 使用日志设备(SSD)和缓存设备(SSD/PMem)。 - 元数据: 分布式管理。 |
| Nutanix AHV / NDFS | - 架构: 超融合,Nutanix Controller Virtual Machine (CVM) 负责存储功能。 - 数据放置: 一致性哈希。 - 数据保护: 副本策略(可配置副本数)。 - 性能优化: 使用 Write-Back Cache 和 Read Cache。 - 元数据: 分布式。 |
| Microsoft Storage Spaces Direct (S2D) | - 架构: 软件定义,运行在 Windows Server 之上。 - 数据放置: 分布式。 - 数据保护: 副本(本地/跨节点/机架)和纠删码。 - 性能优化: 支持缓存加速(使用 SSD/PMem)。 - 元数据: 分布式。 |
| Ceph | - 架构: 开源的、高度分布式的对象存储、块存储和文件存储系统。 - 数据放置: CRUSH 算法(一种实现一致性哈希的算法)。 - 数据保护: 副本和纠删码(非常灵活)。 - 性能优化: 使用 BlueStore 后端(日志结构化)和 RADOS 缓存。 - 元数据: 分布式。 |
Server SAN 的核心优势
- 成本效益: 使用通用硬件,降低了采购成本;通过软件定义,减少了昂贵的授权和维护费用。
- 高性能: 计算和存储融合,减少了网络延迟;通过缓存、日志结构化等技术优化了 I/O 性能。
- 高可用与数据安全: 分布式架构和副本/纠删码机制确保了数据和服务的持续可用性。
- 无缝横向扩展: 可以像搭积木一样,通过简单地增加新节点来线性地扩展存储容量和性能,而无需中断服务。
- 简化运维: 将存储资源池化,通过统一的管理界面进行管理,大大简化了传统 SAN 复杂的 LUN、 zoning、映射等配置工作。
Server SAN 的技术原理就是“软件定义 + 分布式架构 + 融合硬件”,通过一系列精心设计的算法和技术(如一致性哈希、副本/EC、日志结构化等),将大量廉价的服务器硬盘整合成一个强大、灵活、可靠的共享存储系统,完美契合了云计算和虚拟化时代的需求。
