部署1-1-1集群,有必要做raid吗。如果通过软件做raid会牺牲多少cpu性能

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】4.3.4
【问题描述】
准备了几台高性能机,单机总共64物理核、1T内存、32T硬盘(4块8T的PCIE接口的硬盘)
原始准备通过阵列卡做raid10.
但到货后发现主板不识别阵列卡。无法做raid。
准备通过软件实现raid10。不清楚大流量IO下会消耗多少CPU性能。
或者不做raid,直接每个副本单一存储会有多少故障风险

有没有自己装机部署集群的小伙伴分享下

1 个赞

@论坛小助手

根据文档库中的信息以及您的问题描述,以下是对您提出的问题的详细解答:

1. 是否有必要做 RAID?

在生产环境中,是否需要做 RAID 取决于您的数据可靠性需求和硬件配置。OceanBase 数据库本身采用了多副本机制(如三副本),这意味着即使某一块硬盘或某一台机器发生故障,数据仍然可以通过其他副本恢复,从而保证高可用性和数据可靠性。

文档依据:

  • 文档片段 9 中提到:“OceanBase 数据库以集群形态运行,生产环境中最小规模为 3 台服务器(节点)。即集群中业务数据有三份,所以也叫三副本。” 这表明 OceanBase 的多副本机制已经提供了类似 RAID 的数据冗余功能。

因此,在 OceanBase 集群中,如果已经配置了多副本(如三副本),则对单机硬盘做 RAID 的必要性会降低。不过,如果您希望进一步减少单机硬盘故障的风险,可以考虑通过软件实现 RAID。


2. 如果通过软件实现 RAID10,会牺牲多少 CPU 性能?

软件 RAID 的性能开销主要取决于以下几个因素:

  • RAID 级别:RAID10 是一种结合了镜像(RAID1)和条带化(RAID0)的方案,其性能开销相对较低,因为主要是镜像操作,计算复杂度不高。
  • CPU 核心数:您提到每台机器有 64 物理核,这属于高性能配置,通常能够很好地分担软件 RAID 的计算开销。
  • IO 负载:如果 IO 流量较大,软件 RAID 的性能开销可能会更明显,但具体消耗的 CPU 性能比例需要通过实际测试来确定。

经验参考:

根据行业经验,软件 RAID10 在高 IO 负载下的 CPU 开销通常在 5%-10% 左右,具体值取决于 IO 模式(随机读写 vs 顺序读写)和数据块大小。对于 OceanBase 数据库这种以小块随机读写为主的场景,软件 RAID 的性能开销可能接近上限(约 10%)。


3. 如果不做 RAID,直接每个副本单一存储,会有多少故障风险?

如果不做 RAID,而是将每个副本的数据存储在单独的硬盘上,那么单块硬盘故障会导致该副本不可用。但由于 OceanBase 的多副本机制,只要其他副本正常,系统仍然可以继续提供服务。

故障风险分析:

  • 单硬盘故障:如果某块硬盘发生故障,对应的副本会失效,但其他副本可以接管服务。OceanBase 会自动触发副本重建,将失效副本的数据从其他副本同步过来。
  • 多硬盘同时故障:如果多个硬盘同时故障(例如同一台机器上的两块硬盘),可能会导致该机器上的所有副本失效。此时,系统依赖其他机器上的副本继续提供服务。

文档依据:

  • 文档片段 7 中提到:“OceanBase 数据库社区版采用基于无共享(Shared-Nothing)的多副本架构,整个系统没有任何单点故障,保证系统的持续可用。” 这说明即使不做 RAID,OceanBase 的多副本机制也能保证高可用性。

4. 建议的部署方案

综合以上分析,以下是针对您情况的建议:

方案 1:不做 RAID,直接使用多副本机制

  • 优点:简化部署流程,避免软件 RAID 的额外 CPU 开销。
  • 缺点:单硬盘故障会导致副本暂时不可用,但不会影响整体服务。
  • 适用场景:如果您对硬件质量有信心,并且 OceanBase 的多副本机制已经足够满足您的高可用需求。

方案 2:通过软件实现 RAID10

  • 优点:进一步降低单硬盘故障的风险,提高数据可靠性。
  • 缺点:可能会增加 5%-10% 的 CPU 开销。
  • 适用场景:如果您对单硬盘故障的风险非常敏感,或者希望最大限度地减少硬件故障对服务的影响。

方案 3:混合策略

  • 将关键数据(如事务日志)存储在做了软件 RAID 的硬盘上,而将普通数据存储在未做 RAID 的硬盘上。这样可以在性能和可靠性之间取得平衡。

5. 其他注意事项

  • 磁盘分区与挂载:无论是否做 RAID,都需要合理规划磁盘分区和挂载点。建议将数据目录、事务日志目录等分开存储在独立磁盘上,以减少 IO 竞争。
  • 监控与告警:无论是否做 RAID,都需要对硬盘状态进行实时监控,并设置告警规则,以便及时发现和处理硬盘故障。
  • 副本分布:确保 OceanBase 集群的副本分布在不同的物理机器上,以避免单点故障。

结论

在您的高性能硬件配置下,是否做 RAID 主要取决于您对数据可靠性的要求和对性能开销的容忍度。如果选择不做 RAID,OceanBase 的多副本机制已经能够提供足够的高可用性;如果选择通过软件实现 RAID10,则可能会增加 5%-10% 的 CPU 开销,但能进一步降低单硬盘故障的风险。

希望以上信息对您有所帮助!如果有更多问题,欢迎继续交流。

检索到的文档如下:

  1. 软硬件要求
  2. OceanBase AP 部署概述
  3. 部署简介
  4. OceanBase 集群高可用部署方案简介
  5. 部署前准备
  6. 使用命令行部署 OceanBase 数据库生产环境
  7. 部署生产环境
  8. (可选)查看资源
  9. 通过 obd 白屏部署 OceanBase 集群

做raid无外乎几点好处:
读写磁盘时提升io吞掉性能
单盘故障时减少运维维护成本
灾难场景下提高容灾级别

结合ob本身就是多副本架构,建议用硬件raid卡做。
软件实现的话,需要评估带宽和io性能的影响

论坛小助手说的比较详尽了。个人简述一下规划的原则

  1. 操作系统与数据磁盘要分开(硬件上隔离,比如做两个raid),看你的磁盘配置4*8T 硬盘,好像没有做这方面的规划哈!可能还需要购买一个或两个小盘(1T)左右,装操作系统,从你反馈的情况,只能做raid 0 了。做到系统盘与数据盘隔离。
    不做系统盘与数据盘的隔离的风险点:,如果有一个物理磁盘坏,就需要重新部署一台ob server ,操作时间比较长