我的问题是:什么时候适合简单地创建一个具有快速读写性能的大型阵列(例如 RAID 10),而不是为特定应用程序创建较小的阵列?
在我看来,如果我的整体 I/O 要求不是很重,那么具有出色读写性能的单个阵列可以为所有应用程序提供更好的整体性能,除了那些(可能很少见的)具有不同访问模式的应用程序同时达到峰值(在数据库受到重击时复制大量大文件)的情况。
如果我将一对主轴专用于某项特定任务,例如事务日志,而它们甚至无需为工作量而大汗淋漓……为什么不把这些工作量放到更大的 RAID 10 上呢?这样,这些主轴就可以为其他工作量做出贡献,而不是 60% 的时间都闲置在那里。
PS,在我的特定情况下,RAID 10 的成本开销不是一个因素,因为我正在考虑创建多个 RAID 1 阵列和一个较小的 RAID 5。对于我所需的空间量来说,使用 RAID 10 是相当的。
答案1
了解如何设置存储的关键在于测量和预算 IOPS 和带宽。(我在这里说得比较简单,因为读/写比例、平均 IO、RAID 条带大小和缓存命中率都很重要。如果您能得到这些数字,您的计算就会更加准确。)
有一个非常好的小型 IO 计算器这里我在规划存储时经常使用它。wmarow的存储目录也有利于获得一些相当现代的磁盘性能数字。
如果我将一对主轴专用于某项特定任务,例如事务日志,而它们甚至无需为工作负载而费力...为什么不将该工作负载放到更大的 RAID 10 上呢?
请记住,将顺序 IO 放到具有随机 IO 的主轴上会使该顺序 IO 随机化。您的事务日志磁盘可能看起来毫不费力,因为您看到的是顺序 IO 操作。对 RAID-1 卷的顺序读取和写入将非常快,因此如果您根据磁盘队列长度来判断“毫不费力”,那么您就没有了解全部情况。
测量或计算目标卷的最大可能随机 IOPS,对该卷上的当前工作负载进行基准评估,然后确定是否有足够的空间将这些事务日志 IOPS 放入目标卷中剩余的随机 IO 中。此外,一定要预算工作负载所需的空间(显然如此)。如果您愿意,请在 IO 工作负载/空间分配中增加一定比例的额外“余量”。
对于要放入目标 RAID-10 卷的所有其他工作负载,请继续使用此方法。如果随机 IOPS 用尽,则说明您在卷中堆积了太多内容 - 添加更多磁盘或将部分工作负载放在专用卷上。如果空间不足,请添加更多磁盘。
答案2
最近我读到很多文章说 RAID 5 的可靠性很差。我更相信这一点,因为 RAID 5 阵列中的一个磁盘坏了,更换了驱动器,但它无法恢复,因为第二个磁盘有一个潜在的不可恢复的读取错误,迫使我们重新格式化并从备份中恢复。
随着驱动器越来越大,在这些巨大的磁盘上出现未检测到的不可恢复的读取错误的几率也在增加,而 RAID 5 的可靠性已经不再有效。如果您不进行镜像,显然建议使用 RAID 10。
除非你正在做一些对速度问题非常敏感的事情,否则我不会担心将东西分成小阵列或类似的东西。将其放入 RAID 10 中,看看你的性能是否达到标准。如果系统中有适当的缓存和内存,它应该没问题。基准测试的数字永远不会完全是你实际得到的数字,因为它取决于你的实际使用情况、实际负载、磁盘驱动器性能、控制器缓存、磁盘缓存、碎片等。
最好的经验法则是尽可能简化配置,因为即使您花费一天或一周的时间为此设置而烦恼,但在一两年内,您仍将不得不对该服务器上的某些问题进行故障排除,如果您在配置中添加了任何不必要的复杂性,那么您会想知道为什么您要以这种方式进行设置。
答案3
您希望应用程序的延迟有多可预测?
比如说,你有一个对延迟非常敏感的应用程序,它与你的财务数据库共享一个文件系统。在财务结算时,你突然接到电话说这个对延迟敏感的应用程序超时了。你该如何解决这个问题?
另一方面,我非常喜欢简化一切,因此我会验证您是否没有任何特殊要求,如果您的要求不属于任何奇怪的特殊情况,我会合并和简化您的配置。
答案4
当然 - 为什么不呢。问题是,记住正确构建大型多盘阵列,如果做错了,你将需要很长的重建时间。
RAID 10 有两种形式:
- RAID 1+0,其中您构建 2 个 RAID 1 阵列,然后对其进行条带化。
- RAID 0+1,您可以构建 2 个 RAID 0 阵列,然后镜像它们。
一旦磁盘损坏,在一个磁盘上你只需重建一个 raid1 阵列。在另一个磁盘上,你必须重建整个 raid0 阵列。