![哪些块大小和条带大小会导致使用 RAID5 时出现性能问题?](https://linux22.com/image/613546/%E5%93%AA%E4%BA%9B%E5%9D%97%E5%A4%A7%E5%B0%8F%E5%92%8C%E6%9D%A1%E5%B8%A6%E5%A4%A7%E5%B0%8F%E4%BC%9A%E5%AF%BC%E8%87%B4%E4%BD%BF%E7%94%A8%20RAID5%20%E6%97%B6%E5%87%BA%E7%8E%B0%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%EF%BC%9F.png)
我正在尝试了解块大小和条带大小。我意识到这可能适用于比 RAID5 更多的配置,但我对 RAID5 特别感兴趣,因为我想了解块大小和条带大小之间的关系,以及会导致性能下降的大小以及它们导致性能问题的原因...
到目前为止,我所理解的是,条带大小是磁盘上属于条带的每个“列”(驱动器?)上的空间量(基本上是穿过驱动器的一行相同大小的空间
因此,如果条带大小等于块大小,假设两者都是 64kb,当我运行来自 SQL 服务器的写入操作时会发生什么情况?该操作会一次执行所有 64Kb 的操作吗?
每次写入 64kb 之后都会计算奇偶校验吗?
Stripe 通常比 Block 大。如果 Stripe 大很多,这会影响性能吗?
以下是示例:我已配置 HP 阵列 - RAID5。我的逻辑驱动器上的块大小为 512 字节,Windows 单元分配大小为 4KB,条带大小为 256KB。我处于高写入环境中,逻辑驱动器加速为控制器缓存,已启用并设置为 100%/0%(读/写)。我应该期待什么样的性能?这与 512 字节块大小和 256 KB 条带大小之间的关系有什么关系?
答案1
瞧,你在这里犯了错误……
假设两者都是 64kb,当我在已满的驱动器部分上运行只有几个字节的写入操作时会发生什么?(可能是大型 SQL 服务器数据库)
这不可能。
除了 NTFS 实际上具有 4kb 或更大的块这一事实之外 - 强烈建议将 SQL Server 的块设置为 64kb。
SQL Server 管理 8kb 页面,并且始终读取/写入 8 个页面作为范围 - 64kb。
http://msdn.microsoft.com/en-us/library/ms190969(v=sql.105).aspx
因此,对于 SQL Server 来说,不存在写入几个字节这样的事情。它会写出 64kb。
因此,对于 SQL Server,建议使用 64kb NTFS 节点大小(这样扩展不会导致分割 IO)并且显然使用 64kb Raid strize 大小的倍数(因为 SQL Server 企业版喜欢提前读取扩展)。
对于其他元素,情况类似 - 不是 SQL Server......它取决于程序员的智力和特定软件的访问模式。