为Oracle数据库设置SSDarrays,build议?

我正在configuration一个小型服务器,但读取I / O密集型数据库。 它作为公共访问大型Oracle RAC数据库的主索引。 在考虑I / O的需求时,确定了一系列SSD可以提供比大量SAS 15K主轴成本更低的性能。 我有一个惠普服务器,一个智能arraysP400将只连接到SSD。 控制器有256MB的BBWC。 固态硬盘是三星(我相信)制造的60GB SLC 2.5“SATA。

我想知道是否有人洞察到RAID 10或5的最佳条带大小,文件系统build议? 我们将要做Oracle 11g,所以我相信我需要有一个文件系统,而不是使用RAW块设备。 服务器将运行RHEL 5.5。

在过去的几个月中,我已经做了大量的关于固态硬盘的阅读,我不反对做更多,但是我的谷歌已经开始使我无法前进。 我在SSD RAID上发现的大多数文档都是为了在家用电脑上启动驱动器的消费者级别SSD的RAID 0,以使Windows 7启动和加载游戏的速度更快。 我所说的是,我不是在找别人去做我的工作,只是提供他们已经有的经验,或者链接到他们find的某个文件。

提前致谢!

编辑一些额外的信息,而不是回复每个人的评论:

驱动器空间根本不是问题,因为数据库足够小,可以安装在其中一个SSD上,而且没有问题。

作为一个非常重读的数据库(在4-8k中有95%的随机读取),我想我可能从RAID 5中获得更好的性能,只是因为我可以从arrays中的N-1个驱动器读取数据,而不是只读取镜像,因为我读过的东西表明,Smart Array P400不支持在RAID 10集中镜像两侧读取。 也就是说,我相当肯定,在我不必担心这个问题之前,控制器最终会成为一个瓶颈。

在TRIM上:我相当肯定,即使这些驱动器支持TRIM(我不相信他们这样做),那么通过RAID控制器将TRIM命令推送到各个驱动器也会有些困难。 操作系统的支持也是有害的,因为红帽企业Linux 5仍然基于2.6.18内核树,尽pipe有很多自定义function来引入更高版本的内核版本。 EXT4还没有得到官方的支持,作为一个生产环境,如果出现问题,我需要保持自己的地位,红帽和惠普将帮助我。 尽pipe如此,我相信在驱动器级别上还是会有一些垃圾收集。 在不同的基准testing过程中,我已经多次填充了磁盘,而且如果我不得不等待擦除/编程周期而不仅仅是编程周期,则没有看到写入速度明显下降。

以下是6个驱动器RAID 10arrays的基准数据,使用256KB的条带大小。 分区是EXT3,在64个扇区alignment。 使用NOOP调度程序,并在挂载时给出NOATIME选项。 我也增加了操作系统读取caching到8MB(我相信默认是512K)。 我使用了Iozone 3.347进行这个testing,logging大小为4KB,基准文件大小为25GB,希望能够将caching从图片中删除,并测量驱动器的实际性能。 我也用四个线程(4x25GB文件是由4个subprocess写入驱动器压力)运行。

运行开始:2010年8月30日星期一12:09:57

