一、部署前规划与要求

1. 整体架构

分布式.png

2. 硬件规划

分布式存储需满足以下最低要求:


组件最低要求建议配置
物理节点数量≥ 3台根据性能和容量需求扩展
每节点CPU≥ 16线程双路或以上Intel/AMD/海光/ARM处理器
每节点内存≥ 16GB32GB及以上
系统盘≥ 2块,≥120GB,RAID 1用于安装FreeVM系统
数据盘(容量盘)每节点≥ 2块,SATA/SAS/NVMe等直通模式或单盘RAID0。用于组建分布式存储池
数据盘(缓存盘 )每节点≥ 1块SSD (NVMe/U.2)提升I/O性能,作为缓存层,建议2块或2块以上固态硬盘。
存储网络网口每节点≥ 2个万兆及以上 (10GbE/25GbE/40GbE)。两个端口做端口聚合(bond)。用于节点间数据同步。
存储交换机2台,堆叠后端口聚合端口数 ≥ 节点数 + 1

核心原则:

  1. 不建议只使机械硬盘创建分布式存储

  2. 每个节点用做缓存盘的磁盘必须数量一致,容量一致,性能一致。

  3. 每个节点用做容量盘的磁盘必须数量一致,容量一致,性能一致。

  4. 推荐缓存盘和容量盘的总容量配比至少为:1:10。

  5. 三网分离(推荐)为获得最佳性能和稳定性,建议将管理网络、业务网络、存储网络在物理层面分离,使用独立的交换机和主机网口。

3. 副本策略

  • 副本数: 默认最小副本数为 3。这意味着每个数据块会在集群中保存3份。

  • 可用容量计算: 存储池实际可用空间 =分布式存储池总容量/ 副本数。

    • 例如:3节点,每节点有2块1TB硬盘,总容量6TB。采用3副本,可用容量约为 6TB / 3 = 2TB。

  • 数据分布: 数据及其副本以分片形式,遵循 “不同主机 > 不同硬盘” 的优先级策略均匀分布,最大化可靠性。


二、详细部署步骤

步骤 1: 配置存储网络 (以三网分离为例)

目标: 为存储流量创建一个独立的VLAN(例如VLAN 3000),并将用于存储的物理端口进行聚合,实现冗余和负载均衡。

  1. 进入 网络 -> VLAN

    image.png

  2. 创建存储VLAN

    • 点击 “添加VLAN”

    image.png

    • VLAN ID: 输入 3000 (示例)。

    image.png

    • 端口选择: 将与存储交换机相连的物理端口(例如网口1,2)的标签改为 UNTAG(访问模式),将其他端口从该VLAN中剔除

    • 点击 确定,然后点击页面上方的 “应用配置”

  3. 创建端口聚合 (Bond)

    • 进入 网络 -> 端口汇聚

    • 点击 “添加汇聚链路”

    • BOND ID: 例如 bond1

    • 汇聚类型: 选择 balance-xor (基于哈希的负载均衡)。

    • 端口选择: 勾选用于存储的两个物理端口(如eth1, eth2)。

    • 点击 确定,再点击 “应用配置”

    image.png

  4. 为存储VLAN绑定聚合端口

    • 回到 网络 -> VLAN,编辑刚才创建的VLAN 3000。

    • 在端口列表中,将聚合端口 bond1 的标签改为 UNTAG

    • 点击 确定应用配置

    image.png

  5. 在三台物理节点上重复以上网络配置,确保配置一致。

  6. 创建存储网地址,点击网络--->网关--->添加网关配置

    image.png

    image.png

  7. 这里需要注意的是,需要组建分布式存储freevm的存储网在同一个网段。

步骤 2: 添加集群节点

目标: 将所有独立的FreeVM主机加入一个逻辑集群。

  1. 进入 虚拟化 -> 集群设置 -> 集群配置

    image.png

  2. 功能开关 设置为 开启,点击 提交

    image.png

  3. 进入 虚拟化 -> 集群设置 -> 节点管理

    image.png

  4. 点击 “添加集群节点”

    image.png

  5. 依次添加其他节点:

    • 节点IP地址: 输入待加入节点的管理IP(如192.168.4.2)。

    • 密钥: 输入该节点Web界面中**【集群配置】**页面显示的 “本机密钥”

  6. 重复操作,将三台(或更多)主机全部加入集群。

步骤 3: 创建分布式存储池

