For the complete documentation index, see llms.txt. This page is also available as Markdown.

VergeOS vSAN 删除流程

解释 VergeOS vSAN 如何通过引用计数、感知重复数据删除的块清理以及后台垃圾回收来处理 VM、驱动器和租户的删除。

块级架构基础

VergeOS vSAN 运行在一种 块级架构 其中:

  • VM 和租户磁盘被划分为多个块

  • 每个块都会获得唯一的加密哈希

  • 块使用基于哈希的算法分布到各节点

  • 同时保留主副本和冗余副本

  • 租户作为 LXC 容器运行 在父级 vSAN 中拥有各自的存储分配

删除如何工作

1. 引用计数系统

当你在 VergeOS 中删除 VM、驱动器或租户时:

  • 系统不会立即删除实际的数据块

  • 而是从哈希映射中移除这些块的引用

  • 每个块都维护引用计数,跟踪有多少对象在使用它

  • 租户存储遵循相同的引用计数 与单个 VM 相同,但在 LXC 容器边界内运行

2. 重复数据删除的影响

由于 VergeOS 使用 块级重复数据删除:

  • 多个 VM 可能共享相同的块(相同哈希)

  • 租户存储可以与父系统或其他租户共享块

  • 删除一个 VM 或租户只会减少引用计数

  • 只有当引用计数降为零时,块才会被标记为删除

3. 垃圾回收过程

实际删除通过后台进程完成:

  • vSAN 扫描:系统会定期扫描未被引用的块

  • 引用数为零的块会被标记为回收

  • 随后释放物理存储空间并使其可用

  • 租户删除会触发相同的垃圾回收 与 VM 删除相同

4. 立即与实际回收

  • 立即:UI 会立即将空间显示为“已释放”

  • 实际:物理空间回收发生在后台 vSAN 操作期间

存储回收时机

这就是为什么删除后你可能不会立即看到存储空间减少

驱动器/VM 删除

当你删除 VM 或驱动器时:

  1. 引用会从系统中移除

  2. 哈希映射条目会更新

  3. 后台进程负责实际的块清理

快照与删除

  1. 删除 VM 也会删除其 VM 快照

  2. 但是,该 VM 仍会保留在其存在期间创建的系统快照中

租户删除场景

完全删除租户

删除租户时:

  1. 所有租户 VM、驱动器和元数据引用都会被移除

  2. 租户存储层级 会从父级 vSAN 中解除引用

  3. LXC 容器文件系统和已分配的存储 会被清理

  4. 所有租户块的哈希映射条目都会更新

  5. 后台进程负责清理所有租户数据中的块

删除租户存储层级

当从租户中移除已配置的存储层级时:

  1. 在移除之前,必须将所有数据迁出该层级 (VM、驱动器、文件)

  2. 租户存储层级分配会被移除 从父级 vSAN 配置中

  3. 该特定层级的卷层级限流控制会被释放 针对该特定层级

  4. 该层级上租户块的哈希映射条目会更新

  5. 后台进程负责清理已移除层级分配的块

关键注意事项

租户内的 VM/驱动器删除

当删除租户内部的 VM 或驱动器时:

  1. 引用会从租户的本地哈希映射中移除

  2. 父级 vSAN 哈希映射条目也会更新

  3. 后台进程负责实际的块清理

租户与父级 vSAN 的关系

  • 租户作为父级 vSAN 内的 LXC 容器运行 ——它们没有单独的 vSAN

  • 租户存储通过容器文件系统层从父级 vSAN 层级中分配

  • 块级重复数据删除可跨租户边界工作 以及在容器之间工作

  • 父系统负责租户容器的所有物理存储清理

快照与租户删除

  • 删除租户也会删除其本地 VM 快照

  • 租户仍会保留在父系统快照中 这些快照是在其存在期间创建的

  • 系统快照可能会阻止立即回收存储

  • 即使删除后,也可以从系统快照恢复租户

共享对象和文件共享

  • 父系统与租户之间共享的文件 可能会保留引用

  • 共享的 VM 快照可能会阻止完全清理存储

  • 提供给租户的文件 会创建额外的块引用

  • 在估算存储回收时要考虑共享对象

网络资源清理

删除租户时,所有相关网络资源都会自动清理:

  • IP 地址 分配给租户 VM 和网络的 IP 会释放回地址池

  • 网络块 (子网)分配给租户的会解除分配并返回可用库存

  • 网络接口 和路由配置会自动移除

  • DNS 条目 以及与租户相关的网络策略会被清理

租户存储隔离

  • 每个租户都有 专用存储卷 并在其 LXC 容器内支持加密

  • 网络和管理隔离 不会影响容器之间的 vSAN 块共享

  • 存储隔离在逻辑上通过 LXC 容器化实现,而不是在块级别上物理隔离

  • 容器文件系统层 在共享底层块的同时提供租户隔离

高级租户删除场景

嵌套租户删除

对于托管自己子租户的租户:

  • 子租户作为 嵌套 LXC 容器

  • 子租户删除在容器层次结构内遵循相同的引用计数

  • 父租户容器负责管理子租户存储清理

  • 可能会应用多层容器化和引用计数

  • 清理过程从最内层容器向最外层容器进行

租户恢复对删除的影响

  • 从系统快照恢复已删除的租户 会重新创建引用

  • 之前“已删除”的块可能会再次变为活动状态

  • 恢复租户时,存储使用量可能会增加 在恢复租户时

  • 后台清理进程会适应恢复后的引用

安全机制

租户删除期间的数据完整性

  • 系统在所有删除操作期间都会保持数据完整性

  • 冗余副本确保不会丢失数据 在租户清理期间

  • 哈希验证可防止误删被引用的块

  • 跨租户的块共享会保留 直到所有引用都被移除

租户删除前提条件

  • 租户及其对应的租户网络必须先关闭电源 后才能删除

  • 所有租户节点都必须离线

  • 在租户容器处于活动状态时 无法删除原始租户节点

  • 系统会在允许删除容器前验证不存在活动引用

监控租户存储删除

你可以通过以下方式监控该过程:

父系统监控

  • 存储仪表板 用于查看总体层级利用率

  • vSAN 诊断 用于查看后台操作状态

  • 系统日志 用于查看租户删除和清理详情

  • 租户统计 显示存储消耗趋势

租户级监控 (删除前)

  • 租户仪表板 用于查看内部存储使用情况

  • 租户历史 用于查看消耗统计

  • 租户环境内的 内部 vSAN 统计

删除后验证

  • 存储层级利用率 应随着时间下降

  • vSAN 扫描统计 显示清理进度

  • 引用计数验证 通过 vSAN 诊断

故障排除

排查回收缓慢问题

  • 检查 仍然存在的系统快照 其中包含租户数据

  • 验证 共享对象 是否已正确清理

  • 查看 系统日志 查看 vSAN 操作错误

  • 使用 vSAN 诊断 以监控清理进度

最后更新于

这有帮助吗?