资讯专栏INFORMATION COLUMN

Oracle ASM那点事儿

IT那活儿 / 568人阅读
Oracle ASM那点事儿

随着X86服务器的普及,传统的商业卷文件系统、裸设备开始逐步退出历史舞台,而ASM将成为新版本数据库存储类型的第一选择。今天就来一起复习一下ASM的相关知识。

ASM (自动存储管理) 是 Oracle Database 的一个特性,它为数据库管理员提供了一个在所有服务器和存储平台上统一的存储管理接口。ASM的出现是为RDBMS管理文件存储,注意ASM不会替代RDBMS去实施IO读写,很多人对这一点存在误解,认为RDBMS发送IO request给ASM,ASM负责去做真正的IO操作,这是不对的。实际RDBMS在ASM中获取了对应数据文件extent信息后,自行完成IO调用,和使用裸设备、商业文件系统一样,因此ASM不是IO的中间层,也就不存在因为ASM出现所谓的IO瓶颈,对于ASM而言底层 DISK可以是传统SAN存储裸设备也可以是新分布式存储块设备,这些在ASM层都可以统称为asmdisk。

在ASM中最小存储单位是一个"allocation unit"(AU),通常为4MB。ASM的核心便是存储文件,包含数据文件、控制文件等等,这些文件在ASM中被划成多个文件片,称之为"extent",ASM使用file extent map来维护文件extent的相关信息,这样RDBMS便可以轻易的获取到相关文件extent信息以便完成IO调用。同RDBMS实例一样,ASM实例也采用instance/crash recovery机制来保证可靠性。

以上说了些ASM底层asmdisk也说了ASM内部将文件拆分为extent,那最终ASM层将以若干块asmdisk组成的DiskGroup为接口对RDBMS呈现,比如一个DATA DG,对于RDBMS来说就是以’+DATA’表示的一个存储点, 可以在该DG上创建表空间进行使用。

同样可以建一个ARCH DG,对于RDBMS来说就是以’+ARCH’表示的一个存储点,可以来存放归档文件。

在ASM中DiskGroup提供了EXTERNAL、NORMAL、HIGH三种冗余镜像冗余模式:
  • EXTERNAL 即ASM本身不做镜像,而依赖于底层存储RAID;在External下任何asmdisk错误都会导致Disk Group被强制dismount。因此在此模式下所有的asm disk必须状态正常,否则Disk Group将dismount,其中涉及的文件将无法访问。
  • NORMAL 即ASM将为每一个extent创建一个额外的拷贝以便实现冗余;默认情况下所有的文件都会被镜像,这样每一个file extent都有2份拷贝。当镜像的extent(partner)涉及的磁盘同时故障时也将导致Disk Group被dismount。否则不影响Disk Group的使用。
  • HIGH 即ASM为每一个extent创建额外两个的拷贝以便实现更高的冗余。这样每一个file extent都有3份拷贝。当这3份镜像extent(partner)涉及的磁盘同时故障时Disk Group也将被dismount。否则不影响Disk Group的使用。

注意ASM的镜像和RAID并不一样,ASM的镜像基于文件extent,extent分布在多个磁盘之间,称为partner。
当某asmdisk故障时其状态将会成为offline,ASM更新其extent map使之后的读取操作指向剩余的健康partner。在这期间ASM将记录相关extent的变更记录,以便该磁盘重新online后补全故障期间的变更重新恢复镜像冗余。当该故障的asm disk永久无法恢复时,需要人为在ASM中删除该磁盘,以便ASM自动在后台重新生成镜像partner恢复冗余度。当新添加asm disk时,和删除磁盘一样,ASM也会自动在后台开始数据重新平衡工作。重平衡的速度和力度可以通过asm_power_limit参数控制,该参数控制实施重平衡后台进程的数量;Level 0表示不实施重新平衡,在重新平衡过程中IO性能(主要是吞吐量和响应时间)可能会受到影响,其影响程度取决于存储本身的能力和重新平衡涉及的extent量。

以下是一个磁盘异常offline示列:

由于虚拟机主机层直接删除了asmdisk,所以DATADG出现offline磁盘
这里可以看到当完成删除磁盘时SQL命令时,REBAL进程任在后台异步重平衡,并输出工作进度,以便观察。

重新给磁盘组加入新的asmdisk

注意这里v$asm_operation中的数值只能作为参考,实际需要核验alert日志,比如出现SUCCESS: rebalance completed for group 1/0x97f863e8 (DATADG)类似关键字,确认冲平衡进度,才能确认重平衡的实际状态,本文就到此为止。

END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129938.html

相关文章

  • Javascripit类型转换比较那点事儿,双等号(==)

    摘要:同理,若为,返回的结果若为或者,且为,返回的结果。同理,若为或者,且为,返回的结果是对象转换基本类型的方法。看个例子根据上述规则来解析为,上式为第条上式为第条上式为,上式为第条上式为 前不久因为一个项目设计的问题,烦心了好几天,为了不留坑拥抱强类型语言特点,还是选择了===作为数据判断是否相等,对于==今天来探究一下猫腻(弱类型的JavaScript的坑真的太多了,typescript...

    Steve_Wang_ 评论0 收藏0
  • form表单那点事儿(下) 进阶篇

    摘要:在表单提交时,浏览器会自动进行一系列的校验工作,没有通过校验的表单是无法提交到服务器的。而方法提交表单,会在请求中发送表单字段键值对。表单提交事件表单提交到服务器时,会触发事件。 上一篇主要温习了一下form表单的属性和表单元素,这一片主要讲解用JavaScript如何操作form。 表单操作 取值 用JavaScript操作表单,免不了会有取值赋值操作,比如有以下表单: ...

    jerryloveemily 评论0 收藏0
  • form表单那点事儿(上) 基础篇

    摘要:用于或元素时,将提交指定的表单示例代码只能上传图片只能上传视频使用的属性,是一个类型的值,或文件后缀名。在以前,要想改变表单元素外观,需要通过其他标签来模拟。以下点到名的表单元素,还是可以照常使用的。 做为html中最为常见,应用最广泛的标签之一,form常伴随前端左右。了解更深,用的更顺。 表单属性 这个表单展示了form表单常用的属性 属性名 属性值 ...

    Forest10 评论0 收藏0
  • 【C语言】玩转结构体——结构体的那点事儿

    摘要:一结构体的声明与定义结构体的声明结构是一些值的集合,这些值称为成员变量。但是结构体变量的变量名并不是指向该结构体的地址,所以要使用取地址运算符才能获取其地址。因此,结构体传参的时候,要传结构体的地址。 ...

    jeffrey_up 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<