为 Oracle 数据库设置 SSD 阵列,建议?

Joh*_*ohn 5 oracle raid storage ssd oracle-11g

我正在为一个小型但读取 I/O 密集型数据库配置服务器。它用作公共访问更大的 Oracle RAC 数据库的主索引。在查看 I/O 要求时,确定一组 SSD 将提供所需的性能,并且成本低于大量 SAS 15K 轴。我有一台 HP 服务器,带有仅连接到 SSD 的 Smart Array P400。控制器有 256MB 的 BBWC。SSD 是三星(我相信)制造的基于 60GB SLC 的 2.5" SATA。

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

在过去的几个月里,我阅读了大量关于 SSD 的文章,我并不反对做更多的工作,但是我的 google-fu 已经开始让我无法继续前进。我在 SSD RAID 上找到的大多数文档都是针对那些为家用 PC 上的启动驱动器执行消费级 SSD RAID 0 的人,以加快 Windows 7 启动和加载游戏的速度。我的意思是,我不是在找人来做我的工作,只是提供他们的任何经验或他们找到的文档的链接。

提前致谢!

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

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

作为一个读取量很大的数据库(4-8k 中的 95%+ 随机读取),我认为我可能会从 RAID 5 中获得更好的性能,因为我可以从阵列中的 N-1 个驱动器读取,而不仅仅是从阵列中的活动磁盘读取镜像,因为我读过一些内容表明 Smart Array P400 不支持从 RAID 10 组中的镜像两侧读取。也就是说,在我不得不担心之前,我相当肯定控制器最终会成为瓶颈。

关于 TRIM:我相当肯定,即使这些驱动器支持 TRIM(我不相信他们支持),那么将 TRIM 命令通过 RAID 控制器推送到单个驱动器也会有些困难。操作系统支持也很冒险,因为 Red Hat Enterprise Linux 5 仍然基于 2.6.18 内核树,尽管进行了大量自定义以从更高版本的内核版本中引入功能。EXT4 还没有得到官方支持,作为一个生产盒,我需要让自己处于 Red Hat 和 HP 会在出现问题时帮助我的领域。不过,我确实相信在驱动器级别存在某种垃圾收集。我在不同的基准测试过程中多次填充磁盘,并且没有

以下是使用 256KB 条带大小的 6 驱动器 RAID 10 阵列的一些基准数据。分区为 EXT3,64 个扇区对齐。使用 NOOP 调度程序,并在挂载时给出 NOATIME 选项。我还将操作系统读取缓存增加到 8MB(我相信默认值为 512K)。我在这个测试中使用了 Iozone 3.347,记录大小为 4KB,基准文件大小为 25GB,希望能从图片中取出缓存并测量驱动器的实际性能。我还用四个线程运行了它(4x25GB 文件由 4 个子进程写入以对驱动器施加压力。)

运行开始: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
Run Code Online (Sandbox Code Playgroud)

Tom*_*Tom 2

到目前为止我在其他答案中没有看到的一些要点:

  • 高端服务器 SSD 的负载约为 30.000 IO。RealSSD 高达 50.000
  • 因此,您可以使用 RAID 5。点。您的瓶颈很可能是 RAID 控制器,该控制器根本没有考虑 SSD IOPS,因此它会最大化 CPU 的性能。

一般来说,SSD 在随机 IO 方面的速度大约是 SAS 驱动器的 100 倍。多一点。根据您的要求,用 SSD 的 RAID 5 替换 SAS 的 RAID 10 是完全可行的,并且在 IOPS 和价格方面仍然显着领先。

最佳条带大小通常是 64k 的倍数 - 尤其是当 SSD 在这些段中读/写时。那么不一定需要 TRIM(没有部分写入)...但如果有的话那就太好了。

MS在数据库中有一些关于SSD的文章,这些文章也适用于oracle(相同的原理-优化IOPS)。Oracle 也应该有一些。