ASM管理命令列三工具:KFOD、KFED和AMDU(上)

Appleses發表於2016-01-30

 

ASMAutomatic Storage Management)是Oracle目前主推的軟叢集儲存策略。一般而言,管理ASM的工具包括使用sqlplus命令列、ASMCA圖形化介面。此外,ASM Disk的配置和建立,可以透過oracleasm程式命令列進行配置。進入11g之後,叢集件GIcrsctlsrvctl也可以提供ASM例項InstanceDsik Group級別的修改。

一般情況下,ASM安裝管理藉助上述工具就夠了,況且Oracle RestateCluster ware可以確保ASM組建的HA架構。

一些特殊場景,如磁碟資料損壞、底層修復和ASM盤發現,需要額外的一些命令列工具。ASM工具包括:kfodkfedAMDU。在早期的ASM版本(10gR2)中,一部分工具還需要額外的重新編譯和連結才能使用。在11g,這部分工具已經成為預設設定,可以直接使用。

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

 

1kfod工具

 

與圖形化介面不同,kfod屬於底層的功能命令列工具。最常用的場景是從作業系統層面刺激磁碟的掃描動作,用於輔助ASM發現可用的ASM DISKOracle官方門戶中,對於kfod的描述包括如下幾個方面:

ü  Oracle ASMDatabase安裝過程中,kfod是會自動被呼叫,用於進行磁碟發現過程(Disk Discovery);

ü  如果在安裝Grid過程沒有成功,kfod也會在安裝stage資料夾中被找到。目錄地址為:<stage_folder>/grid/stage/ext/bin/。如果有這樣的情況,Oracle就要求我們設定環境變數LD_LIBRARY_PATH<stage_folder>/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                               <unknown> <unknown>

   2:      20489 Mb ORCL:DATA2                               <unknown> <unknown>

   3:      20489 Mb ORCL:DATA3                               <unknown> <unknown>

   4:      20489 Mb ORCL:DATA5                               <unknown> <unknown>

   5:      20442 Mb ORCL:DATA6                               <unknown> <unknown>

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

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                                        

 

 

2KFED

 

KFED的全稱為Kernel File Metadata EditorKFED的使用場景比較嚴峻,就是當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,也就是將這個塊的資訊寫回到頭塊位置上。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28628435/viewspace-1984381/,如需轉載,請註明出處,否則將追究法律責任。

相關文章