Oracle ASM 翻译系列第二十九弹:ASM INTERNAL Free Space Table

简介:

Free Space Table

在进行创建文件或者文件resize过程中,需要有一个快捷入口,可以迅速的知道当前磁盘有哪些可用的(free状态的)AU,ASM Free Space Table 简称FST表就是提供一个这样的功能,通过它可以快速的知道哪些allocation table(AT表)元数据块中有空闲的AU,它存储的是一个个的AT表元数据块的号码,FST表用来加速AU的分配,避免读取已经完全被占用殆尽的AT块,造成分配空间效率的低下。

FST表技术上说其实是属于AT表的一部分,位于AT表的块1,FST表和AT表都被称为物理元数据,它们经常位于ASM磁盘的固定的位置。

Locating the Free Space Table

FST块存储在ASM磁盘头,通过kfed工具可以查看磁盘头的信息,其中kfdhdb.fstlocn的值代表了FST块位于磁盘头的第几个块。例如下面的输出代表了,FST块位于磁盘头的块1,也就是AU 0的第二个块。(块从0开始编号)。

$ kfed read /dev/sdc1 | grep kfdhdb.fstlocn

kfdhdb.fstlocn:                       1 ; 0x0cc: 0x00000001

我们通过kfed工具查看一下FST表的内容:

$ kfed read /dev/sdc1 blkn=1 | more

kfbh.endian:                          1 ; 0x000: 0x01

kfbh.hard:                          130 ; 0x001: 0x82

kfbh.type:                            2 ; 0x002: KFBTYP_FREESPC

...

kfdfsb.aunum:                         0 ; 0x000: 0x00000000

kfdfsb.max:                         254 ; 0x004: 0x00fe

kfdfsb.cnt:                         254 ; 0x006: 0x00fe

kfdfsb.bound:                         0 ; 0x008: 0x0000

kfdfsb.flag:                          1 ; 0x00a: B=1

kfdfsb.ub1spare:                      0 ; 0x00b: 0x00

kfdfsb.spare[0]:                      0 ; 0x00c: 0x00000000

kfdfsb.spare[1]:                      0 ; 0x010: 0x00000000

kfdfsb.spare[2]:                      0 ; 0x014: 0x00000000

kfdfse[0].fse:                      119 ; 0x018: FREE=0x7 FRAG=0x7

kfdfse[1].fse:                       16 ; 0x019: FREE=0x0 FRAG=0x1

kfdfse[2].fse:                       16 ; 0x01a: FREE=0x0 FRAG=0x1

kfdfse[3].fse:                       16 ; 0x01b: FREE=0x0 FRAG=0x1

...

kfdfse[4037].fse:                     0 ; 0xfdd: FREE=0x0 FRAG=0x0

kfdfse[4038].fse:                     0 ; 0xfde: FREE=0x0 FRAG=0x0

kfdfse[4039].fse:                     0 ; 0xfdf: FREE=0x0 FRAG=0x0

对于这个FST块,第一个AT表元数据块位于AU0:

kfdfsb.aunum:                         0 ; 0x000: 0x00000000

这个FST块最大数量的FST条目可以达到254个,虽然上面kfed的输出中kfdfse[i]的编号到了4039,也就是有4039+1=4040个条目,但是有效条目只有254个。

kfdfsb.max:                         254 ; 0x004: 0x00fe

How many Free Space Tables

大的ASM磁盘可能会有超过一个stride,ASM磁盘头的kfdhdb.mfact显示了stride的大小(单位为AU),每一个stride有它自己的物理元数据,这意味着会有它自己的FST表。

第二个stride的物理元数据位于这个stride的第一个AU,我们通过kfed工具看一下:

$ kfed read /dev/sdc1 | grep mfact

kfdhdb.mfact:                    113792 ; 0x0c0: 0x0001bc80

以上显示了stride的大小为113792个AU,由于AU是从0开始编号,因此第一个stride最后的AU号是AU 113791,我们可以推算出第二个stride的FST位置是,AU 113792的第一个块:

$ kfed read /dev/sdc1 aun=113792 blkn=1 | grep type

kfbh.type:                            2 ; 0x002: KFBTYP_FREESPC

如预期,我们在AU 113792上有另一个FTS表,如果我们还有其他的stride,同样会在stride的开始AU处有FST表。如下面所示,一个大的ASM磁盘,会有数个stride,这里展示了在第三个stride的开始处的FST表:

$ kfed read /dev/sdc1 aun=227584 blkn=1 | grep type

kfbh.type:                            2 ; 0x002: KFBTYP_FREESPC

Conclusion

一般FST表位于每一个ASM磁盘的AU0的块1,如果磁盘比较大,就会有不止一个stride,每一个stride都会有它自己的FST表。


本文来自云栖社区合作伙伴“DBGEEK”

目录
相关文章
|
Oracle 关系型数据库
oracle asm 磁盘显示offline
oracle asm 磁盘显示offline
740 2
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
存储 Oracle 关系型数据库
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
|
SQL Oracle 关系型数据库
Oracle ASM磁盘和磁盘组的常用SQL语句
Oracle ASM磁盘和磁盘组的常用SQL语句
510 0
|
2月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
342 93
|
1月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
176 0
|
4月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
278 8
|
4月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
244 11

推荐镜像

更多