ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 技术相关:Oracle系统的RAID选择

技术相关:Oracle系统的RAID选择

原创 Linux操作系统 作者:szandrew 时间:2009-07-18 10:34:40 0 删除 编辑
技术相关:Oracle系统的RAID选择
--王珏原创

    有很多“Oracle砖家”建议用户使用RAID 5。我非常不赞成。我在去年就已经针对这个噩梦写过一篇文章(参见:Oracle:Oracle数据搬出RAID 5 )。

    Oracle的推荐的IO做法是:SAME(Stripe and Mirror Everywhere,在任何地方都是用“条带+镜像”,当然就是 RAID 1+0 ) ,而作为硬件供应商又总是顽固的坚持RAID 5可以用在OLTP类型的Oracle中。其实这是“商业利益”在作怪,作为Oracle当然不用理会你买什么硬件,关键是别把性能问题归结到 Oracle软件本身才好;而硬件厂商当然要炫耀其硬件性能如何了得,技术如何先进。
     Oracle似乎也发现大家都不爱用RAID1+0(容量缩减一般,成本太高),因此在10g中引入了ASM“自动存储管理”(Automatic Storage Management,参见:Automated Storage Management ASM configuration ),而Oracle ASM背后的基础就是RAID1+0,Oracle在大力推荐ASM的背后目的其实就是为了利用RAID1+0来“维持”Oracle系统的I/O性能。
    Oracle关于RAID的推荐如下:RAID Recommendations (From Metalink NOTE: 45635.1)
RAID Raid类型 Control File Database File Redo Log File Archive Log File
0 条带
避免 可以 避免 避免
1 镜像
最佳 可以 最佳 最佳
1+0 条带+镜像 可以 最佳 避免 避免
3 条带+静态奇偶校验 可以 可以 避免 避免
5 条带+轮转的奇偶校验 可以 如果RAID1+0不可用也可以 避免 避免
    为什么RAID 5不建议使用在有大量更新的Oracle系统中呢?这要从RAID 5的原理说起(参见:RAID 5术语解释)。
RAID 5 是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
    简单来说,就是RAID 5在写入的时候需要计算数据的“奇偶校验信息”一并写入到RAID 5的其他磁盘上,由于这个计算过程,写性能会大大降低;而在读取的时候并不需要计算这个过程,因此“读”的时候可以多个磁盘同时读,性能当然较单个磁盘要好很多,读性能差不多和RAID 0一样

    其实,由于一些新技术的出现,目前已经支持RAID 5使用在存在大量更新操作的Oracle中了,参见:
    RAID5 now acceptable for Oracle --RAID5已经被Oracle接受。
    databases Using RAID5 with Oracle?    --Oracle可以使用RAID 5吗?

    Why Modern RAID 5 is Ideal for Oracle Databases
--为什么现代RAID 5是Oracle数据库的理想存储?

    但要知道,这都是些“新技术”。其实简单来说,就是如何规避“计算数据的奇偶校验信息一并写入到RAID 5的其他磁盘上”的写性能损失。比如: Hitachi TagmaStore RAID5 "Universal Storage Platform"使用256G内存作为RAID 5的cache,来规避上述的写性能损失。
    

    作为普通用户的我们,你买得起那么昂贵的存储设备吗?你有那么大的Cache吗?(如果为了使用RAID5 要买如此昂贵的设备,还不如直接使用RAID 1+0,除非你的Oracle有“N多T”或者“N多P”)。
    因此也就诞生了BAARF “Battle Against Any Raid Five”--向任何形式的RAID 5开战,这么个奇怪的组织。

    因此关于Oracle的RAID选择,我的建议就是采用RAID1+0;

    因此关于Oracle 存储设计的正确做法是:(I/O Configuration and Design
  1. 一般情况,把你所有的盘做成一个RAID10,然后把所有文件都放置上面就ok了。
    • RAID最小stripe depth设定原则
    1. 随机读写频繁:db_block_size*2
    2. 顺序读频繁:DB_FILE_MULTIBLOCK_READ_COUNT*db_block_size
  2. 如果,LVM不支持动态扩展,或者如果你只就几块单盘,不够条件组成RAID。
    1. 数据文件和索引没有必要分开,因为他们是顺序读取的。
    2. Redo log文件单独放到一个盘上,且千万不可放置到RAID5上。
参考文献:
Oracle and RAID Usage
Oracle disk RAID Technology
Oracle: Oracle数据搬出RAID 5






Automated Storage Management ASM configuration



Link URL: http://blog.sina.com.cn/s/blog_592060b50100d0le.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/91771/viewspace-609562/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-18

  • 博文量
    18
  • 访问量
    25994