ASM 翻译系列第十弹:ASM Internal ASM DISK header
原作者:Bane Radulovic
译者: 庄培培
审核: 魏兴华
DBGeeK社群联合出品
Block zeroASM磁盘是以AU为单位进行格式化的,部分AU会存放ASM元数据,其他AU存放数据库中的相关数据(如数据文件、备份文件、归档文件等等)。包含ASM元数据的AU会以元数据块的方式进行格式化(一个元数据块的大小为4K)。AU0位于ASM磁盘的起始位置,它始终用于存储ASM元数据。AU0的第一个块,即block 0,就是ASM的磁盘头。
ASM disk header contentsASM 磁盘头的大部分内容仅与本磁盘相关,但也有部分信息与整个磁盘组相关,有些甚至于与整个cluster相关。
我们对一个LINUX平台上通过asmlib管理的磁盘的block 0,使用kfed工具进行输出观察。
上述kfed命令的输出结果显示这个asm块有两种类型的数据 以kfbh为前缀的块头信息和以kfdhdb为前缀的ASM磁盘头信息。实际上,每个ASM元数据块都会有块头信息和与块类型相匹配的一些相关数据。
Important ASM metadata block 0 header data
重要的ASM磁盘头数据
ASM从11.1.0.7版本开始,磁盘头块的信息会自动备份到AU1的倒数第二个ASM元数据块中。知道AU的块大小和ASM元数据块的大小后,就能找到倒数第二个块的块编号。通过kfed工具可以从块头中读取到这些信息,并计算出AU1的倒数第二个块的块编号。
能够看到与AU0的元数据块0相同的内容。当磁盘头被破坏或者丢失时,这个备份将是非常有用的。只需要运行kfed repair [磁盘名]命令即可修复,如果AU大小不是默认的1MB,还需要指定AU大小的具体值。 如果怀疑ASM的磁盘头出现故障,最好寻求Oracle技术支持人员的帮助,而不是独自进行操作。
ASM disk header in Exadata
Exadata中的ASM磁盘并不是以设备名的方式给操作系统使用。它们使用专用的名称格式 o/[存储节点IP]/[磁盘名].kfed工具支持这种名称格式,所以kfed可以在exadata环境中使用。查看Exadata磁盘的ASM磁盘头:
ASM磁盘头中部分Exadata专用属性如下:
ASM磁盘名由磁盘组名 (DBFS_DG),存储节点磁盘标识(CD),存储节点磁盘编(3)号和存储节点名(exadatacel01)构成。失败组的名字与存储节点的名字相同.Exadata环境中默认的AU大小是4MB。
ConclusionASM磁盘头包含ASM磁盘组正常运作和保持可用的重要元数据。 为防止ASM磁盘头的突然损坏和丢失,Oracle推荐通过磁盘分区的方式,就是将它“移动”到远离磁盘物理起始位置的方式实现对ASM磁盘头的保护。Exadata的ASM磁盘头信息通过不暴露给数据库节点的方式进行保护。ASM从11.1.0.7版本开始,ASM磁盘头通过维护一份在AU1备份的方式实现进一步的保护机制。
ASM 翻译系列第一弹:基础知识 ASM AU,Extents,Mirroring 和 Failgroups
ASM 翻译系列第三弹:基础知识 About ASM disk groups, disks and files
ASM 翻译系列第六弹:高级知识 如何映射asmlib管理的盘到它对应的设备名
ASM 翻译系列第七弹:高级知识 How many partners?
我们始终坚信,数据是驱动企业创新的源动力!坚持围绕企业数据库做好一件事
——让高性能触手可及!