我有一台采用多磁盘配置的服务器,使用LUKS 上的 LVM在 JBOD 模式下。但我注意到,htop
内核时间的 CPU 使用率通常非常高,并且iotop
在jbd2/dm-5-8和dmcrypt_write/2进程经常占用大部分 IO%
我检查了一下fio
,发现 4K 随机 IOPS 也远低于每个驱动器的值,更不用说整个 LVM 磁盘组了。我认为,当向 JBOD 集添加更多磁盘时,LVM 可以并行提供对各个磁盘的访问,因此,例如,我有 4 个 SSD 驱动器,每个驱动器的 IOPS 为 600k,那么它应该能够实现 ~4×600k IOPS,但事实似乎并非如此
因此,我正在尝试进行一些调整,可能通过从头开始重建驱动器集。由于服务器应该处理大量平均约 40-80KB 的小文件,我认为 JBOD 应该更好,因为即使默认的 RAID0 条带大小也大于文件本身。此外,如果在 RAID0 模式下运行,那么每次读取/写入小文件时,所有驱动器中的所有条带都会被不必要地访问
我的理解正确吗?在这种情况下,如何提高 IOPS?更改为 Btrfs 或 ZFS 并删除 LVM 层有帮助吗?
答案1
更新 - 我最初的回答仍然有用,但重读后我发现你使用的是 SSD。这让我觉得你找错了地方。我认为拖慢你速度的原因是数据的加密/解密。也许你可以考虑将其转移到 SSD 固件中完成。
初步答案 -
我希望 RAID0 能提供比 JBOD 更好的性能,因为它大大增加了文件位于不同磁盘上的机会,从而加快读取速度。
(假设阵列由 5 个大小相同的磁盘组成,其中 1/5 已满且没有碎片 - 对于 RAUD0,数据将分布在 5 个磁盘上,但对于 JBOD,所有数据都位于 1 个磁盘上。即使磁盘已满(但合理地为 nrw)- 所有最新文件都将位于 1 个磁盘上 - 因此仅查看最新文件的操作将再次位于 1 个带有 JBOD 的磁盘上)
如果文件位于同一个扇区/磁盘块中,jbod 仍然没有优于 RAID0 的优势。JBODS 的优势在于它能够使用不同大小的磁盘、能够部分恢复数据并更轻松地增加磁盘空间。