> For the complete documentation index, see [llms.txt](https://docs.verge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verge.io/learn-the-platform/zh/mo-kuai-1-jia-gou-ji-chu/03-vsan-vergefs.md).

# vSAN / VergeFS：软件定义存储

## 什么是 vSAN / VergeFS？

**vSAN** （虚拟存储区域网络，Virtual Storage Area Network），也称为 **VergeFS**，是内置于每个 VergeOS 部署中的软件定义分布式存储系统。它将所有参与存储的节点上的物理（或虚拟）驱动器池化为整个系统共享的单一存储资源。

无需外部 SAN、NAS 或第三方存储软件。vSAN 直接集成在 VergeOS 平台中，并在块级别运行，为所有 VM 磁盘、快照、ISO 镜像和系统元数据提供存储。

主要特性：

* **块级架构** — VM 磁盘被划分为多个块，每个块都由内容寻址哈希标识
* **跨节点分布** — 数据块分布在集群中所有参与存储的节点上
* **分层存储** — 0 层保留给 vSAN 元数据；1–5 层是工作负载存储层，可将介质类型与工作负载需求相匹配
* **内联重复数据删除** — 基于哈希的块标识可在所有层之间实现自动重复数据删除
* **自我修复** — 自动故障检测并切换到冗余副本。重建由操作员发起（热备盘或硬件更换）；随后 Journal Walk 会从冗余副本中重新复制缺失的块。自我修复在配置的冗余级别（N+1 或 N+2）内运行；超出冗余能力的故障（例如同时丢失的节点数超过系统可容忍范围）可能会导致修复卡住，需要人工干预并联系支持。

{% hint style="info" %}
**VMware 桥接**

如果你熟悉 vSAN 的缓存 + 容量模型以及按 VM 的存储策略？VergeFS 使用 5 个工作负载层（T1–T5）加 1 个元数据层（0 层），默认在所有层之间进行内联重复数据删除，采用统一的系统级冗余设置（N+1/N+2），并支持 HCI 和 UCI 两种部署。压缩仅在站点同步复制期间生效——静态存储时不压缩。
{% endhint %}

{% hint style="info" %}
**Nutanix 桥接**

如果你熟悉 Nutanix DSF 及其每节点一个 CVM 的架构？VergeFS 作为集成的操作系统服务运行——没有独立 CVM，也没有每节点的 CPU/RAM 开销。它使用 5 个工作负载层（T1–T5）加 1 个元数据层（0 层），没有自动冷热迁移，采用统一的系统级 N+1/N+2 冗余设置，始终开启内联重复数据删除，并支持 HCI 和 UCI 两种部署。
{% endhint %}

## 层级系统

VergeOS vSAN 将驱动器组织为 **层级** ，编号从 0 到 5。每一层都针对不同类型的存储介质和工作负载特征而设计。在安装期间，每个物理驱动器都会被分配到特定层级，该分配决定驱动器将如何被系统使用。

### 0 层：元数据

* **硬件**：高耐久 NVMe SSD
* **用途**：仅存储 vSAN 文件系统索引和内部元数据
* **关键要求**：0 层只存在于控制器节点上——N+1 时为节点 1–2，N+2 时为节点 1–3
* **最佳实践**：使用额定 3 DWPD（每日全盘写入次数）或同等规格的企业级 NVMe 驱动器（例如，如果 vSAN 元数据只需要 500 GB，那么一块更大的 2 TB、1 DWPD 评级的驱动器可提供可比的总写入耐久性）；在 0 层至少保持 30% 的可用空间

### 1–5 层：工作负载数据

| 层级      | 硬件           | 用途        | 典型用例            |
| ------- | ------------ | --------- | --------------- |
| **1 层** | 高耐久 NVMe SSD | 写入密集型工作负载 | 高性能数据库、事务日志     |
| **2 层** | 中端 SSD       | 读写均衡型工作负载 | 通用 VM、混合应用、开发环境 |
| **3 层** | 读优化 SSD      | 读取密集型工作负载 | 内容分发、应用仓库、参考数据  |
| **4 层** | 大容量 HDD      | 访问频率较低的数据 | 文件服务器、备份目标      |
| **5 层** | 归档级 HDD      | 冷存储和长期保留  | 合规归档、备份归档       |

并非每个部署都会使用全部五个工作负载层。常见的生产配置可能只使用 1 层（用于性能敏感型工作负载的 NVMe）和 4 层（用于容量的 HDD）。Terraform playground 仅使用 0 层和 1 层。

```mermaid
graph LR
    subgraph "vSAN 层级架构"
        T0["0 层<br/>元数据<br/>NVMe"]
        T1["1 层<br/>高性能<br/>NVMe SSD"]
        T2["2 层<br/>混合工作负载<br/>SSD"]
        T3["3 层<br/>读优化<br/>SSD"]
        T4["4 层<br/>容量<br/>HDD"]
        T5["5 层<br/>归档<br/>HDD"]
    end

    T0 -.->|"哈希映射<br/>查找"| T1
    T0 -.->|"哈希映射<br/>查找"| T2
    T0 -.->|"哈希映射<br/>查找"| T3
    T0 -.->|"哈希映射<br/>查找"| T4
    T0 -.->|"哈希映射<br/>查找"| T5

    style T0 fill:#e3f2fd,stroke:#1565c0
    style T1 fill:#e8f5e9,stroke:#2e7d32
    style T2 fill:#e8f5e9,stroke:#2e7d32
    style T3 fill:#fff3e0,stroke:#e65100
    style T4 fill:#fce4ec,stroke:#c62828
    style T5 fill:#f3e5f5,stroke:#6a1b9a
```

{% hint style="info" %}
**VMware 桥接**

VMware vSAN 采用缓存 + 容量分层，并使用按 VM 的存储策略（可容忍故障数、条带宽度、纠删码）。VergeOS 使用 6 个显式层级且没有按 VM 策略——在磁盘配置时选择层级，冗余（N+1/N+2）在系统范围内设置。
{% endhint %}

{% hint style="info" %}
**Nutanix 桥接**

Nutanix AOS 将数据组织为存储池中的存储容器，并使用智能分层引擎（ILM）根据访问模式在 SSD 和 HDD 之间移动数据块。VergeOS 不会在层级之间移动数据——驱动器在安装时分配，数据会保留在写入的位置，以换取明确的放置和可预测的性能。
{% endhint %}

## 数据如何分布

vSAN 使用一种 **基于哈希的分布算法** 将数据块分散到集群中的所有节点。其工作方式如下：

### 块创建与哈希

1. 当 VM 写入数据时，vSAN 会将写入内容划分为 **数据块**
2. 每个块都会被分配一个 **内容寻址哈希** ，作为其唯一标识符
3. 该哈希决定块的存储位置，并用于实现重复数据删除——如果两个块生成相同的哈希，则只存储一份副本

### 跨节点分布

数据块分布在集群中的多个节点上，而不是存储在单个节点上。这种设计提供了：

* **均衡性能** — I/O 负载分散到所有参与存储的节点上
* **容错能力** — 没有任何单个节点持有某个数据集的全部副本
* **高效扩展** — 添加节点会自动扩展存储池并触发重新平衡

```mermaid
graph TB
    VM["VM 写入操作"]
    VM --> HASH["块哈希<br/>(每个块一个加密哈希)"]
    HASH --> DIST["基于哈希的分布"]
    DIST --> N1["节点 1<br/>主副本：块 A、C<br/>冗余副本：块 B"]
    DIST --> N2["节点 2<br/>主副本：块 B<br/>冗余副本：块 A、C"]
    DIST --> N3["节点 3<br/>主副本：块 D<br/>冗余副本：块 E"]
    DIST --> N4["节点 4<br/>主副本：块 E<br/>冗余副本：块 D"]

    style VM fill:#e3f2fd,stroke:#1565c0
    style HASH fill:#fff3e0,stroke:#e65100
    style DIST fill:#e8f5e9,stroke:#2e7d32
```

### 读取与写入路径

**读取：**

* 系统通过 0 层哈希映射查找块的位置
* 读取优先使用 **主副本** ，以提高效率
* 如果 VM 运行在与冗余副本相同的节点上，vSAN 会读取 **本地副本** 以尽量减少网络流量
* 如果主副本速度过慢或无响应，vSAN 会自动切换到冗余副本

**写入：**

* 新块会被哈希并放置到最佳节点上
* 主副本和 **冗余副本** 会同时写入
* 只有在两个副本都确认后，写入才会被确认
* 0 层元数据会更新以跟踪新块的位置

## 冗余与自我修复

vSAN 会为每个数据块维护多个副本，以防范硬件故障。冗余级别——也称为 **复制因子（RF）** — 在系统级别配置，并按层级生效。RF 就是保留副本的数量： **RF2** （N+1）保留 2 份副本， **RF3** （N+2）保留 3 份。

### 冗余级别

| 功能             | N+1（RF2）— 默认 | N+2（RF3） |
| -------------- | ------------ | -------- |
| **数据副本数**      | 2            | 3        |
| **可容忍的同时故障数**  | 1 个节点        | 2 个节点    |
| **最少控制器节点数**   | 2            | 3        |
| **推荐节点数**      | 3            | 5        |
| **存储开销** （去重前） | 约 2 倍        | 约 3 倍    |

* **N+1（RF2）** 是默认设置，适用于大多数生产环境
* **N+2（RF3）** 适用于超关键工作负载或硬件更换较慢的远程站点
* 冗余级别通常在安装期间设置，并在整个系统范围内生效
* 故障只会影响失败驱动器所在的层级——其他层级仍可完全运行

### 自我修复过程

当节点或驱动器发生故障时，vSAN 会自动切换到冗余副本——VM 继续运行且没有停机，但受影响的层级会以降低的冗余运行。恢复完整冗余由操作员驱动：可以针对指定的热备盘启动修复，或者更换故障驱动器（或节点），然后从那里开始重建：

```mermaid
flowchart LR
    A["检测到驱动器或节点<br/>故障"] --> B["切换到<br/>冗余副本"]
    B --> C["VM 继续<br/>运行（无停机）"]
    B --> D["层级以<br/>降低冗余运行"]
    D --> E{"操作员操作"}
    E -->|"在热备盘上<br/>启动修复"| F["开始重建"]
    E -->|"更换故障的<br/>驱动器或节点"| F
    F --> G["恢复完整<br/>冗余"]

    style A fill:#fce4ec,stroke:#c62828
    style C fill:#e8f5e9,stroke:#2e7d32
    style D fill:#fff3e0,stroke:#e65100
    style G fill:#e8f5e9,stroke:#2e7d32
```

1. **检测** — vSAN 会自动检测驱动器或节点故障；拓扑变化会触发 **完整 Journal Walk** ，以重新验证受影响层级中的冗余
2. **故障切换** — 读取和写入会被重定向到冗余副本，VM 无需停机
3. **冗余降低** — 受影响的层级在操作员介入之前会以非完整冗余运行
4. **重建** — 操作员要么针对指定的热备盘发起修复，要么更换故障驱动器/节点。随后 vSAN 会重新复制受影响的块，以恢复完整冗余

{% hint style="info" %}
**什么是 Journal Walk？**

一个 **Journal Walk** 是 vSAN 在后台对某个存储层级的遍历，用于重建块引用计数（它们从不持久化存储）、验证冗余，并驱动所需的修复。它有三种形式： **完整遍历** （由控制器启动或拓扑变化触发，例如驱动器/节点故障，或节点被添加/移除）， **混合遍历** （当非活动控制器的其他节点重启时），以及常规的 **差异遍历**。在 vSAN 层级仪表板上， `working` 标志表示遍历正在进行，而 `Walk Progress` 显示其百分比。请参阅 [了解 vSAN 层级状态 / Journal Walks](/knowledge-base/zh/storage-vsan/understanding-journal-walks-and-vsan-tier-status.md) 以获取完整说明。
{% endhint %}

{% hint style="info" %}
**VMware 桥接**

如果你熟悉 vSAN 的按 VM 存储策略（FTT、条带宽度）和基于超时的自动重建？VergeOS 使用统一的系统级 N+1 或 N+2 设置，并在操作员采取动作后恢复冗余——可针对热备盘启动修复，或更换故障硬件。
{% endhint %}

{% hint style="info" %}
**Nutanix 桥接**

如果你熟悉 Nutanix 的按容器复制因子和由 Curator 驱动的重新平衡？VergeOS 使用统一的系统级 N+1 或 N+2 设置，并在操作员采取动作后恢复冗余——可针对热备盘启动修复，或更换故障硬件。
{% endhint %}

## 实际中的驱动器分配

在 VergeOS 安装期间，每个物理驱动器都会被分配到特定的 vSAN 层级。安装程序使用 `YC_DRIVE_LIST` 以及 `YC_VSAN_TIER_LIST` 变量（在安装过程中交互式设置）将驱动器映射到各层级。

### 分配规则

* **0 层放置**：0 层只存在于控制器节点上——N+1 时为节点 1–2，N+2 时为节点 1–3
* 同一层内的驱动器应具有相似的类型和性能特征
* 在扩容（添加驱动器）时，应在集群中所有节点上添加 **数量相等的驱动器** 以保持均衡分布
* 在横向扩展（添加节点）时，新节点应与现有集群的硬件配置一致（CPU、内存、磁盘布局）

### 示例：双节点 HCI 配置

在 Terraform playground 最简单的部署中，每个控制器节点都有：

| 驱动器        | 层级  | 用途                    |
| ---------- | --- | --------------------- |
| 1× NVMe（小） | 0 层 | 元数据——vSAN 哈希映射和文件系统索引 |
| 1× NVMe（大） | 1 层 | 工作负载数据——VM 磁盘、快照、ISO  |

两个节点都将其驱动器贡献给同一个 vSAN 池。采用 N+1 冗余（默认）时，在节点 1 的 1 层上写入的每个块都会在节点 2 上有一个冗余副本，反之亦然。

## 其他 vSAN 功能

### 内联重复数据删除

由于每个数据块都由其加密哈希标识，vSAN 会自动检测重复块。如果两个 VM（或同一 VM 磁盘中的两个区域）写入相同数据，则只存储该块的一份副本。该功能在写入路径中内联运行——无需单独的重复数据删除作业或计划。

### 加密

vSAN 支持 **静态 AES-256 加密**，并在初始安装期间配置。加密密钥可以存储在 USB 驱动器上（插入前两个控制器节点）或在启动时手动输入。所有层中的所有数据都会被透明加密。

### 快照与克隆

vSAN 的块级架构支持 **节省空间的快照** — 快照记录的是某一时刻的哈希映射状态，而不是复制数据块。克隆同样引用现有块，只有当数据发生分化时才会消耗额外空间。

## 要点总结

| 概念                 | 摘要                                            |
| ------------------ | --------------------------------------------- |
| **vSAN / VergeFS** | 内置分布式存储——无需外部 SAN/NAS                         |
| **0 层**            | 仅元数据（NVMe）。仅存在于控制器节点上（N+1 时为 1–2，N+2 时为 1–3）。 |
| **1–5 层**          | 工作负载数据，从高性能 NVMe 到归档 HDD                      |
| **数据分布**           | 基于哈希，分散到所有存储节点                                |
| **冗余**             | N+1（2 份副本，默认）或 N+2（3 份副本）——按层级在系统范围内生效        |
| **自我修复**           | 故障时自动切换；重建由操作员驱动（热备盘或更换）                      |
| **重复数据删除**         | 内联、基于哈希，覆盖所有层级                                |
| **压缩**             | 非静态存储时不压缩——仅在站点同步复制期间压缩                       |

## 下一步

现在你已经了解 VergeOS 如何存储数据，下一部分将介绍连接所有节点并承载 vSAN 复制流量的网络基础设施： [**核心基础设施与网络 →**](/learn-the-platform/zh/mo-kuai-1-jia-gou-ji-chu/04-core-fabric.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verge.io/learn-the-platform/zh/mo-kuai-1-jia-gou-ji-chu/03-vsan-vergefs.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
