Author:skate
Time:2010-3-12
ASM的存储划分想法
数据的保护级别主要有raid10,raid01,raid5
Raid01:首先配置若干raid 0的磁盘组,然后在其上配置raid1,这样底层的磁盘组是raid 0的条带化配置,上层raid 1可以带来磁盘的冗余,但是如果磁盘组中的一个磁盘出现损坏,整个raid 0+1必须要重新做磁盘的条带化,在重建条带化期间,磁盘的冗余也是失效的,这样磁盘组的恢复时间比较长,但是性能会比较好,因为raid 0在读写方面性能比较快。
raid 10: 在raid 1磁盘组的基础上作raid 0的条带化配置,raid 1对磁盘做了数据冗余,是磁盘字节的完全冗余。如果一个磁盘出现损坏,只是一个磁盘损坏,因为raid 1是基础磁盘组配置,所以不会导致磁盘出现损坏,恢复时间只是恢复这个磁盘的时间。由于磁盘写入、读都需要额外I/O做磁盘冗余,性能没有raid 0+1快,但是恢复时间短。
raid 5:与raid1相比在磁盘容量使用上比较少,做block级别的冗余,冗余度没有raid 1+0高,性能上没有raid 1+0快,尤其是小io操作;在读写单个磁盘或者多个磁盘,要多花一些时间或者2倍时间。在raid5组里的盘比较多时,校验盘就成为瓶颈,一般为8块盘一个raid5组
通过上面的了解可以知道,raid10比raid01有较高的可靠度,所以一般建议用raid10;raid5虽然读写性能稍微逊色一些,但他在磁盘容量上消耗的较少,可以用它做备份用,这样也就发挥出了他的特点。
配置raid分为软件raid和硬件raid,为了更好发挥raid的优势,建议用硬件raid,从数据安全和性能都有保障。raid配置以后,就是考虑如何使用raid,一般常用file system, raw partition or ASM;file system和raw partition 各有其特点,而ASM综合了他们的优点。ASM提供了像管理文件系统的操作性,提供了raw partition的性能。ASM一般对数据库只需使用2个磁盘组就可以,一个磁盘组做数据访问,一个磁盘组做闪回取,存取归档、备份、闪回日志等。磁盘化分区做LUN时,我们都是从磁盘最外面的柱面开始划,所以用于存取数据的磁盘组可以用磁盘前半部划分的柱面,性能最快,后半划得柱面可以做闪回磁盘组。
从Oracle 10g R2开始,oracle就建议用ASM文件系统,它不仅提供了条带,还提供镜像的功能。
用asm文件系统的架构一般有如下几种:
存储选择:
1.ASM镜像功能,normal方式
3.RAID 5 and ASM external
2.RAID 1+0 and ASM external
ASM可以按粗细划分AU(AU大小可以为1, 2, 4, 8, 16, 32, or 64MB),ASM的条带分为fine和coarse两种,AU默认大小是1M,,在初始Data File请求时,都是先分配1M AU。如果是细fine,那么每个ASM DISK,分配AU的1/8大小128K,这样每个ASM DISK都会分出1/8 AU.日志文件可以选择细的方式。日志文件和数据文件最好放在不同的存储上,避免磁盘竞争影响性能。调整asm的AU和条带粒度,可以通过隐含参数:_asm_ausize 和 _asm_stripesize(注意最大1M,否则会有负面影响)
在做条带化时,RAID 0 + ASM是最好的条带方式。
了解了存储的方式,下面举个例子,形象的说明下,比如创建一个2T的数据库,4T的空间用于闪回取,存取归档、备份、闪回日志
2T data dg (14×2,raid1)*146G
4T flashback recovery (28×2,raid1)*146G
我以ds4700存储服务器为存储平台说明,ds4700本身可以容纳16个盘;它可以最多连接6个扩展柜(exp710/exp810)来增加容量;exp710扩展柜可以容纳14个盘位,exp810可以容纳16个盘位。根据我们测试环境的要求,一个ds4700+5个扩展柜就够了
一种方案:
这种方案是把整个盘做为LUN。磁盘镜像由存储来做,条带完全又ASM来完成
2T data dg 14*146G,把ds4700的16个盘和一个exp710的12个盘,共28个盘做raid1,然后划分14的lun
4T flashback recovery (28×2,raid1)*146G,其余的盘先做raid1,然后在划分28个lun
这样一来,我就把14个lun做到一个组里,对应用使用,asm条带就是14个盘(LUN);28个LUN做个一个组里,ASm条带28个盘(LUN)
第二种方式:
存储服务器完成raid10,然后在asm层在使用asm条带
每个盘柜配置成一个raid10组,然后把一个raid10组划成一个LUN(一般的存储一个raid组只允许划分一个LUN),我们这里用了6个盘柜,所以是6个LUN(LUN1, LUN2, LUN3, LUN4, LUN5, LUN6)
Array1: LUN1, LUN2
Array2: LUN3, LUN4, LUN5, LUN6
这样asm就分别对两个LUN和四个LUN条带,然后每个LUN有底层raid10的镜像,这种方案的数据镜像有底层硬件存储和asm共同来完成,硬件级别的条带尽量选择1M与ASM的AU相匹配(和AU是倍数关系)
在这两个方案中,我个人觉得第二种方案性能好些,因为有底层硬件参与
在这个测试环境中,我们的镜像都是采用raid1,对于4T flashback recovery 我们可以选择raid5,可以节省很多磁盘
总结:
1.可以考虑用硬件级别保护。ITPUB个人空间4pc
2.尽量选择磁盘外边缘柱面做LUN,可以提供更高性能。
3.尽量选择小磁盘,如73G,带更高rpm 15K.主轴(盘)影响定位时间和数据传输。
4.为了更高带宽,最大化磁盘组的数目。
-------end-------