#ASM 翻译系列第二十三弹:ASM Internal ASM files number 12 and 254
来源:互联网 发布:建筑cad软件下载 编辑:程序博客网 时间:2024/05/21 15:00
原文: ASM files number 12 and 254
作者: Bane Radulovic
译者:郭旭瑞,沃趣科技产品交付部经理,负责QData Cloud高性能数据库云平台、QBackup数据库秒级备份恢复云平台等产品的整体交付管理与技术支持、维保服务工作。
审校:魏兴华
责编:仲培艺
staleness directory是ASM元信息的12号文件,包含了可以把staleness registry中的槽位映射给特定磁盘和客户端的元信息。staleness registry是ASM元信息254号文件,当磁盘offline时,用于跟踪AU的状态。这两个特性适用于COMPATIBLE.RDBMS设置为11.1或以上且NORMAL或HIGH冗余模式的磁盘组。只有在需要时staleness元信息才会被创建,本身的内容大小会随着offline磁盘的增多而增长。
译者注:这里的客户端可以理解成数据库实例
当一个磁盘offline时,每个RDBMS实例都会从staleness registry中得到一个映射到该磁盘的槽位。这个槽位中的每一个比特位映射这个offline磁盘上的一个AU。当RDBMS实例对offline的磁盘发起写IO操作时,该实例会在staleness registry中修改对应的比特位。
当一个磁盘被online时,ASM会从冗余的extent中拷贝staleness registry比特位中记录的AU。因为只有offline时被改变过的AU会被更新,所以磁盘online操作的效率会高于该盘被drop并添加一块新盘的效率。
No stale disks
staleness元信息的结构在需要时会被创建,这意味着staleness directory和staleness registry在磁盘正常online时是不存在的。
SQL> SELECT g.name "Disk group", g.group_number "Group#", d.disk_number "Disk#", d.name "Disk", d.mode_status "Disk status"FROM v$asm_disk d, v$asm_diskgroup gWHERE g.group_number=d.group_number and g.group_number<>0ORDER BY 1, 2, 3;Disk group Group# Disk# Disk Disk status------------ ---------- ---------- ------------ ------------DATA 1 0 ASMDISK1 ONLINE 1 ASMDISK2 ONLINE 2 ASMDISK3 ONLINERECO 2 0 ASMDISK4 ONLINE 1 ASMDISK5 ONLINE 2 ASMDISK6 ONLINESQL> SELECT x.number_kffxp "File#", x.disk_kffxp "Disk#", x.xnum_kffxp "Extent", x.au_kffxp "AU", d.name "Disk name"FROM x$kffxp x, v$asm_disk_stat dWHERE x.group_kffxp=d.group_number and x.disk_kffxp=d.disk_number and x.number_kffxp in (12, 254)ORDER BY 1, 2;no rows selected
Stale disks
Staleness信息在磁盘offline并且在针对该offline盘有写IO时才会被创建。
在下面的例子中,我会通过ALTER DISKGROUP OFFLINE DISK命令手动把一个磁盘offline。但是需要指出,staleness元信息的创建跟磁盘以何种方式何种原因offline无关。
SQL> alter diskgroup RECO offline disk ASMDISK6;Diskgroup altered.SQL> SELECT g.name "Disk group", g.group_number "Group#", d.disk_number "Disk#", d.name "Disk", d.mode_status "Disk status"FROM v$asm_disk d, v$asm_diskgroup gWHERE g.group_number=d.group_number and g.group_number=2ORDER BY 1, 2, 3;Disk group Group# Disk# Disk Disk status------------ ---------- ---------- ------------ ------------RECO 2 0 ASMDISK4 ONLINE 1 ASMDISK5 ONLINE 2 ASMDISK6 OFFLINE
数据库针对该磁盘组进行不断的写入,很快就可以观察到该磁盘组中已经创建了staleness directory和staleness registry。
SQL> SELECT x.number_kffxp "File#", x.disk_kffxp "Disk#", x.xnum_kffxp "Extent", x.au_kffxp "AU", d.name "Disk name"FROM x$kffxp x, v$asm_disk_stat dWHERE x.group_kffxp=d.group_number and x.disk_kffxp=d.disk_number and d.group_number=2 and x.number_kffxp in (12, 254)ORDER BY 1, 2; File# Disk# Extent AU Disk name---------- ---------- ---------- ---------- ------------------------------ 12 0 0 86 ASMDISK4 1 0 101 ASMDISK5 2 0 4294967294 ASMDISK6 254 0 0 85 ASMDISK4 1 0 100 ASMDISK5 2 0 4294967294 ASMDISK6
Look inside
元信息中并没有很多有价值的信息,连kfed都无法分辨出这种类型元信息block。
$ kfed read /dev/oracleasm/disks/ASMDISK4 aun=86 | morekfbh.endian: 1 ; 0x000: 0x01kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 21 ; 0x002: *** Unknown Enum ***...kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffffkffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0kffdnd.overfl.number: 4294967295 ; 0x00c: 0xffffffffkffdnd.overfl.incarn: 0 ; 0x010: A=0 NUMM=0x0kffdnd.parent.number: 0 ; 0x014: 0x00000000kffdnd.parent.incarn: 1 ; 0x018: A=1 NUMM=0x0kffdnd.fstblk.number: 0 ; 0x01c: 0x00000000kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0kfdsde.entry.incarn: 1 ; 0x024: A=1 NUMM=0x0kfdsde.entry.hash: 0 ; 0x028: 0x00000000kfdsde.entry.refer.number: 4294967295 ; 0x02c: 0xffffffffkfdsde.entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0kfdsde.cid: +ASMR ; 0x034: length=5kfdsde.indlen: 1 ; 0x074: 0x0001kfdsde.flags: 0 ; 0x076: 0x0000kfdsde.spare1: 0 ; 0x078: 0x00000000kfdsde.spare2: 0 ; 0x07c: 0x00000000kfdsde.indices[0]: 0 ; 0x080: 0x00000000kfdsde.indices[1]: 0 ; 0x084: 0x00000000kfdsde.indices[2]: 0 ; 0x088: 0x00000000...$ kfed read /dev/oracleasm/disks/ASMDISK4 aun=85 | morekfbh.endian: 1 ; 0x000: 0x01kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 20 ; 0x002: *** Unknown Enum ***...kfdsHdrB.clientId: 1297301881 ; 0x000: 0x4d534179kfdsHdrB.incarn: 0 ; 0x004: 0x00000000kfdsHdrB.dskNum: 2 ; 0x008: 0x0002kfdsHdrB.ub2spare: 0 ; 0x00a: 0x0000ub1[0]: 0 ; 0x00c: 0x00ub1[1]: 0 ; 0x00d: 0x00ub1[2]: 0 ; 0x00e: 0x00ub1[3]: 0 ; 0x00f: 0x00ub1[4]: 0 ; 0x010: 0x00ub1[5]: 0 ; 0x011: 0x00ub1[6]: 0 ; 0x012: 0x00ub1[7]: 16 ; 0x013: 0x10ub1[8]: 0 ; 0x014: 0x00...
除了一些比特位,没有太多有价值信息。
总结
staleness directory和staleness registry提供的元信息结构用来为ASM 11中引入的fast mirror resync新特性提供支持。staleness directory是ASM元信息12号文件,包含了可以把staleness registry中的槽位映射给特定磁盘和客户端的元信息。当磁盘offline时,staleness registry用于跟踪AU的状态。这个特性只在NORMAL或HIGH冗余模式的磁盘组中生效。
- #ASM 翻译系列第二十三弹:ASM Internal ASM files number 12 and 254
- #ASM 翻译系列第二十四弹:ASM Internal ASM files number 10 and 11
- ASM 翻译系列第十七弹:ASM Internal ASM Disk Directory
- ASM 翻译系列第十弹:ASM Internal ASM DISK header
- #ASM 翻译系列第十七弹:ASM Internal ASM Disk Directory
- #ASM 翻译系列第十八弹:ASM Internal ASM file number 5
- #ASM 翻译系列第二十弹:ASM Internal ASM file number 7
- #ASM 翻译系列第二十二弹:ASM Internal ASM file number 8
- ASM 翻译系列第十二弹:ASM Internal amdu
- ASM 翻译系列第十四弹:ASM Internal Rebalancing act
- ###ASM 翻译系列第二十八弹:ASM INTERNAL Partnership and Status Table
- #ASM 翻译系列第十六弹:ASM Internal ASM Active Change Directory
- ASM 翻译系列第八弹:ASM Internal ASM file extent map
- #ASM 翻译系列第十九弹:ASM Internal ASM Continuing Operations Directory
- #ASM 翻译系列第二十七弹:ASM INTERNAL ASM METADATA BLOCK
- #ASM 翻译系列第三十二弹:ASM INTERNAL Find block in ASM
- #ASM 翻译系列第三十四弹:ASM INTERNAL ASM Disk Group Attributes
- ASM 翻译系列第九弹:ASM工具箱
- QT 读串口可用代码初步调试通过
- #ASM 翻译系列第二十二弹:ASM Internal ASM file number 8
- 全局替换安卓应用字体
- MySQL数据库基础(一)(启动-停止、登录-退出、语法规范及最基础操作)(持续更新中)
- eclipse svn 会报 文件夹 "" 已不存在
- #ASM 翻译系列第二十三弹:ASM Internal ASM files number 12 and 254
- UVA 1025 A Spy in the Metro城市里的间谍(dp)
- 托管C++嵌入C#
- #ASM 翻译系列第二十四弹:ASM Internal ASM files number 10 and 11
- 皮皮学Web第四弹——ServletContext
- #ASM 翻译系列第二十五弹:ASM 高级知识 When will my rebalance complete
- 转载Nexus-入门指南
- Java基础加强之集合篇(模块记忆、精要分析)
- pip install mysql-connector-python安装时报错