概述
ASM的元数据由ASM实例进行维护和管理,元信息本身非常重要,ASM磁盘组中的文件要想被Oracle DB和其他客户端正常使用,就要求元信息一定要是完好无损的,ASM的元信息以元信息块的形式存储在磁盘组中。ASM的元信息可以类比为Oracle数据库的数据字典,一旦核心的元信息发生毁坏,那么ASM磁盘组将不能被装载继而提供服务。
有些ASM 元数据在每个ASM 磁盘的固定位置,被称为物理元信息,
有些ASM元数据是以文件(目录)形式保存,被称为虚拟元数据,
虚拟元数据像所有其他普通ASM 文件一样被管理,它也会根据磁盘组冗余属性决定是否做镜像,在磁盘组的配置发生变化后也会做重平衡,同时元信息本身也会根据需要自动增长。例如元信息1号文件记录了ASM磁盘组中所有文件的基本信息,随着ASM中文件的不断增多,1号文件本身也会自动增长用来记录新增的文件。
ASM元数据
分类
位置
每个ASM磁盘会在第一个AU(AU 0)的第一个block(block 0) 中记录磁盘头信息,
第二个block(block 1)中记录FST表,剩余的块上记录AT表。
PST表的信息则是保存在每个磁盘的第二个AU中(AU 1),虽然每个磁盘的AU 1都会为PST表而预留,但一个磁盘组只会有几个磁盘上真正的存放PST表。
ASM元数据特点
ASM 元数据存储在磁盘组内,换而言之就是磁盘组是ASM 元数据存在的基本前提,值得强调的是ASM 不会在磁盘组之外存储任何东西。 每个ASM 磁盘都有ASM 的元数据信息。
有些元数据是仅和本磁盘相关的,有些是和整个磁盘组相关的。例如ASM 磁盘头是仅仅和本磁盘相关的,但partnership and status table-PST表却是和整个磁盘组相关的。
有些元数据( 例如磁盘头和AT表)会存储在每个磁盘上,而有些元数据只会存储在部分磁盘中。例如每个磁盘的AU1会为PST信息预留,但是仅一部分的磁盘会真正存放PST 信息。
有些元数据结构可能在低的ASM版本上并不存在。例如在兼容性为10.2的磁盘组中,没有staleness directory,它是为了配合11G出现的fast resync特性而出现的元数据结构,因此仅在11.1和之后的版本存在。即使在11.1版本中,外部冗余的磁盘组也没有staleness directory信息,只有normal和high冗余的磁盘组上会有该类元信息。
磁盘头metadata类型
kfed read /dev/sdb aun=0 blkn=0 aus=4194304
1)元数据类型
| Value | 类型 | 说明 |
|---|---|---|
| 1 | KFBTYP_DISKHEAD | |
| 2 | KFBTYP_FREESPC | |
| 3 | KFBTYP_ALLOCTBL | |
| 4 | KFBTYP_FILEDIR | |
| 5 | KFBTYP_LISTHEAD | |
| 6 | KFBTYP_DISKDIR | |
| 7 | KFBTYP_ACDC | |
| 8 | KFBTYP_CHNGDIR | |
| 9 | KFBTYP_COD_BGO | |
| 10 | KFBTYP_TMPLTDIR | |
| 11 | KFBTYP_ALIASDIR | |
| 12 | ||
| 13 | KFBTYP_PST_NONE | |
| 14 | header conflicts | |
| 15 | KFBTYP_COD_RBO | |
| 16 | KFBTYP_COD_DATA | |
| 17 | KFBTYP_PST_META | |
| 18 | KFBTYP_PST_DTA | |
| 19 | KFBTYP_HBEAT | |
| 20 | KFDHDR_FORMER | |
| 23 | KFBTYP_ATTRDIR | |
| 26 | KFBTYP_USEDSPC | |
| 27 | KFBTYP_ASMSPFALS | |
| 28 |
2)磁盘冗余方式:kfdhdb.grptyp
| Value | 类型 |
|---|---|
| 0 | KFDGTP_INVALID |
| 1 | KFDGTP_EXTERNAL |
| 2 | KFDGTP_NORMAL |
| 3 | KFDGTP_HIGH |
3)kfdhdb.hdrsts
| Value | 类型 | 说明 |
|---|---|---|
| 0 | KFDHDR_INVALID | ilegal value |
| 1 | KFDHDR_UNKNOWN | disk header block unreadable |
| 2 | KFDHDR_CANDIDATE | no asm or os disk header found |
| 3 | KFDHDR_MEMBER | normal member of the group |
| 4 | KFDHDR_FORMER | disk dropped cleanly from group |
| 5 | KFDHDR_CONFLICT | header conflicts |
| 6 | KFDHDR_INCOMPATIBLE | written by incompatible software |
| 7 | KFDHDR_PROVISIONED | disk was prepared befor ehand |