![较大的 RAID 条带大小会因小文件而浪费空间吗?](https://linux22.com/image/561017/%E8%BE%83%E5%A4%A7%E7%9A%84%20RAID%20%E6%9D%A1%E5%B8%A6%E5%A4%A7%E5%B0%8F%E4%BC%9A%E5%9B%A0%E5%B0%8F%E6%96%87%E4%BB%B6%E8%80%8C%E6%B5%AA%E8%B4%B9%E7%A9%BA%E9%97%B4%E5%90%97%EF%BC%9F.png)
我计划在 XFS 文件系统上使用 RAID 0+1(或 RAID 10、RAID 5)来创建 Maildir 存储,并且将使用 RAID 将使用的条带单元和宽度来创建 XFS。
我尚未确定 RAID 条带大小,但我的 RAID 系统中的默认值为 128KB。如果我将 128KB 条带大小用于 Maildir 存储,是否会浪费小于条带大小的文件的空间?
我认为 Maildir 中文件的平均大小为 10KB,那么对于这种环境来说,哪种条带大小最好?
答案1
不,您不会通过调整 RAID 条带大小而损失(或增加)任何空间。条带大小用于告诉您的 RAID 系统如何分配用于 I/O 操作的数据。
条带大小的查看方式取决于 RAID 级别。
对于奇偶校验计算 RAID (4、5、6),小于条带大小的写入会导致读取-修改-写入循环,因为奇偶校验始终针对整个条带进行计算。因此,如果您在 128k 条带上进行 10k 写入,则会导致 RAID 读取 128k 数据,修改内存中的相关扇区,重新计算奇偶校验,然后写入整个条带。坏事 (TM)。
对于无奇偶校验的 RAID(0、1、多镜像 1),条带(和磁盘数量)决定了单个主轴每次 I/O 的工作量(统计上)(谎言、该死的谎言和统计数据)。如果您有大量连续的 I/O,那么大条带就很好,因为 RAID 中的每个磁盘都会获得一个连续的良好数据块来读取/写入。如果您进行大量小文件访问,较小的条带更好,因为两个独立的 I/O 更有可能进入两个不同的主轴并并行处理。
理论就这么多,实践中最好的方法是尝试不同的大小并进行测试。如果您允许系统受磁盘限制的可能性很小,请放弃 Maildir 文件系统的 RAID5/6 想法。小文件写入的读取-修改-写入惩罚会降低您的性能。
还有一件事:阅读这关于调整 RAID 上的 XFS 以实现高 IO(高是指 1M IOPs 附近的情况)的线程。
答案2
我很想坚持使用默认的 4KB XFS 块大小,因为它使用延迟分配,因此使用较小的大小将带来非常实际的效率。无论如何,我当然不会担心尝试将 maildir 文件大小与块匹配,否则您会发疯,只需让 FS 完成其工作即可。