本 HOWTO 已弃用;Linux RAID HOWTO 由 linux-raid 社区维护,以 wiki 形式发布在 http://raid.wiki.kernel.org/
本节包含来自真实系统使用软件 RAID 的一些基准测试。其中也有关于基准测试软件的一般信息。
基准测试样本使用 bonnie
程序完成,并且始终在文件大小为机器物理 RAM 两倍或更大的情况下进行。
此处的基准测试仅测量单个大型文件上的输入和输出带宽。 如果关注大型读取/写入的最大 I/O 吞吐量,那么了解这一点很好。 然而,这些数字很少能告诉我们,如果阵列用于新闻缓冲池、Web 服务器等等,性能会如何。 始终牢记,基准测试数字是运行“合成”程序的结果。 很少有真实世界的程序会像 bonnie
那样工作,尽管这些 I/O 数字看起来不错,但它们并非最终的真实世界应用程序性能指标。 甚至差得很远。
目前,我只有来自我自己的机器的结果。 设置如下:
三块 U2W 磁盘挂载在 U2W 控制器上,UW 磁盘挂载在 UW 控制器上。
似乎不可能让 SCSI 总线在这个系统上推送超过 30 MB/s 的速度,无论是否使用 RAID。 我猜测,因为系统相当老旧,内存带宽很差,因此限制了可以通过 SCSI 控制器发送的数据量。
读取 是 顺序块输入,写入 是 顺序块输出。 在所有测试中,文件大小为 1GB。 测试在单用户模式下完成。 SCSI 驱动程序配置为不使用标记命令队列。
Chunk 大小 | Block 大小 | 读取 kB/s | 写入 kB/s |
4k | 1k | 19712 | 18035 |
4k | 4k | 34048 | 27061 |
8k | 1k | 19301 | 18091 |
8k | 4k | 33920 | 27118 |
16k | 1k | 19330 | 18179 |
16k | 2k | 28161 | 23682 |
16k | 4k | 33990 | 27229 |
32k | 1k | 19251 | 18194 |
32k | 4k | 34071 | 26976 |
>由此看来,RAID chunk 大小似乎没有太大的区别。 然而,ext2fs block 大小应该尽可能大,在 IA-32 上为 4kB(例如,页面大小)。
这次,SCSI 驱动程序配置为使用标记命令队列,队列深度为 8。 其他所有设置与之前相同。
Chunk 大小 | Block 大小 | 读取 kB/s | 写入 kB/s |
32k | 4k | 33617 | 27215 |
没有进行更多测试。 TCQ 似乎略微提高了写入性能,但实际上并没有太大的区别。
阵列配置为在 RAID-5 模式下运行,并进行了类似的测试。
Chunk 大小 | Block 大小 | 读取 kB/s | 写入 kB/s |
8k | 1k | 11090 | 6874 |
8k | 4k | 13474 | 12229 |
32k | 1k | 11442 | 8291 |
32k | 2k | 16089 | 10926 |
32k | 4k | 18724 | 12627 |
现在,chunk 大小和 block 大小似乎都真正产生了影响。
RAID-10 是“镜像条带”,或者说,是由两个 RAID-0 阵列组成的 RAID-1 阵列。 chunk 大小是 RAID-1 阵列和两个 RAID-0 阵列的 chunk 大小。 我没有进行 chunk 大小不同的测试,尽管这应该是一个完全有效的设置。
Chunk 大小 | Block 大小 | 读取 kB/s | 写入 kB/s |
32k | 1k | 13753 | 11580 |
32k | 4k | 23432 | 22249 |
没有进行更多测试。 文件大小为 900MB,因为涉及的四个分区每个为 500MB,这在此设置中没有 1G 文件的空间(在两个 1000MB 阵列上进行 RAID-1)。
要检查 RAID 系统的速度和性能,请勿使用 hdparm。 它不会对阵列进行真正的基准测试。
请查看此处描述的工具,而不是 hdparm:IOzone 和 Bonnie++。
IOzone 是一个小型、通用且现代化的工具。 它对 read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read
和 aio_write
操作进行文件 I/O 性能基准测试。 不用担心,它可以在 OSDL STP 中的任何 ext2、ext3、reiserfs、JFS 或 XFS 文件系统上运行。
您还可以使用 IOzone 来显示吞吐量性能,作为文件系统中进程数和磁盘数的函数,这在 RAID 条带化方面很有趣。
尽管 IOzone 的文档以 Acrobat/PDF、PostScript、nroff 和 MS Word 格式提供,但我们将在此处介绍一个 IOzone 在操作中的优秀示例
iozone -s 4096这将运行一个使用 4096KB 文件大小的测试。
这是 IOzone 给出的输出质量示例
File size set to 4096 KB Output is in Kbytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 Kbytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size. random random bkwd record stride KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 4096 4 99028 194722 285873 298063 265560 170737 398600 436346 380952 91651 127212 288309 292633现在您只需要了解使 IOzone 适用于 RAID 基准测试的功能:涉及 RAID 的文件操作是
read strided
。 上面的示例显示 read strided
的速度为 380.952Kb/秒,所以您可以自己研究一下。
Bonnie++ 似乎更侧重于对单个驱动器而不是 RAID 进行基准测试,但它可以测试 32 位机器上超过 2Gb 的存储,并测试文件 creat, stat, unlink
操作。