核心步骤:检测网络并选取硬盘。

  1. 进入 虚拟化 -> 存储资源 -> 分布式存储 -> 新建分布式存储

    7973cb11-c1c0-4221-8fcc-cfd57833c220.png

  2. 存储网络检测:

    • 在“选择存储网络”下拉列表中,选择您配置的存储VLAN(例如 vs3000)。

    • 点击 “检测” 按钮。

    • 系统会自动探测集群各节点在该VLAN下的连通性。

    • 重要: 必须等待所有节点的 “检测结果” 显示为 “存储地址检测通过”,并自动或手动填写好 “存储地址” (即节点在存储VLAN的IP)后,才能进行下一步。

    image.png

  3. 点击 “下一步”

  4. 存储布局 - 选取数据盘:

    • 系统列出所有集群节点。

    • 针对每个节点,点击 “请选择数据盘”

    • 在弹出的磁盘列表中,勾选准备用于分布式存储的闲置硬盘(数据盘)切勿选择系统盘!

    • 点击 确定。为每个节点重复此操作。

    image.png

  5. 设置副本数: 在页面下方设置 “最小副本数”,通常保持默认的 3 (实际由存储池副本策略决定,此处是冗余级别)。注:使用分布式存储的话必须使用三副本。

  6. 点击 “确定” 提交创建。

  7. 等待创建完成:

    • 系统会显示创建进度条(如21%...)。

    • 此过程可能需要数分钟到数十分钟,取决于硬盘数量和大小。

    • 创建完成后会提示 “创建已完成”

步骤 4: 验证与维护

  1. 查看存储池状态:

    • 进入 虚拟化 -> 存储资源 -> 分布式存储 -> 分布式存储维护

    • “拓扑” 视图:图形化显示节点和磁盘状态,应全为绿色在线。

    image.png

    • “磁盘管理” 视图:列表显示所有OSD磁盘,状态应为“否”(非离线),可在此对磁盘进行添加、删除、重启操作。

    image.png

    • “健康” 视图:运行 “集群状态” 工具,输出应包含 health: HEALTH OK

    image.png

  2. 存储池就绪: 创建成功后,在 虚拟化 -> 存储资源 -> 存储池 列表中,会出现一个类型为“分布式存储”的池(名称如 rbd:freevm default)。


三、故障与高可用处理机制

分布式存储具备自动处理常见故障的能力:

1. 单个硬盘故障:

  • 若故障盘上的数据,在其他节点上仍有足够副本(≥ 2),则相关虚拟机仍可正常运行(读写)

  • 系统会标记该OSD失效,并在后台利用存活副本在集群中重新构建数据到新位置。

  • 管理员可在 “分布式存储维护” -> “磁盘管理” 中删除故障盘,物理更换新硬盘后,再通过 “添加数据盘” 功能将其加入存储池,参与重构。

2. 物理节点故障:

  • 情况A(存活节点 > 2台): 故障超过35秒未恢复,原运行在该节点上的虚拟机会自动在其他资源充足的存活节点上重新启动,保障业务连续性。

  • 情况B(存活节点 = 1台): 出于数据保护原则,存储池可能进入只读模式,直到故障节点恢复。

3. 存储网络中断:

  • 网络检测失败,会影响节点间数据同步和虚拟机HA。需检查物理线路、交换机及VLAN配置。


四、使用分布式存储创建虚拟机

分布式存储池创建后,其使用方法与本地存储池完全一致:

  1. 上传镜像: 点击进入分布式存储池,在 “文件” 标签页内,上传ISO镜像文件。

    image.png

  2. 创建虚拟机:

    • “计算资源” -> “集群主机” 中,右键任意节点,选择 “添加” 虚拟机。

    • 在配置界面中,“存储池” 选择您创建的分布式存储池(如 rbd:freevm default)。

    • 后续配置(CPU、内存、网络等)与常规虚拟机创建无异。

    image.png

  3. 优势体现: 创建在此存储池上的虚拟机,可实现:

    • 热迁移: 在不同物理节点间无中断迁移。

    • 高可用: 节点宕机后自动重启。

    • 高级数据服务: 支持秒级快照、快速克隆等。


五、重要注意事项

  1. 节点与硬盘: 至少需要3个物理节点,且每个节点至少提供1块(建议2块以上)非系统数据盘。

  2. 网络隔离: 强烈建议为存储流量划分独立的VLAN和物理网络(万兆),避免与管理/业务流量争抢带宽,确保存储性能与稳定性。

  3. 副本与容量规划: 规划存储容量时,务必考虑副本开销(可用空间 = 总裸容量 / 副本数)。

  4. 系统盘分离: 绝对禁止将系统盘(defaultpool)用于生产业务和分布式存储。系统盘仅用于安装FreeVM本体。

  5. 监控: 定期在 “分布式存储维护” 中检查集群健康状态。

通过以上步骤,您可以成功部署一套高性能、高可用的FreeVM分布式存储资源池,为上层虚拟化业务提供坚实的存储基础。