概述
AU
ASM的最小分配单元,默认是1M,可以在创建diskgroup时指定。在diskgroup中的每个盘都被切分为很多个AU,可以是1, 2, 4, 8, 16, 32, or 64MB。
File Extent
由一个或多个AU组成,一个file extent总是在一块磁盘上(不跨磁盘分配AU),这里的file extent和数据库中的extent是不同的,我们可以这样理解,这里的file extent是物理容器,而数据库中的extent是逻辑概念。
下图是AU和file extent的示意图,可以看到刚开始时一个file extent对应一个AU,到达某个数量级后,一个file extent对应8个AU,Oracle称之为Variable size file extent.
Mirror和Stripe
ASM如何做mirror和stripe,其实我们可以把ASM想象为一个存储设备,ASM的方式不是常见的磁盘对磁盘作RAID的方式,我猜测是类似于3PAR这种存储所采用的虚拟化方式,我们看看3PAR是如何处理的。3PAR将每块磁盘都切分为256M的单元(称为chunklet),创建logical disk(定义RAID类型),我们假设为RAID 10,系统自动选取不同磁盘上的chunklet先作mirror,然后再在这些mirror后的chunklet pair上做stripe,条带跨在logical disk上的所有物理磁盘,这样做的好处是因为磁盘被切分为很小的单元,可以实现动态负载迁移。而我们通常的存储,是要先固定的选取一些磁盘,比如8块磁盘,然后创建RAID group,然后在RAID group上创建逻辑盘,这种方式RAID group是固定的,除非重建否则没有办法动态调整。
Oracle ASM也有动态负载迁移的功能,我想Oracle应该是采用差不多的方式,所以Oracle也对磁盘首先划分为AU,AU组成了file extent,然后用file extent来做mirror,但并不是磁盘相同位置的extent来作mirror,Oracle只确保mirror的extent在不同的磁盘或者failure group上。有人问我一个问题,Oracle ASM是RAID10还是RAID 01,我的回答是从AU的角度去看,ASM是RAID 10,因为是先做了mirror,再做stripe。但是如果从磁盘的角度去看,因为不存在两个镜像盘的概念,所以它不是RAID 10,而是介于两者之间的一个东西。假设一个disk group中坏了一块磁盘,这时如果另一个disk group中包含了损坏的disk group上的mirror AU的磁盘也同时损坏,这个ASM就不可以恢复了。但ASM不是RAID 01,因为一个disk group中坏掉一块磁盘,并不意味着整个disk group坏掉,因为RAID 01的概念也是针对于磁盘的。
ASM的stripe有两种,分别是fine和Coarse,fine的stripe depth是128K,coarse的stripe depth等于AU的大小,默认是1M。Oracle对不同文件的条带大小是不同的,数据文件的条带是1M,而redo等小文件的条带是128K。Oracle的条带是跨在disk group的所有磁盘上,假设某个disk group有8块磁盘,当Oracle需要分配1M的extent时,如果stripe size是128K,则在每块磁盘的AU上分配128K,如果stripe size是1M,则在第一个磁盘上分配一个AU(这时实际上就没有stripe了)。如果Oracle需要分配4M的extent,而stripe size是128K,则在第一个磁盘分配128k,依次类推到第8块磁盘,然后接着从第一块磁盘开始分配,最后每个disk上分配了512K的空间(但是不连续的),而stripe size是1M,则在前四个disk上各分配一个AU。
从Oracle的角度看,extent是逻辑连续的,而ASM则根据stripe将其分散在不同的物理磁盘上,由ASM来维护AU,file extent,Oracle extent的对应关系,其实ASM就是一个存储管理软件。
–EOF–
最后两段说的有点绕,如何 stripe 取决于文件的类型,这是根本。
有一副图来描述就完美了!
The ASM coarse striping is always equal to the disk group AU size, but fine striping size always remains 128KB in any configuration.(11gR1 doc)
AU is ASM_disk’s Unit,
Extent is ASM_File’s Unit,
Strip is ASM_File’s Strip.
最后
以上就是无情钢笔为你收集整理的Oracle ASM存储方式浅析的全部内容,希望文章能够帮你解决Oracle ASM存储方式浅析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复