7.2K近线SAS与大RAID控制器caching与10 / 15K SAS

我正在开发一个应用程序,每天捕获很多(千万以上)非常小的数据块(16个字节)。 数据不是连续的(即很多正在写作),它不是一个固定的stream(有一段时间的安静)。

该应用程序有caching服务器在它的前面,所以读取是一个问题较less,我想只有1%的数据将在一个特定的一天感兴趣,1%将坐在caching。 只有第一次阅读应该是缓慢的。

我有一个很好的但有限的预算,我想RAID 1,我的磁盘成本加倍。

我的select是:

  • RAID 1中的快速SAS磁盘 – 存储成本不高但速度快。
  • 大型近线磁盘RAID 1 + 1gb控制器上的NVCache(PERC H700)

你会怎么做? 换句话说,在写入方面,控制器上的大caching是否能补偿较慢的寻道时间?

我们是一个DELL店,我正在寻找R410 / R510。

我不确定你会在这里得到一个有用的答案。 我将与应用程序和未来的硬件进行基准testing,以了解它是如何执行的,因为我怀疑是否有足够的复杂性,试图对其“信封”进行build模可能过于简单。

通常,控制器上caching可以缓冲写入,并允许RAID卷更快地响应操作系统。 如果您的写入速率超过caching可以提交到磁盘足够长的时间以填充caching,那么控制器将开始阻塞写入(回落到物理磁盘的速度)。

这听起来像你没有使用现成的数据库pipe理系统,而是自己pipe理数据存储。 您将不得不评估应用程序如何与OScachingpipe理器和底层文件系统(假设您不在原始磁盘块上存储数据)以及RAID控制器交互。 如果您正在使用数据库pipe理系统,那么很明显,您也必须了解它们之间的相互作用。

当你说“正在工作”时,我想知道你是否参与了应用程序的开发。 如果是这样的话,我认为值得一看的应用程序体系结构将传入的写入caching到顺序写入的日志中,然后延迟写入该顺序的日志到随机存取存储结构中。 实际上,您将完成与控制器caching写入相同的操作,但是您可以更细粒度地控制stream程(您可以显式地为顺序存储和随机存取日志分层存储)。

换句话说,在写入方面,控制器上的大caching是否能补偿较慢的寻道时间?

在某种程度上。 有一些因素需要考虑:

  • 只要caching没有被超载,caching将只会产生所需的效果 – 如果数据以突发forms出现,或者以磁盘无法应付负载的持续速率进行caching,则caching将填满,最糟糕的情况是I / O阻塞,直到高速caching刷新到低水位以进一步操作
  • 高速cachingalgorithm经常确保高速caching中的数据不会比“X”更早,即使仍然有空间可用
  • caching发生在“块”中,所以即使你的logging只有16字节的大小,并不意味着你可以在1 GB的cachingRAM中存储6700万条logging
  • 即使对于更大的caching,混合随机读取/写入负载也很难
  • 即使使用大型caching,也可能会遇到填充命令队列的情况,所以如果您的存储需求不仅包括IOPS和带宽需求,而且延迟较低(服务时间较短),那么使用给定的安装选项将很难实现

一些估计math:假设近线SATA磁盘的单个请求的典型服务时间为20毫秒,则I / O子系统需要200,000秒才能向磁盘写入10,000,000个磁盘 – 这是超过55小时的100%磁盘利用率 。 如果你每天得到这么大的写请求,你可能会超出你的I / O子系统。

受到这种或那种边界条件的打击是多么的重要,很大程度上取决于控制器及其caching机制的实现。 你需要进行彻底的testing,这样才不会有不愉快的意外。

如果RAIDcaching是一个限制因素(前面的答案之一表明它可能),我会考虑添加一些智能到前面的caching条纹写入单独的arrays – 比方说2个磁盘各4个镜像 – 并散列目的地,所以你平均分摊负荷。

这不会改善caching本身的使用情况,但是它将为您提供4组独立的主轴来写入,从而避免了一次写入所有主轴的大部分延迟。

正如第一响应者所说,虽然 – 你需要testing什么效果最好。

你有没有想过使用512或1GBcaching的H700,然后在SSD或两个SSD中使用,作为驱动器的额外caching。 戴尔称之为他们的Cachecade技术。

看到这里: http : //www.dell.com/downloads/global/products/pedge/en/perc-h700-cachecade.pdf