从asm磁盘头自动备份看11g到12c的新特性--Physical_metadata_replication
概述
磁盘头(AU0 block0)对于ASM磁盘来说无比重要,ASM 磁盘头的大部分内容仅与本磁盘相关,但也有部分信息与整个磁盘组相关,有些甚至于与整个cluster相关。
所以从10.2.0.5开始,oracle在创建磁盘组的时候,会自动备份磁盘头到另外一个位置,具体在AU1的倒数第二个block。但是不同的ausize,倒数第二个块的位置不同,所以今天写了个kfed循环,查找磁盘头位置
11g
[grid@11gasm ~]$ for ((j=0; j<512; j++));do
for ((i=0; i<1024; i++));do
if kfed read /dev/sde aun=$j blkn=$i aus=4194304| grep KFBTYP_DISKHEAD
then
echo i=$i,j=$j
fi
done;
done
kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
i=0,j=0
kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
19c
[grid@19crac1 ~]$ for (( j=0; j<2048; j++ ));do
for (( i=0; i<1024; i++ ));do
if kfed read /dev/sdf aun=$j blkn=$i aus=4194304| grep KFBTYP_DISKHEAD
then
echo i=$i,j=$j
fi
done;
done
kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
i=0,j=0
kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
i=1022,j=1
kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
i=0,j=11
如上,11g的结果在我们的预期内,倒数第二个块为1022,因为aus=4M,元数据块大小为4K,所以一个AU里面有1024个块,0-1023,倒数第二个块为1022.
19c的前面两个结果也如预期,但是还有第三个磁盘头的地方,AU 11 BLOCK 0,意思就是19c有第三个磁盘头的备份。
下面就研究下这个特性
参考asm大神的blog:Physical metadata replication
读取AU11
kfed循环读取AU11个每个块
[grid@19crac1 ~]$ for (( i=0; i<20; i++ ));do if kfed read /dev/asm_arch01 aun=11 blkn=$i aus=4194304| grep type; then echo i=$i; fi; done
kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
i=0
kfbh.type: 2 ; 0x002: KFBTYP_FREESPC
i=1
kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
i=2
kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
i=3
kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
i=4
kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
i=5
kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
i=6
kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
i=7
kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
i=8
kfbh.type: 3 ; 0x002: KFBTYP_ALLOCTBL
i