随着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上创建表空间进行使用。
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的使用。
以下是一个磁盘异常offline示列:


重新给磁盘组加入新的asmdisk


更多精彩干货分享
点击下方名片关注
IT那活儿
