我已经设置了两个通过光纤通道连接的 DS4100 SAN。我已经设置了多个 RAID 配置:每个 SAN 中跨越 4 个磁盘的 RAID10,以及几个 RAID5。(硬件 RAID 由 DS4100 处理)
我正在运行 32 位 Windows 2008 Datacenter 版本。我已通过光纤通道将服务器连接到 SAN。我已禁用“带镜像的写入缓存”。
现在无论我做什么,似乎都无法从 SAN 存储中获得超过 40MB/s 的性能。我期望有更多 4 个条带磁盘(RAID10,总共 8 个)或 RAID5 中的 6 个磁盘。
我可以期望 RAID5 中的 6x400GB SATA 磁盘具有什么样的性能?
知道我可以检查什么来找出它为什么这么慢吗?
答案1
让我们讨论一下每秒 I/O 操作数 (IOPS)
如果你假设你有这些磁盘,它们的平均延迟为 4.17ms(由盘片大小和转速决定(在本例中为 7200RPM))。您还需要知道平均读/写寻道时间才能真正计算出 IOPS。本网站声称平均寻道时间为 12 毫秒(这太糟糕了,并且将成为您遇到的问题的原因,我们将会看到......)
确定 IOPS 非常不精确,因为为了正确确定,您需要知道读取百分比与写入百分比(写入比读取慢,因为显然需要更精确地放置磁头)。
IOPS 的计算公式为 1 /(平均延迟 + 平均寻道时间),因此每个驱动器能够达到 1 /(0.00417 秒 + 0.012 秒)或 1/.01617,即大约 60 IOPS。
所以这只是一个驱动器。但您有多个!
您提到了 8 磁盘 RAID-10 阵列。这很棒,因为虽然您必须写入数据两次,但您可以同时从所有 8 个磁盘读取数据。
假设读取工作负载为 100%,60 IOPS X 8 个驱动器 = 480 IOPS。
那么 IOPS 与吞吐量有何关系呢?好吧,我们必须回到“不精确”的部分,因为它取决于磁盘 I/O 中随机的百分比。
在 100% 随机工作负载下,您可以假设一次操作会给您一个块。那么,块大小是多少?
根据此 PDF,DS4100 的块大小为 16k。
我们可以用它来计算您可以获得的绝对产量。
在 480 IOPS 左右,每个 IOPS 获得 16KB 数据,纯随机工作负载下,您的速度将达到 7.68MB/s。由于您的工作负载不是随机的,因此您的速度约为此速度的 5.25 倍。
听着,我严重怀疑您是否会使用这些驱动器来获得出色的数据。12ms 的寻道时间几乎是犯罪行为,如果事实确实如此(找出答案),另外您可能也在写入阵列,即使您不知道自己在这么做。
我的建议是:了解您的 I/O 配置文件是什么样的。尽量减少写入量(如果您不关心 POSIX 兼容性,则不进行挂载)。获取更好的磁盘。