Record Size 4 KB File size set to 26214400 KB Command line used: /opt/iozone/bin/iozone -b /root/4k25g4t.xls -r 4k -s 25g -t 4 -i 0 -i 1 -i 2 Output is in Kbytes/sec Time Resolution = 0.000001 seconds. Processor cache size set to 1024 Kbytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size. Throughput test with 4 processes Each process writes a 26214400 Kbyte file in 4 Kbyte records Children see throughput for 4 initial writers = 253416.93 KB/sec Parent sees throughput for 4 initial writers = 229461.66 KB/sec Min throughput per process = 61416.07 KB/sec Max throughput per process = 64604.90 KB/sec Avg throughput per process = 63354.23 KB/sec Min xfer = 24924492.00 KB Children see throughput for 4 rewriters = 259375.90 KB/sec Parent sees throughput for 4 rewriters = 234136.11 KB/sec Min throughput per process = 63879.16 KB/sec Max throughput per process = 65675.30 KB/sec Avg throughput per process = 64843.97 KB/sec Min xfer = 25497648.00 KB Children see throughput for 4 readers = 490873.09 KB/sec Parent sees throughput for 4 readers = 490830.09 KB/sec Min throughput per process = 119007.65 KB/sec Max throughput per process = 124878.35 KB/sec Avg throughput per process = 122718.27 KB/sec Min xfer = 24984912.00 KB Children see throughput for 4 re-readers = 477533.65 KB/sec Parent sees throughput for 4 re-readers = 477503.03 KB/sec Min throughput per process = 115802.55 KB/sec Max throughput per process = 121579.46 KB/sec Avg throughput per process = 119383.41 KB/sec Min xfer = 24973364.00 KB Children see throughput for 4 random readers = 35728.62 KB/sec Parent sees throughput for 4 random readers = 35728.53 KB/sec Min throughput per process = 8926.97 KB/sec Max throughput per process = 8937.35 KB/sec Avg throughput per process = 8932.16 KB/sec Min xfer = 26183936.00 KB Children see throughput for 4 random writers = 23527.42 KB/sec Parent sees throughput for 4 random writers = 20701.37 KB/sec Min throughput per process = 5757.43 KB/sec Max throughput per process = 6035.68 KB/sec Avg throughput per process = 5881.86 KB/sec Min xfer = 25011236.00 KB "Throughput report Y-axis is type of test X-axis is number of processes" "Record size = 4 Kbytes " "Output is in Kbytes/sec" " Initial write " 253416.93 " Rewrite " 259375.90 " Read " 490873.09 " Re-read " 477533.65 " Random read " 35728.62 " Random write " 23527.42 

有些观点我没有看到在其他答案到目前为止:

  • 一个高端的服务器固态硬盘将产生大约30.000 IO。 RealSSD高达50,000
  • 因此,您可以使用RAID 5。 你的瓶颈很可能是RAID控制器,它不是考虑到SSD IOPS,所以它会最大限度地利用CPU。

一般来说,SSD是随机IO中SAS驱动器的100倍。 多一点。 根据您的要求,用SSD的RAID 5replaceSAS 10的RAID 10是完全可行的,并且在IOPS以及价格方面仍然领先 – 显着。

最佳的条带大小是64k的典型倍数 – 特别是SSD读取/写入在这些段无论如何。 TRIM不一定需要那么(没有部分写入)…但是这将是非常好的。

MS也在适用于oracle的数据库中也有一些关于SSD的讨论(同样的原则 – 优化IOPS)。 甲骨文也应该有一些。

RAID-10将是理想的。

考虑到典型的英特尔64GB SLC固态硬盘的成本约为700美元,你需要4个才能创buildRAID-10,而64GB的DDR3注册ECC内存则需要1600美元(除非你是从戴尔购买的)获得内存可能是一个明智的投资,这个速度比任何固态硬盘都要快,而且会持续更长的时间。

这个想法是将整个数据库托pipe在RAM中,假设你的数据库大小加上索引不超过64GB。

除非您需要RAID5可提供的驱动器空间,否则请去RAID10。 在大多数情况下,您将从RAID10中获得更好的性能。

像Amala说的那样,确保驱动器和操作系统支持TRIM。 使用与OS的块大小一致的条带大小(对于数据库服务器而言,64k是相当常见的),并确保分区偏移了这个倍数(1MB偏移量是很常见的)。

这个链接有一个很好的总结和Raid 10的build议: http : //www.yonahruss.com/architecture/raid-10-vs-raid-5-performance-cost-space-and-ha.html

通常不推荐使用Raid 5。 它有写入应用程序的奇怪特征。 我会去Raid 10的。我不知道有关条纹大小,我不知道这是多么重要。

确保你的Linux发行版支持SSD的TRIM。 看起来你需要内核:Linux 2.6.33和Ext4。

即使R5 / R6的速度超过15k SAS,我也没有看到问题。 正在考虑做一个R6arrays22 SSD +2热备份。