欢迎访问荣合科算技术服务官网,我们专注于服务器相关的IT技术服务支持,长期与IT集成商、企业主、政法机关单位、高校科研院校建立良好的合作关系!
服务器 Linux系统 科研软件 HPC集群 硬件评测 硬件参数

如何在PVE集群种的CEPH建立2个存储池,比如SSD池和HDD池

2026-03-31 1
在 PVE 集群的 Ceph 中建立 SSD 和 HDD 双存储池,本质是利用磁盘的物理性能差异,通过 CRUSH Rule 实现逻辑隔离。结合你之前“2 块 8T 机械盘 + SSD 加速”的环境,操作流程如下。

一、前提条件与规划

  1. 硬件准备:除了现有的 2 块 HDD,你必须有独立的 SSD 磁盘(非用作 DB/WAL 的盘)加入 Ceph 作为 OSD。

  2. 角色定义

    • HDD 池 (hdd-pool):存放备份、ISO、低频使用的虚拟机。

    • SSD 池 (ssd-pool):存放高 IOPS 虚拟机磁盘。

  3. 网络:确保 Ceph 后端网络(如 br1)已配置,且所有节点时间同步。

二、操作步骤(PVE Web 界面 + CLI)

1. 创建 OSD 并打标签(Class)

首先需要将不同介质的 OSD 标记出来,Ceph 才能识别。
  • 查看 OSD 信息
    在 PVE 节点 Shell 执行 ceph osd tree,确认 OSD 编号及磁盘类型。
    ceph osd tree# 输出示例:# ID CLASS WEIGHT  TYPE NAME# 0   hdd  7.27658 host pve1# 1   hdd  7.27658 host pve1# 2  ssd  0.93158 host pve1

    • 注意:如果 OSD 没有自动分类(CLASS 为空),需要手动设置:
      ceph osd crush set-device-class hdd osd.0
      ceph osd crush set-device-class hdd osd.1
      ceph osd crush set-device-class ssd osd.2

      HPC服务器集群安装部署就找荣合技术

2. 创建 CRUSH Rule(数据分布规则)

Rule 决定了数据写入哪个类型的磁盘。
  • 创建 HDD Rule(允许在 Web 界面操作,但 CLI 更稳妥):
    # 创建 HDD 规则,只走 class=hdd 的 OSDceph osd crush rule create-replicated hdd-rule default host hdd# 创建 SSD 规则,只走 class=ssd 的 OSDceph osd crush rule create-replicated ssd-rule default host ssd
    参数说明default指根 Bucket(通常是 root=default);host是副本分布层级(单节点建议用 host,多节点集群用 rackdatacenter)。

3. 创建存储池(Pool)

  • 方法 A:PVE Web 界面(推荐)

    1. 进入 DatacenterStorageAddCeph (Pool)

    2. 联系电话:4001819668

      Pool Name:输入 ssd-pool

    3. Crush Rule:选择 ssd-rule(下拉菜单会出现你刚创建的规则)。

    4. 其他参数:PG_NUM 建议设为 64(小集群),副本数(Size)设为 1(单节点)或 2(双节点)。

    5. 重复上述步骤创建 hdd-pool,选择 hdd-rule

  • 方法 B:命令行(批量部署)
    # 创建 SSD 池ceph osd pool create ssd-pool 64 64 ssd-rule# 创建 HDD 池ceph osd pool create hdd-pool 64 64 hdd-rule

4. 在 PVE 中挂载存储池

创建完成后,在 PVE Web 界面的 DatacenterStorage 中点击 AddCeph (Pool),直接从下拉菜单选择 ssd-poolhdd-pool挂载即可。

三、针对你“单节点/小集群”的特别配置

由于你之前是单节点或双节点超融合环境,副本策略需要调整,否则 Ceph 会因副本写不满而报 HEALTH_WARN
  • 允许单副本(仅测试/非生产环境)
    ceph config set global osd_pool_default_size 1
    ceph config set global osd_pool_default_min_size 1

  • 设置池的副本数
    ceph osd pool set ssd-pool size 1
    ceph osd pool set hdd-pool size 1

四、验证与使用

  1. 验证规则生效
    ceph osd pool ls detail | grep -E "(ssd-pool|hdd-pool)"
    输出中 crush_rule应分别为 ssd-rulehdd-rule

  2. 创建虚拟机
    在 PVE 创建 VM 时,Hard Disk 的 Storage 下拉菜单会出现 ssd-poolhdd-pool,按需选择即可。

五、常见问题与误区

  • 官网:www.sx267.com

    Q:能用同一块 SSD 既做 DB/WAL 又做 SSD Pool 吗?
    A:强烈不建议。DB/WAL 是元数据盘,要求极低延迟;SSD Pool 是数据盘,两者 IO 混合会相互干扰。建议使用独立的 SSD 创建 OSD 来组建 SSD Pool。

  • Q:创建 Rule 时报错 ECANCELED
    A:通常是因为 OSD 没有正确设置 device-class。先执行 ceph osd crush set-device-class <class> osd.<id>打标签。

一句话总结:先给 OSD 打 ssd/hdd标签,再创建对应的 Rule,*后用这个 Rule 创建 Pool。在 PVE 挂载后,新建虚拟机时选择对应的池即可实现分层存储。