Oracle ASM Disk Partner
ASM的資料冗餘機制是透過將extent的映象副本複製到同一磁碟組不同failgroup的磁碟上來實現的,這個磁碟被稱為partner磁碟。在11GR2版本,一個冗餘(Normal,High)的磁碟組,每一個ASM磁碟最多可以擁有8個partner磁碟,而在11GR2版本之前每一個磁碟最多擁有10個partner。在external冗餘方式的磁碟組內既沒有failgroup,磁碟之間也沒有partner關係。其實可以透過隱含引數_asm_partner_target_disk_part來調整partner的數量。
如果正常冗餘磁碟組有兩個磁碟,他們就互為夥伴。磁碟0中的每個區的映象會儲存在磁碟1中,並且磁碟1中的每個區的映象會儲存在磁碟0中。因此每個磁碟都有一個夥伴磁碟。對於有3個磁碟的正常冗餘磁碟組,如果在建立時沒有手動指定故障磁碟組,那麼每個磁碟將有兩個夥伴磁碟。磁碟0的夥伴為磁碟1與磁碟2,磁碟1的夥伴為磁碟0與磁碟2,磁碟2的夥伴為磁碟0與磁碟1.當一個區儲存在磁碟0上時,它的映象副本將會儲存在磁碟1或磁碟2上,但不是在磁碟1與磁碟2上都存在映象副本。對於正常冗餘磁碟,每個區有兩個副本而不是三個。類似的,磁碟1上的一個區,它的映象副本可能儲存在磁碟0或磁碟2上,磁碟2上的一個區,它的映象副本可能儲存在磁碟0或磁碟1。對於儲存後設資料的區來說,如果故障磁碟組的數量大於三,那麼在正常冗餘磁碟組上會有三份副本。如果正常冗餘磁碟組有大量磁碟,每個磁碟將有8個夥伴磁碟。這意味著任何磁碟上的一個區將會有一個映象副本儲存在它的8個夥伴磁碟中的一個磁碟上。對於正常冗餘磁碟組來說,任何一個區只有一個映象副本儲存在它的一個夥伴磁碟上。
對於由3個磁碟所建立的high冗餘磁碟組,每個磁碟將有兩個夥伴磁碟。磁碟0的夥伴為磁碟1與磁碟2,磁碟1的夥伴為磁碟0與磁碟2,磁碟2的夥伴為磁碟0與磁碟1。磁碟0上的每個區的映象將會儲存磁碟1與磁碟2上。磁碟1上的每個區的映象將會儲存磁碟0與磁碟2上。
可以查詢x$kfdpartner來找出關於磁碟夥伴關係的更多資訊。
SQL> SELECT count(disk_number) FROM v$asm_disk WHERE group_number = 1; COUNT(DISK_NUMBER) ------------------ 14
查詢結果顯示磁碟組內包含的磁碟數量著實不少,接下來看單個磁碟擁有多少個partner
SQL> SELECT disk "Disk", count(number_kfdpartner) "Number of partners" FROM x$kfdpartner WHERE grp=1 GROUP BY disk ORDER BY 1; Disk Number of partners ---------- ------------------ 0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 8 10 8 11 8 12 8 13 8 14 8 14 rows selected.
查詢結果顯示單個磁碟都準確的擁有8個partner磁碟
SQL> set pages 1000 SQL> break on Group# on Disk# SQL> SELECT d.group_number "Group#", d.disk_number "Disk#", p.number_kfdpartner "Partner disk#" FROM x$kfdpartner p, v$asm_disk d WHERE p.disk=d.disk_number and p.grp=d.group_number ORDER BY 1, 2, 3; Group# Disk# Partner disk# ---------- ---------- ------------- 1 0 1 3 5 6 7 9 11 14 1 2 3 4 5 6 8 12 13 ....
partner關係是在建立磁碟組時由ASM自動分配的,在每次新增和刪除磁碟操作時會自動更新。磁碟之間的partner關係資訊是記錄在磁碟的partner關係狀態表即PST表和磁碟目錄中,這兩項都是重要的ASM後設資料結構。
SQL> select disk_number, name, path from v$asm_disk_stat where group_number = (select group_number from v$asm_diskgroup_stat where name='DATADG') order by disk_number asc; DISK_NUMBER NAME PATH ----------- ------------------------------ ------------------------------ 0 DATADG_0001 /dev/raw/raw11 1 DATADG_0003 /dev/raw/raw4 2 DATADG_0002 /dev/raw/raw3 3 DATADG_0000 /dev/raw/raw10
[grid@jyrac1 ~]$ kfed read /dev/raw/raw11 aun=1 blkn=0 | more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 17 ; 0x002: KFBTYP_PST_META kfbh.datfmt: 2 ; 0x003: 0x02 kfbh.block.blk: 256 ; 0x004: blk=256 kfbh.block.obj: 2147483648 ; 0x008: disk=0 kfbh.check: 465161100 ; 0x00c: 0x1bb9cb8c kfbh.fcn.base: 0 ; 0x010: 0x00000000 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfdpHdrPairBv1.first.super.time.hi:33042831 ; 0x000: HOUR=0xf DAYS=0xc MNTH=0xc YEAR=0x7e0 kfdpHdrPairBv1.first.super.time.lo:2457171968 ; 0x004: USEC=0x0 MSEC=0x15e SECS=0x27 MINS=0x24 kfdpHdrPairBv1.first.super.last: 2 ; 0x008: 0x00000002 kfdpHdrPairBv1.first.super.next: 2 ; 0x00c: 0x00000002 kfdpHdrPairBv1.first.super.copyCnt: 3 ; 0x010: 0x03 kfdpHdrPairBv1.first.super.version: 1 ; 0x011: 0x01 kfdpHdrPairBv1.first.super.ub2spare: 0 ; 0x012: 0x0000 kfdpHdrPairBv1.first.super.incarn: 1 ; 0x014: 0x00000001 kfdpHdrPairBv1.first.super.copy[0]: 0 ; 0x018: 0x0000 kfdpHdrPairBv1.first.super.copy[1]: 1 ; 0x01a: 0x0001 kfdpHdrPairBv1.first.super.copy[2]: 2 ; 0x01c: 0x0002 kfdpHdrPairBv1.first.super.copy[3]: 0 ; 0x01e: 0x0000 kfdpHdrPairBv1.first.super.copy[4]: 0 ; 0x020: 0x0000 kfdpHdrPairBv1.first.super.dtaSz: 4 ; 0x022: 0x0004 kfdpHdrPairBv1.first.asmCompat:186646528 ; 0x024: 0x0b200000 kfdpHdrPairBv1.first.newCopy[0]: 0 ; 0x028: 0x0000 kfdpHdrPairBv1.first.newCopy[1]: 0 ; 0x02a: 0x0000 kfdpHdrPairBv1.first.newCopy[2]: 0 ; 0x02c: 0x0000 kfdpHdrPairBv1.first.newCopy[3]: 0 ; 0x02e: 0x0000 kfdpHdrPairBv1.first.newCopy[4]: 0 ; 0x030: 0x0000 kfdpHdrPairBv1.first.newCopyCnt: 0 ; 0x032: 0x00 kfdpHdrPairBv1.first.contType: 1 ; 0x033: 0x01 kfdpHdrPairBv1.first.spare0: 0 ; 0x034: 0x00000000 kfdpHdrPairBv1.first.ppat[0]: 0 ; 0x038: 0x0000 kfdpHdrPairBv1.first.ppat[1]: 0 ; 0x03a: 0x0000 kfdpHdrPairBv1.first.ppat[2]: 0 ; 0x03c: 0x0000 kfdpHdrPairBv1.first.ppat[3]: 0 ; 0x03e: 0x0000 kfdpHdrPairBv1.first.ppatsz: 0 ; 0x040: 0x00 kfdpHdrPairBv1.first.spare1: 0 ; 0x041: 0x00 kfdpHdrPairBv1.first.spare2: 0 ; 0x042: 0x0000 kfdpHdrPairBv1.first.spares[0]: 0 ; 0x044: 0x00000000 kfdpHdrPairBv1.first.spares[1]: 0 ; 0x048: 0x00000000 kfdpHdrPairBv1.first.spares[2]: 0 ; 0x04c: 0x00000000
資訊kfdpHdrPairBv1.first.super.copyCnt: 3 ; 0x010: 0x03說明存在3個PST副本,說明在磁碟0,1和2上有pst的副本(kfdpHdrPairBv1.first.super.copy
[0],kfdpHdrPairBv1.first.super.copy[1]和kfdpHdrPairBv1.first.super.copy[2]處有值)
[grid@jyrac1 ~]$ kfed read /dev/raw/raw11 aun=1 blkn=3 | more
kfbh.endian: 1 ; 0x000: 0x01
kfbh.hard: 130 ; 0x001: 0x82
kfbh.type: 18 ; 0x002: KFBTYP_PST_DTA
kfbh.datfmt: 2 ; 0x003: 0x02
kfbh.block.blk: 259 ; 0x004: blk=259
kfbh.block.obj: 2147483648 ; 0x008: disk=0
kfbh.check: 2182382336 ; 0x00c: 0x82148300
kfbh.fcn.base: 0 ; 0x010: 0x00000000
kfbh.fcn.wrap: 0 ; 0x014: 0x00000000
kfbh.spare1: 0 ; 0x018: 0x00000000
kfbh.spare2: 0 ; 0x01c: 0x00000000
kfdpDtaEv1[0].status: 127 ; 0x000: I=1 V=1 V=1 P=1 P=1 A=1 D=1
kfdpDtaEv1[0].fgNum: 1 ; 0x002: 0x0001
kfdpDtaEv1[0].addTs: 2199451943 ; 0x004: 0x8318f927
kfdpDtaEv1[0].partner[0]: 49154 ; 0x008: P=1 P=1 PART=0x2
kfdpDtaEv1[0].partner[1]: 49153 ; 0x00a: P=1 P=1 PART=0x1
kfdpDtaEv1[0].partner[2]: 49155 ; 0x00c: P=1 P=1 PART=0x3
以上輸出代表磁碟0(kfdpDtaEv1[0])所在failgroup號為1,它有3個partner磁碟,分別為PART=0x2,PART=0x1,PART=0x3,也就是磁碟號2(/dev/raw/raw3),1(/dev/raw/raw4),3
(/dev/raw/raw10)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2131285/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle ASM Disk DirectoryOracleASM
- Oracle ASM Disk HeaderOracleASMHeader
- Oracle ASM spfile in a disk groupOracleASM
- Oracle ASM Disk Used Space DirectoryOracleASM
- Oracle ASM ACFS disk group rebalanceOracleASM
- Oracle ASM Disk Group AttributesOracleASM
- drop asm disk、撤銷drop asm diskASM
- [Oracle Script] ASM Disk Groups UsedOracleASM
- 手工建立ASM Disk Groups、為 ASM Disk Groups 新增 diskASM
- Oracle ASM disk誤被格式化OracleASM
- Asm disk managerASM
- ASM Disk Group TemplateASM
- oracle10g_asm_v$asm_disk之header_statusOracleASMHeader
- ASM: Device is already labeled for ASM diskASMdev
- Oracle 使用BBED 檢視 ASM Disk Header 內容OracleASMHeader
- ASM DISK HEADER CORRUPTION & REPAIRASMHeaderAI
- ASM Normal需要3個disk ?ASMORM
- asm disk 的結構(1)ASM
- oracleasm createdisk ASM: Device is already labeled for ASM diskOracleASMdev
- ASM 翻譯系列第十彈:ASM Internal ASM DISK headerASMHeader
- oracle crs voting disk損壞一例(asm+rac)OracleASM
- Using ASMLIB Management ASM DiskASM
- ASM磁碟組刪除DISK操作ASM
- Identify If A Disk/Part Is Still Used By ASM,Used by ASM Or Used by ASM_603210.1IDEASM
- RAC關鍵資訊(OCR/VOTE DISK/ASM DISK HEADER)備份ASMHeader
- Oracle OCP IZ0-053 Q240(ASM DISK_REPAIR_TIME)OracleASMAI
- ASM 11g New Features - How ASM Disk Resync WorksASM
- V$ASM_DISK 檢視含義ASM
- Oracle RAC ASM disk header 備份 恢復 與 重建 示例說明OracleASMHeader
- 使用KFOD模擬ASM DISK DISCOVERY過程ASM
- ASM disk group mount fails with ORA-15036ASMAI
- ASM 11g新功能fast disk resyncASMAST
- oracle 10.2.0.5 版本之後 asm disk header 自動備份機制OracleASMHeader
- Contens 5.8 安裝 oracle grid infrastruture(使用asmlib製作asm disk)OracleASTASM
- oracle10g_asm_v$asm_disk之total_mb_free_mb_required_mirror_free_mb相互關係OracleASMUI
- ASM disk group mount fails with ORA-15036: disk is truncated [ID 1077175.1]ASMAI
- ASM Disk丟失的臨時解決方法ASM
- 幾個重要的 ASM Disk Groups 引數ASM