RAID和数据库

我使用PostgreSQL 8.4,我想知道什么types的RAID主要用于数据库。 我到处阅读,RAID10是最适合的,RAID5不是一个好的select。 例如: http : //www.revsys.com/writings/postgresql-performance.html

我的服务器是戴尔Poweredge 2950.戴尔的支持告诉我,他们没有很多客户使用RAID10。 大多数时候,他们使用RAID5 + RAID控制器cachingON。

你怎么看? 你使用什么RAID级别的数据库服务器?

谢谢 !

波尔,

如果你有很多写入数据库的话,我可能会用RAID10。

这里有一个很好的现实世界的情况下考虑…更换一个文件服务器,只有一个1TB硬盘与一个新的服务器与四个1TB硬盘驱动器。 决定采用RAID5。

新机器上的性能很差。 后来才发现服务器处理了很多写操作比原来想象的要多。 RAID5的写入惩罚相当糟糕。

正确的决定是使用RAID10。

最好的答案取决于您的数据库适合更密切的configuration文件:OLTP或OLAP。 为了简化,你的数据库是做更多的写或更多的读取? 执行更多的写入操作比读取操作的数据库通常在raid10上执行得比raid5更好(假设使用相同数量的驱动器)。 正如卡尔所说,如果你的数据集(或多个驱动器)远离R5,使用R6,如果R10不是你的select。

这是工作负载依赖,你必须基准。

从理论上讲,RAID 5对于小型写入来说是缓慢的。 一个大caching可以极大地缓解这个问题(甚至可以使它在性能上与给定设置的RAID 1 + 0相同)。

通常RAID 1 + 0在政治上是困难的,因为额外的空间被视为浪费。 试图解释一下,在RAID5上有空的空间可以用来获得性能是一种不同的浪费空间。

如果您无法进行基准testing,并且您已经拥有磁盘空间,请始终使用RAID 1 + 0。 如果您不能进行基准testing,并且您不得不使用RAID5或RAID6,请确保您明确指出RAID6和RAID5对于写入密集型负载具有最大的性能风险。 确保坚持以最先不经过testing创造最大的业绩风险的方式来书写。

在进行基准testing时,请向应用程序组说明RAID5的工作原理,控制器具有可缓解较小写入损失的caching的事实,并且基准需要位于与生产大小相同的数据集上。

做所有这些写作。 存储configuration错误是许多环境中最常见的指责游戏。 基本上,你不会被允许进行基准testing,你将不得不猜测,所以要确保你有证据表明你做出了最好的猜测,或者你被告知要做一些违背最佳实践的事情。

请在这里find有关HP Proliant DL380 G5的性能和扩展报告。
testing基于各种文件系统(jfs,xfs,reiserfs,ext2和ext3)。

说实话,根据我的经验,从数据冗余的angular度来看,RAID5和RAID10并没有什么不同。 然而,由于RAID是条带化的,RAID10提供了性能提升。 RAID 10基本上是一个RAID0和RAID1。 两个RAID0集是镜像的(RAID1)。 我们在RAID10上使用RAID5。 但是我们并不需要RAID10的性能提升。 这只取决于你的环境和你正在使用的东西。 我会build议尝试一个RAID5。 如果看起来性能较慢,则转向RAID10并查看性能增益是否有所帮助。 如果你有小到中等的工作量,RAID5应该可以做到。

为获得最佳性能,请使用SSD,然后是R10,然后是1或0,然后是5,然后是6。

使用RAID5是因为它比RAID10更易于设置和思考。 您不需要偶数的磁盘,而且有更多的人熟悉它。

过去,我们一直在做RAID5(戴尔PowerEdge 2650-2950),但在我们最新的机器上(运行MS-SQL,不是PostgreSQL),我testing了RAID10和RAID5。 我发现,对于我们的工作量,RAID10给了我们适度的性能提升(〜10%)。

如果你有时间的话,我build议把服务器设置为双向运行,并执行正常的数据库任务(备份和恢复,无论你做什么工作或报告)。

SSD并不总是提供最佳性能。 他们以有序的块读取数据,这可能不是数据库所需要的。

在决定用于数据库的RAID和文件系统时,重要的问题是:

  • 数据集/驱动器有多大?
  • 你有多less钱?
  • 它是重读还是重写?

如果数据集很大,即> 10 TB,则需要避免RAID5。 在重buildarrays时,您可能会丢失第二个驱动器,导致数据完全丢失。 RAID6和RAID10是很好的configuration文件,但要注意RAID10的限制。 另外:select一个不需要常规fsck-ing的日志文件系统; 换句话说,避免使用ext3并使用类似xfs的东西……或者更好的办法是使用Solaris并使用zfs。 你有什么想法需要多长时间才能达到10tb的体积?

如果你有更多的钱,你可以购买一个外部的机柜,并可能得到一些额外的速度提升,因为机器不会尝试从数据集中读取系统活动(logging等)。 你也可以用更多的RAM和更高的吞吐量,或更快的磁盘来获得更好的RAID控制器。 基本上,你得到你所支付的。

如果数据是重读的,你可以坚持使用Raid10。 如果你的数据是平衡的读/写或重写,你可能会更好地坚持raid6。