ASM管理命令行三工具:KFOD、KFED和AMDU

0    396    1

Tags:

👉 本文共约7627个字,系统预计阅读时间或需29分钟。

简介

ASM(Automatic Storage Management)是Oracle目前主推的软集群存储策略。一般而言,管理ASM的工具包括使用sqlplus命令行、ASMCA图形化界面。此外,ASM Disk的配置和创建,可以通过oracleasm程序命令行进行配置。进入11g之后,集群件GI的crsctl和srvctl也可以提供ASM实例Instance和Disk Group级别的修改。

一般情况下,ASM安装管理借助上述工具就够了,况且Oracle Restate和Cluster ware可以确保ASM组建的HA架构。

一些特殊场景,如磁盘数据损坏、底层修复和ASM盘发现,需要额外的一些命令行工具。ASM工具包括:kfod、kfed和AMDU。在早期的ASM版本(10gR2)中,一部分工具还需要额外的重新编译和链接才能使用。在11g,这部分工具已经成为默认设置,可以直接使用。

本篇主要介绍三个工具的基本使用和功能介绍。

kfod工具

在Oracle ASM和Database安装过程中,kfod是会自动被调用,用于进行磁盘发现过程(Disk Discovery)。如果在安装Grid过程没有成功,那么kfod也会在安装stage文件夹中被找到。目录地址为:/grid/stage/ext/bin/。命令kfod -h可以查看该命令的解释,使用示例如下所示:

与图形化界面不同,kfod属于底层的功能命令行工具。最常用的场景是从操作系统层面刺激磁盘的扫描动作,用于辅助ASM发现可用的ASM DISK。Oracle官方门户中,对于kfod的描述包括如下几个方面:

ü Oracle ASM和Database安装过程中,kfod是会自动被调用,用于进行磁盘发现过程(Disk Discovery);

ü 如果在安装Grid过程没有成功,kfod也会在安装stage文件夹中被找到。目录地址为:/grid/stage/ext/bin/。如果有这样的情况,Oracle就要求我们设置环境变量LD_LIBRARY_PATH到/grid/stage/ext/bin/;

简单的说,kfod查看检索的意义更大,并不像其他有破坏性工具那样存在很大风险。使用帮助命令参数,可以看到kfod的功能说明。

[grid@NCR-Standby-Asm ~]$ kfod help

KFOD-00101: LRM error [107] while parsing command line arguments

_asm_a/llow_only_raw_disks KFOD allow only raw devices [_asm_allow_only_raw_disks=TRUE/(FALSE)]

_asm_l/ibraries ASM Libraries[_asm_libraries=lib1,lib2,...]

_asms/id ASM Instance[_asmsid=sid]

a/sm_diskstring ASM Diskstring [asm_diskstring=discoverystring, discoverystring ...]

c/luster KFOD cluster [cluster=TRUE/(FALSE)]

db/_unique_name db_unique_name for ASM instance[db_unique_name=dbname]

di/sks Disks to discover [disks=raw,asm,badsize,all]

ds/cvgroup Include group name [dscvgroup=TRUE/(FALSE)]

g/roup Disks in diskgroup [group=diskgroup]

h/ostlist hostlist[hostlist=host1,host2,...]

metadata_a/usize AU Size for Metadata Size Calculation

metadata_c/lients Client Count for Metadata Size Calculation

metadata_d/isks Disk Count for Metadata Size Calculation

metadata_n/odes Node Count for Metadata Size Calculation

metadata_r/edundancy Redundancy for Metadata Size Calculation

n/ohdr KFOD header suppression [nohdr=TRUE/(FALSE)]

o/p KFOD options type [OP=DISKS/CANDIDATES/MISSING/GROUPS/INSTS/VERSION/CLIENTS/RM/RMVERS/DFLTDSTR/GPNPDSTR/METADATA/ALL]

p/file ASM parameter file [pfile=parameterfile]

s/tatus Include disk header status [status=TRUE/(FALSE)]

v/erbose KFOD verbose errors [verbose=TRUE/(FALSE)]

几个常见的操作方法:

--查看ASM配置基本情况

[grid@NCR-Standby-Asm ~]$ kfod

--------------------------------------------------------------------------------

ORACLE_SID ORACLE_HOME

================================================================

+ASM /u01/app/grid/product/11.2.0/grid

--查看ASM Disk情况

[grid@NCR-Standby-Asm ~]$ kfod di=all

--------------------------------------------------------------------------------

Disk Size Path User Group

================================================================================

1: 20489 Mb ORCL:DATA1

2: 20489 Mb ORCL:DATA2

3: 20489 Mb ORCL:DATA3

4: 20489 Mb ORCL:DATA5

5: 20442 Mb ORCL:DATA6

--------------------------------------------------------------------------------

ORACLE_SID ORACLE_HOME

================================================================================

+ASM /u01/app/grid/product/11.2.0/grid

--特定diskgroup情况

[grid@NCR-Standby-Asm ~]$ kfod status=true g=data

--------------------------------------------------------------------------------

Disk Size Path

================================================================================

0 20489 Mb ORCL:DATA1

1 20489 Mb ORCL:DATA2

2 20489 Mb ORCL:DATA3

[grid@NCR-Standby-Asm ~]$ kfod status=true g=reco

--------------------------------------------------------------------------------

Disk Size Path

================================================================================

0 20489 Mb ORCL:DATA5

1 20442 Mb ORCL:DATA6

kfed

