为 BackupPC 使用优化 RAID 5(小随机读取)

jst*_*rek 3 raid rsync performance-tuning raid5 backuppc

我正在运行带有硬件 RAID 5 的 BackupPC 服务器,用于备份的主存储。由于这台机器是在很小的预算下创建的,因此控制器是用于 PCI 端口的 3Ware 9500S-4LP,驱动器是 200 GB SATA 类型的慢速驱动器。

然而,即使使用这种硬件,我看到的性能也比预期的要差得多。客户端和备份服务器使用 rsync 作为千兆网络上的传输,这甚至从未接近饱和。备份大约 5 GB 的正常 Linux 安装需要三个多小时。

所以我使用atop进程监视器来监视服务器。它表明处理器和内存的使用都不重要,但对 RAID 的读取访问是瓶颈。

当我构建服务器时,我选择了 RAID 5,因为根据这个 RAID 特性的表格概述,它似乎是 4 端口控制器上读取性能和空间效率之间的最佳折衷。

顺便说一下,虽然这是一个备份服务器,但使用 rsync 意味着这里的读取比写入多得多——目前大约是 1000 倍。我想在 BackupPC 的旧备份层次结构中移动和链接旧文件对此也有很大贡献。

那么,您将如何优化这台机器的性能?我有以下可调参数:

  • 对 BackupPC 使用不同的传输(tar 是一种替代方法)
  • 将数组的文件系统从 ext4 (noatime) 更改为其他内容
  • 更改 RAID 级别(最好不要,因为数据丢失)
  • 重新创建具有不同条带大小的阵列(最好不要,因为数据丢失)
  • 添加更多内存以用作缓冲区缓存
  • 添加第二个控制器和更多驱动器(是的,我有这些)
  • 更改控制人(最好不要,由于资金限制)
  • 更改所有驱动器(最好不要,由于财务限制)

waz*_*oox 5

这里有一个简短的随机 IO 入门:7200RPM 磁盘驱动器大约执行 100 IOPS。15k RPM 驱动器是两倍,大约 200 IOPS。对于 RAID-5 阵列,可达到的最佳 IOPS 是数据数据驱动器的数量乘以单个驱动器的性能;由于您有 3 个数据驱动器,因此您将获得的最佳持续价值是 300 IOPS。

使用iostat -mx 5您的备份运行时。如果您在 300 范围内看到许多读取或写入操作(第三和第四列),那么您基本上是在最大限度地利用您的设置。

注意:大多数现代 SSD 驱动器可达到 20000 IOPS。RAID-1 中的一对 SSD 可以让满是旋转锈迹的机架相形见绌。SSD 改变了一切。当面临 IOPS 问题时,99% 的情况下该解决方案称为“SSD”。

如果您当前没有最大化 RAID 阵列输出,您可以执行以下操作:

  • 增强队列深度。标准内核队列深度适用于具有小缓存的旧单驱动器,但不适用于现代驱动器或 RAID 阵列:

    回声 512 > /sys/block/sda/queue/nr_requests

  • 尝试不同的 IO 调度程序。CFQ(现代内核的默认调度程序)经常在服务器操作方面很糟糕:

    回声'noop'> /sys/block/sda/queue/scheduler

  • 尝试 RAID-10。RAID-10 不需要将写入折叠在一起,并且在单线程操作中的性能优于 RAID-5。

  • 或者,尝试运行与数据驱动器一样多的线程。它可以提高整体性能。