显然,在单个驱动器的分区上运行 raid0 会导致性能下降;数据必须多次写入/读取同一个驱动器,并且由于数据分散,驱动器磁头必须回溯。我进行了测试,但没有得到预期的结果。
据我所知,没有办法将 Windows 配置为 raid0 分区,只有驱动器。因此,除了操作系统驱动器之外,我还使用了 Windows XP 虚拟机,其中附加了 5 个 1GB 虚拟驱动器。这些虚拟驱动器托管在同一主机硬盘上,以模拟在同一驱动器上创建分区的效果。我将它们分别设为动态磁盘,并使用 Windows 内置的 Raid0 等效程序对它们进行条带化。然后,我附加了另一个 5GB 的虚拟硬盘。5GB Raid0 阵列和 5GB 驱动器均格式化为 NTFS,分配大小为 64 千字节。虚拟硬盘文件设置为预分配其空间。
假设 raid 阵列中有 5 个虚拟驱动器,我预计它的读取速度/写入速度性能约为非 raid 驱动器的 20%,单次写入/读取除外,这应该接近正常。
从屏幕截图中可以看出,顺序读取速度与预期大致相同(17% 左右),但写入速度却不尽如人意。写入速度明显高于预期(33% 左右)。测试结果来自使用 Crystal DiskMark 写入 4000MB 数据的 5 次运行系列。主机驱动器是 USB 3.0 外置硬盘。
为什么raid阵列上的顺序写入速度比预期的要好?
附言:在有人问我想要实现什么目标之前,我先回答一下。我除了满足我的好奇心之外,没有其他目的;不要对这个问题进行比它已经写得更深入的解读。:)
答案1
你所看到的是智能的综合效果排队和缓存:数据在物理上写入驱动器的顺序与应用程序写入操作系统的顺序不同,但重新排序和写入合并可以更好地将写入内容分布到条带上。这得益于驱动器的内部缓存。
当从驱动器读取时,排队实际上不能帮助你,但事实上你只看到 1:5 的性能下降,而预期的损失会更高(对于条带化,1:5 的性能下降,径向和旋转延迟应该超过顺序工作负载上的分布式读取),这表明预读效果很好。