kfed(Kernel File Metadata Editor)的使用场景比较严峻,就是当ASM Diskgroup不能成功MOUNT的时候,通过kfed来分析ASM磁盘头信息,来诊断问题。从Oracle 11.1开始,kfed就已经正式成为安装组件的一部分。与kfod的区别是,kfed只有在完全安装完之后,才能使用,在ASM安装阶段无法使用。其使用示例如下所示:

KFED的全称为Kernel File Metadata Editor。KFED的使用场景比较严峻,就是当ASM Diskgroup不能成功mount的时候,通过KFED来分析ASM磁盘头信息,来诊断问题。

从Oracle 11.1开始,KFED就已经正式成为安装组件的一部分。一些旧的版本中,就需要手工进行build构建。与Kfod的区别是,KFED只有在完全安装完之后,才能使用,在stage阶段无法使用。

KFED帮助信息如下:

[grid@NCR-Standby-Asm ~]$ kfed

as/mlib ASM Library [asmlib='lib']

aun/um AU number to examine or update [AUNUM=number]

aus/z Allocation Unit size in bytes [AUSZ=number]

blkn/um Block number to examine or update [BLKNUM=number]

blks/z Metadata block size in bytes [BLKSZ=number]

ch/ksum Update checksum before each write [CHKSUM=YES/NO]

cn/t Count of AUs to process [CNT=number]

de/v ASM device to examine or update [DEV=string]

dm/pall Don't suppress repeated lines when dumping corrupt blocks [DMPALL=YES/NO]

o/p KFED operation type [OP=READ/WRITE/MERGE/REPAIR/NEW/FORM/FIND/STRUCT]

p/rovnm Name for provisioning purposes [PROVNM=string]

s/eek AU number to seek to [SEEK=number]

te/xt File name for translated block text [TEXT=string]

ty/pe ASM metadata block type number [TYPE=number]

最常用的场景,是借助kfed去读ASM Disk的磁盘头信息。

[grid@NCR-Standby-Asm ~]$ kfed read /dev/sdb1

KFED-00303: unable to open file '/dev/sdb1'

[grid@NCR-Standby-Asm ~]$ env | grep ORACLE_HOME

ORACLE_HOME=/u01/app/grid/product/11.2.0/grid

[root@NCR-Standby-Asm ~]# cd /u01/app/grid/product/11.2.0/grid

[root@NCR-Standby-Asm grid]# cd bin/

[root@NCR-Standby-Asm bin]# ls -l | grep kfed

-rwxr-x--x 1 grid oinstall 2403791 May 25 15:28 kfed

-rwxr-x--x 1 grid oinstall 2403783 May 5 09:21 kfedO

[root@NCR-Standby-Asm bin]# ./kfed read /dev/sdb1

kfbh.endian: 1 ; 0x000: 0x01

kfbh.hard: 130 ; 0x001: 0x82

kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD

kfbh.datfmt: 1 ; 0x003: 0x01

kfbh.block.blk: 0 ; 0x004: blk=0

kfbh.block.obj: 2147483648 ; 0x008: disk=0

kfbh.check: 586307481 ; 0x00c: 0x22f25799

kfbh.fcn.base: 0 ; 0x010: 0x00000000

kfbh.fcn.wrap: 0 ; 0x014: 0x00000000

kfbh.spare1: 0 ; 0x018: 0x00000000

(篇幅原因,有省略……)

kfdhdb.acdb.aba.seq: 0 ; 0x1d4: 0x00000000

kfdhdb.acdb.aba.blk: 0 ; 0x1d8: 0x00000000

kfdhdb.acdb.ents: 0 ; 0x1dc: 0x0000

kfdhdb.acdb.ub2spare: 0 ; 0x1de: 0x0000

针对ASM Disk头块损坏的问题,Oracle推出了自动backup策略,备份块就在510位置上。

[root@NCR-Standby-Asm bin]# ./kfed read /dev/sdb1 blkn=510

kfbh.endian: 1 ; 0x000: 0x01

kfbh.hard: 130 ; 0x001: 0x82

kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD

kfbh.datfmt: 1 ; 0x003: 0x01

kfbh.block.blk: 254 ; 0x004: blk=254

kfbh.block.obj: 2147483648 ; 0x008: disk=0

kfbh.check: 586307431 ; 0x00c: 0x22f25767

kfbh.fcn.base: 0 ; 0x010: 0x00000000

kfbh.fcn.wrap: 0 ; 0x014: 0x00000000

kfbh.spare1: 0 ; 0x018: 0x00000000

kfbh.spare2: 0 ; 0x01c: 0x00000000

kfdhdb.driver.provstr: ORCLDISKDATA1 ; 0x000: length=13

自动命令repair,也就是将这个块的信息写回到头块位置上。

AMDU

amdu(ASM Metadata Dump Utility)最大的作用在于可以将ASM磁盘组和ASM磁盘所有可用元数据信息导出,并且整理为可读的格式内容,其工作不受到磁盘组是否MOUNT访问的影响。这个工具之所以被正式公布,主要在于Oracle Support在进行远程支持的时候,需要客户提供上载文件。

AMDU最大的作用在于可以将ASM Disk Group和DISK所有可用元数据信息导出,并且整理为可读的格式内容。

AMDU最大的一个好处,在于其工作不受到Disk Group是否mount访问的影响。这个工具之所以被正式公布,主要在于Oracle Support在进行远程支持的时候,需要客户提供上载文件。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复