由于戴尔论坛是一场名副其实的灾难,我在这里尝试以防有人在这里给我一些提示:)
我们有一个带有 3 个驱动器的系统:
- 操作系统的 SSD
- 包含支持 LXD 容器的 ZFS 池的 SSD
- “备份”存储硬盘驱动器
该系统正在运行 Ubuntu Bionic。
现在这些区域都以非 RAID 配置连接到 PERC 控制器。服务器上的所有固件都是最新的。
我们看到的是,当我们使用 rsync 或 ftp 从远程网络存储将数据流式传输到 HDD 驱动器时,对 HDD 驱动器的写入操作会降低整个系统的速度
就好像 HDD 驱动器上的高 IOwait 会阻止 SSD 驱动器上的 IO 操作。这对我来说是非常违反直觉的。
为什么对 HDD 驱动器的写入操作会导致整个系统锁定并减慢 SSD 驱动器的访问时间?是控制器出了问题,还是 Linux 内核中有一些旋钮可以在这里转动?
我是否通过将 HDD 驱动器与我的 SSD 驱动器混合在一起而在脚上开枪?:)
@sfk 的评论应该是问题的答案。
共享 I/O 队列/缓冲绝对是这里问题的原因。
您可以使用 LSI 9211-8i 固件将卡交叉闪存到“IT”模式,或者如果您不想闪存 PERC,则只需在线购买 LSI 9207-8i(它们现在非常实惠)。只需确保事先对磁盘上的所有内容进行完整备份,您将需要从中恢复 - PERC 上的“非 RAID”磁盘仍具有 RAID 虚拟磁盘配置,并且不会在非 RAID 磁盘上正常显示。 RAID 卡(像 IT 模式下的这个)。
编辑:您可能会考虑作为解决方法的另一个选项是找到一种方法来限制发送到该磁盘设备的 I/O(朝着您提到的“旋钮”转动的方向)。我在这里看到了一些想法/选项,例如 cgroups 和 ionice,但不完全确定哪个适合您。任何可能导致对该磁盘的写入仅以低于磁盘实际处理速度的速度“发出”的情况都可能是有益的,这样 I/O 就不会排队,直到 HBA 的 IO 队列被填满。