ASM 翻譯系列第十彈:ASM Internal ASM DISK header
譯者: 莊培培
稽核: 魏興華
ASM disk header
ASM磁碟頭可能是ASM後設資料中最廣為人知的部分。之前你可能認為當它被破壞或丟失時,只能寄希望於Oracle技術支援人員協助來恢復。在本節中將解釋ASM磁碟頭的重要性和它包含的資訊。
Block zero
ASM磁碟是以AU為單位進行格式化的,部分AU會存放ASM後設資料,其他AU存放資料庫中的相關資料(如資料檔案、備份檔案、歸檔檔案等等)。包含ASM後設資料的AU會以後設資料塊的方式進行格式化(一個後設資料塊的大小為4K)。AU0位於ASM磁碟的起始位置,它始終用於儲存ASM後設資料。AU0的第一個塊,即block 0,就是ASM的磁碟頭。
ASM disk header contents
ASM 磁碟頭的大部分內容僅與本磁碟相關,但也有部分資訊與整個磁碟組相關,有些甚至於與整個cluster相關。
我們對一個LINUX平臺上透過asmlib管理的磁碟的block 0,使用kfed工具進行輸出觀察。
$ kfed read /dev/oracleasm/disks/ASMD1
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: T=0 NUMB=0x0
kfbh.block.obj: 2147483648 ; 0x008: TYPE=0x8 NUMB=0x0
kfbh.check: 473773689 ; 0x00c: 0x1c3d3679
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: ORCLDISKASMD1 ; 0x000: length=13
kfdhdb.driver.reserved[0]: 1145918273 ; 0x008: 0x444d5341
kfdhdb.driver.reserved[1]: 49 ; 0x00c: 0x00000031
kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000
kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000
kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000
kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000
kfdhdb.compat: 186646528 ; 0x020: 0x0b200000
kfdhdb.dsknum: 0 ; 0x024: 0x0000
kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER
kfdhdb.dskname: ASMD1 ; 0x028: length=5
kfdhdb.grpname: DATA ; 0x048: length=4
kfdhdb.fgname: ASMD1 ; 0x068: length=5
...
上述kfed命令的輸出結果顯示這個asm塊有兩種型別的資料 以kfbh為字首的塊頭資訊和以kfdhdb為字首的ASM磁碟頭資訊。實際上,每個ASM後設資料塊都會有塊頭資訊和與塊型別相匹配的一些相關資料。
Important ASM metadata block 0 header data
資料型別 |
值 |
kfbh.endian |
系統字序。0 - 大字序,1 - 小字序。 |
kfbh.type |
ASM塊型別。KFBTYP_DISKHEAD 表示這是一個ASM磁碟頭型別塊。 |
kfbh.block.blk |
ASM塊號。注意ASM磁碟頭塊的塊編號是0 |
重要的ASM磁碟頭資料
資料型別 |
值 |
kfdhdb.driver.provstr |
ASMLIB磁碟是ORCLDISK+磁碟名,非ASMLIB磁碟是ORCLDISK |
kfdhdb.dsknum |
ASM磁碟編號 |
kfdhdb.grptyp |
磁碟級冗餘級別 KFDGTP_EXTERNAL 代表 external級別, KFDGTP_NORMAL 代表 normal級別, KFDGTP_HIGH 代表 high級別. |
kfdhdb.hdrsts |
ASM磁碟頭狀態. V$ASM_DISK.HEADER_STATUS檢視內包含所有可能的狀態. |
kfdhdb.dskname |
ASM磁碟名 |
kfdhdb.grpname |
ASM磁碟組名 |
kfdhdb.fgname |
ASM失敗組名 |
kfdhdb.crestmp.hi|lo |
磁碟新增到磁碟組的時間. |
kfdhdb.mntstmp.hi|lo |
磁碟最近一次被掛接的時間. |
kfdhdb.secsize |
磁碟的扇區大小(bytes). |
kfdhdb.blksize |
ASM後設資料塊的大小(bytes). |
kfdhdb.ausize |
Alloocation unit的大小(bytes).預設的AU大小為1 MB. |
kfdhdb.dsksize |
磁碟大小(以au為單位).本例中的磁碟大小為10239 MB. |
kfdhdb.fstlocn |
指標指向ASM的空閒空間表.1代表本AU中的ASM 塊1. |
kfdhdb.altlocn |
指標指向ASM的分配表.2 代表本AU中的ASM 塊2. |
kfdhdb.f1b1locn |
指標指向ASM的檔案目錄.2代表本ASM磁碟的 AU 2. |
kfdhdb.dbcompat |
最小的資料庫相容版本. 0x0a100000 = 10.1. |
kfdhdb.grpstmp.hi |
lo |
kfdhdb.vfstart |
vfend |
kfdhdb.spfile |
ASM spfile引數檔案的AU號.本特性限於11.2或更高版本. |
kfdhdb.spfflg |
ASM spfile引數檔案標識.如果這個值是1,ASM spfile引數檔案則位於本磁碟的kfdhdb.spfile引數的AU .本特性限於11.2或更高版本. |
ASM disk header backup
ASM從11.1.0.7版本開始,磁碟頭塊的資訊會自動備份到AU1的倒數第二個ASM後設資料塊中。知道AU的塊大小和ASM後設資料塊的大小後,就能找到倒數第二個塊的塊編號。透過kfed工具可以從塊頭中讀取到這些資訊,並計算出AU1的倒數第二個塊的塊編號。
$ ausize=`kfed read /dev/oracleasm/disks/ASMD1 | grep ausize | tr -s ' ' | cut -d' ' -f2`
$ blksize=`kfed read /dev/oracleasm/disks/ASMD1 | grep blksize | tr -s ' ' | cut -d' ' -f2`
$ let n=$ausize/$blksize-2
$ echo $n
254
譯者注:其實在10.2.0.5版本,ASM也會自動備份磁碟頭的資料到AU 1的倒數第二個ASM後設資料塊中。
$ kfed read /dev/oracleasm/disks/ASMD1 aun=1 blkn=254
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: T=0 NUMB=0x0
kfbh.block.obj: 2147483648 ; 0x008: TYPE=0x8 NUMB=0x0
kfbh.check: 473773689 ; 0x00c: 0x1c3d3679
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: ORCLDISKASMD1 ; 0x000: length=13
...
kfdhdb.dsknum: 0 ; 0x024: 0x0000
kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNAL
kfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBER
kfdhdb.dskname: ASMD1 ; 0x028: length=5
kfdhdb.grpname: DATA ; 0x048: length=4
kfdhdb.fgname: ASMD1 ; 0x068: length=5
...
能夠看到與AU0的後設資料塊0相同的內容。當磁碟頭被破壞或者丟失時,這個備份將是非常有用的。只需要執行kfed repair [磁碟名]命令即可修復,如果AU大小不是預設的1MB,還需要指定AU大小的具體值。 如果懷疑ASM的磁碟頭出現故障,最好尋求Oracle技術支援人員的幫助,而不是獨自進行操作。
ASM disk header in Exadata
Exadata中的ASM磁碟並不是以裝置名的方式給作業系統使用。它們使用專用的名稱格式 o/[儲存節點IP]/[磁碟名].kfed工具支援這種名稱格式,所以kfed可以在exadata環境中使用。檢視Exadata磁碟的ASM磁碟頭:
$ kfed read o/192.168.10.9/DBFS_DG_CD_03_exadatacel01
kfbh.endian: 1 ; 0x000: 0x01
kfbh.hard: 130 ; 0x001: 0x82
kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD
...
kfdhdb.dskname:DBFS_DG_CD_03_EXADATACEL01 ; 0x028: length=26
kfdhdb.grpname: DBFS_DG ; 0x048: length=7
kfdhdb.fgname: EXADATACEL01 ; 0x068: length=12
...
kfdhdb.ausize: 4194304 ; 0x0bc: 0x00400000
...
ASM磁碟頭中部分Exadata專用屬性如下:
ASM磁碟名由磁碟組名 (DBFS_DG),儲存節點磁碟標識(CD),儲存節點磁碟編(3)號和儲存節點名(exadatacel01)構成.
失敗組的名字與儲存節點的名字相同.Exadata環境中預設的AU大小是4MB。
Conclusion
ASM磁碟頭包含ASM磁碟組正常運作和保持可用的重要後設資料。 為防止ASM磁碟頭的突然損壞和丟失,Oracle推薦透過磁碟分割槽的方式,就是將它“移動”到遠離磁碟物理起始位置的方式實現對ASM磁碟頭的保護。
Exadata的ASM磁碟頭資訊透過不暴露給資料庫節點的方式進行保護。
ASM從11.1.0.7版本開始,ASM磁碟頭透過維護一份在AU1備份的方式實現進一步的保護機制。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28218939/viewspace-2121512/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ASM 翻譯系列第八彈:ASM Internal ASM file extent mapASM
- ASM 翻譯系列第三十二彈:ASM INTERNAL Find block in ASMASMBloC
- ASM 翻譯系列第十三彈:ASM 高階知識 - Forcing the issueASM
- ASM 翻譯系列第三十五彈:ASM 253號檔案——ASM spfileASM
- Oracle ASM Disk HeaderOracleASMHeader
- ASM 翻譯系列第三十八彈:ASM資料清理ASM
- ASM 翻譯系列第二彈:ASM 12C 版本新特性ASM
- ASM 翻譯系列第九彈:高階知識ASM ToolboxASM
- ASM DISK HEADER CORRUPTION & REPAIRASMHeaderAI
- ASM 翻譯系列第十一彈:高階知識 Offline or drop?ASM
- ASM 翻譯系列第三十四彈:ASM磁碟組重要屬性介紹ASM
- ASM 翻譯系列第三十一彈:瞭解ASM檔案的空間分配ASM
- drop asm disk、撤銷drop asm diskASM
- oracle10g_asm_v$asm_disk之header_statusOracleASMHeader
- ASM 翻譯系列第一彈:基礎知識 ASM AU,Extents,Mirroring 和 FailgroupsASMAI
- Asm disk managerASM
- 手工建立ASM Disk Groups、為 ASM Disk Groups 新增 diskASM
- ASM: Device is already labeled for ASM diskASMdev
- RAC關鍵資訊(OCR/VOTE DISK/ASM DISK HEADER)備份ASMHeader
- Oracle 使用BBED 檢視 ASM Disk Header 內容OracleASMHeader
- ASM 翻譯系列第三十九彈:物理後設資料AT表ASM
- Oracle ASM Disk DirectoryOracleASM
- Oracle ASM Disk PartnerOracleASM
- ASM Disk Group TemplateASM
- Identify If A Disk/Part Is Still Used By ASM,Used by ASM Or Used by ASM_603210.1IDEASM
- ASM 翻譯系列第四十彈:理解ASM中 REQUIRED_MIRROR_FREE_MB和USABLE_FILE_MB的含義ASMUI
- oracleasm createdisk ASM: Device is already labeled for ASM diskOracleASMdev
- ASM 翻譯系列第三十六彈:ACFS磁碟組的重平衡操作ASM
- Oracle ASM spfile in a disk groupOracleASM
- ASM 翻譯系列第三十三彈:REQUIRED_MIRROR_FREE_MB的含義ASMUI
- ASM 11g New Features - How ASM Disk Resync WorksASM
- Oracle ASM Disk Used Space DirectoryOracleASM
- Oracle ASM ACFS disk group rebalanceOracleASM
- Oracle ASM Disk Group AttributesOracleASM
- ASM Normal需要3個disk ?ASMORM
- asm disk 的結構(1)ASM
- Oracle RAC ASM disk header 備份 恢復 與 重建 示例說明OracleASMHeader
- asm files,asm directories,asm templatesASM