我有一个 RAID 5 阵列,数据库可以从中读取和写入少量数据。
在正常情况下,包括提交在内的数据库操作会在可接受的时间内运行。但是,当大量数据加载到 RAID 阵列(但未加载到数据库)时,提交(但不是其他操作)会变得慢得令人无法接受。
我当前的假设是提交花费的时间太长,因为需要计算奇偶校验信息和/或将其写入磁盘。
有没有办法可以验证我的假设,即是否有一个工具可以显示计算奇偶校验信息所需的 CPU 数量以及这是否是瓶颈。
此外,我正在考虑将阵列移至 RAID 10 或 RAID 1。但在这样做之前,是否有一种科学的方法可以让我估计是否值得这样做?
我正在运行带有软件 RAID 的 Debian 12(/dev/md/
)。
打开几个终端并留意top或htop。特别注意数据库提交期间 CPU 使用率的峰值。
或者
使用iostat查看 CPU 在 I/O 操作上花费了多少时间:
sar命令可用于收集、报告或保存系统活动信息,其中包括 CPU 使用率。
为您提供 CPU 使用情况的概览,包括系统和 I/O 等待时间
根据您使用的 RAID 控制器或软件 RAID,可能会有特定的工具或日志可以深入了解 RAID 操作。对于 mdadm,请检查 /proc/mdstat 以了解 RAID 状态。使用iostat -xmd 1获取详细的 RAID I/O 统计信息。
此外,还分析数据库提交过程。使用 strace跟踪系统调用和信号。这可以帮助确定流程大部分时间都花在哪里。
这将总结系统调用的使用情况,并可能突出显示 I/O 操作所花费的时间。
使用perf来分析系统并找出瓶颈。
或者
其次是
我猜你已经做完了这一切。
RAID 10 可能会显着提高性能,但在发布一些 RFC 之前,我会用经验结果正确记录并对其进行审查。接下来的事情需要付出一些努力,但这绝对是值得的。
使用基准测试工具来衡量更改前后的性能。fio (Flexible I/O Tester)等工具可用于模拟数据库负载并测量性能。
重要信息:
创建一个独立的测试环境来设置 RAID 10 阵列并对其进行基准测试,而不会影响您当前的生产系统。
在现有 RAID 5 阵列上执行 fio 基准测试:
创建测试 RAID 10 阵列:
使用备用或虚拟磁盘进行此测试设置(/dev/sdx、/dev/sdy 等)。
格式化并安装测试 RAID 10 阵列:
在 RAID 10 上运行 fio 基准测试:
比较 RAID 5 和 RAID 10 基准测试的 fio 结果以评估性能改进。
评估结果
要比较的指标:
然后决定迁移到 RAID 10 根据您的基准测试和 CPU 使用情况分析,您可以就切换到 RAID 10 是否能够解决性能问题做出明智的决定。
通过在隔离环境中创建测试 RAID 10 阵列,您可以对其性能进行基准测试并将其与当前的 RAID 5 设置进行比较,而无需中断生产系统。通过这种方式,您可以科学地评估迁移到 RAID 10 是否值得,以及它是否能有效解决您的性能问题。
祝你好运!