我的问题是:什么时候适合简单地创build一个具有快速读写性能的大arrays,如RAID 10,而不是为特定的应用程序创build更小的arrays?
在我看来,如果我的整体I / O需求并不是非常重的话,那么具有出色读写性能的单个arrays可以为所有应用程序提供更好的性能,除非在那些(可能很less)的时候,具有不同访问模式的应用程序达到峰值同时(在数据库遭到抨击的同时复制大量的大文件)。
如果我将一个双主轴专用于某个特定的任务(如事务日志),并且他们甚至不会为工作负载打破汗水…为什么不把这个工作负载放到更大的RAID 10上呢? 这些主轴将能够为其他工作负载做出贡献,而不是在60%的时间内围坐在一起。
PS,在我的情况下,RAID 10的成本开销并不是一个因素,因为我正在考虑创build多个RAID 1arrays和一个小巧的RAID 5.对于我需要的空间量来说,RAID 10是可比的。
知道如何设置存储就是衡量和预算IOPS和带宽。 (我在这里是简单的,因为读/写,平均IO,RAID条带大小和caching命中率的百分比混合的大小很重要,如果你能得到这些数字,你可以使你的计算更准确)。
这里有一个非常好的IO计算器,在计划存储时我经常使用它。 wmarow的存储目录也是很好的获得一些相当当代的磁盘性能数字。
如果我将一个双主轴专用于某个特定的任务(如事务日志),并且他们甚至不会为工作负载打破汗水…为什么不把这个工作负载放到更大的RAID 10上呢?
请记住,将顺序IO放到具有随机IO的主轴上会使该顺序IO随机。 您的事务日志磁盘可能看起来像他们没有汗streambecause背,因为你看到顺序的IO操作。 对RAID-1卷的连续读取和写入将会非常快,所以如果你想在磁盘队列长度上“打破一场汗水”,例如,你没有得到全部内容。
测量或计算预期目标卷的最大可能随机IOPS,获取该卷上当前工作负载的基准,然后确定是否有足够的余量将这些事务日志IOPS放入目标卷中剩余的随机IO中。 另外,一定要预算工作量所需的空间(显然)。 如果您非常喜欢,请在您的IO工作负载/空间分配中添加一定比例的额外“空间”。
对于要放入目标RAID-10卷的所有其他工作负载继续使用此方法。 如果随机IOPS用完了,那么您会在卷上堆积太多 – 添加更多磁盘或将一些工作负载放在专用卷上。 如果空间不足,请添加更多磁盘。
最近我读了更多的文章,说RAID 5是一个可靠的方法。 我相信在RAID5arrays中磁盘坏了之后,更换了磁盘,并且因为第二个磁盘有一个潜在的不可恢复的读取错误而迫使我们重新格式化并从备份恢复,所以它不能恢复。
随着硬盘越来越大,在这些巨大磁盘上出现无法恢复的读取错误的可能性也在不断增加,使用RAID 5的可靠性根本不会再降低。 如果你不反映,显然build议是去与RAID 10。
除非你对速度问题非常敏感,否则我不会担心把事情分解成小数组或类似的东西。 把它放到RAID 10中,看看你的性能是否满足要求。 在系统中使用适当的caching和内存时,应该没问题。 基准数字永远不会是你实际得到的,因为它取决于你的实际使用情况,实际负载,磁盘驱动器性能,控制器caching,磁盘caching,碎片等。
最好的经验法则就是尽可能简化configuration,因为即使你在一到两年内沉浸在这个设置中一天或一周,你将不得不解决这个服务器上的一些问题,你想知道为什么如果你为configuration增加了不必要的复杂性,你为什么要这么做?
您希望您的应用程序的延迟有多可预测?
比方说,你有一个真正的延迟敏感的应用程序,它和你的财务数据库共享一个文件系统。 在财务结算时,突然间您会收到有关延迟敏感的应用程序超时的电话。 你将如何解决这个问题?
另一方面,我是一个简化所有事情的巨大粉丝,所以我会确认你没有任何特殊的要求,如果你的要求不属于任何奇怪的特殊情况,就可以巩固和简化你的configuration。
当然 – 为什么不呢。 事情是,记住要正确地build立你的大型多盘arrays,弄错了,你需要很长的重build时间。
RAID 10有两种风格:
一旦光盘死亡,在一个你只需要重build一个raid1arrays。 与其他你将不得不重build整个raid0arrays。