本篇文章講述ASM元信息的2號文件,ASM的2號文件是ASM的磁盤目錄,它跟蹤磁盤組中的所有磁盤。由于在ASM中磁盤組是一個獨(dú)立的存儲單位,因此每一個磁盤組都會有自己的磁盤目錄。
譯者注:ASM中每一個磁盤組都是自解釋的,磁盤組之間沒有任何信息上的依賴
對ASM來說,磁盤目錄只是一個普通的ASM文件,在ASM的文件目錄中也會有它的條目,如果磁盤組做了冗余策略,它也會相應(yīng)做鏡像,也會像其他文件一樣根據(jù)實(shí)際需要做空間的擴(kuò)展。
每個磁盤目錄的條目都維護(hù)了如下的一些信息:
V$ASM_DISK view
磁盤目錄的大部分信息都可以通過視圖V$ASM_DISK獲得,每一個磁盤都在這個視圖中有一行記錄,這些磁盤包括哪些還不是任何磁盤組的磁盤。每次查詢這個視圖都會導(dǎo)致ASM執(zhí)行磁盤的發(fā)現(xiàn)操作,因此查詢這個視圖的代價是非常大的。
下面的例子顯示了在ASM實(shí)例中查詢V$ASM_DISK視圖的輸出:
SQL> SELECT group_number, disk_number, state, name, mount_status
FROM v$asm_disk;
GROUP_NUMBER DISK_NUMBER STATE NAME MOUNT_S
------------ ----------- -------- ------------ -------
0 0 NORMAL CLOSED
0 1 NORMAL CLOSED
0 2 NORMAL CLOSED
0 6 NORMAL CLOSED
1 0 NORMAL ASMDISK1 CACHED
1 1 NORMAL ASMDISK2 CACHED
1 2 NORMAL ASMDISK3 CACHED
1 3 NORMAL ASMDISK4 CACHED
2 0 NORMAL ASMDISK5 CACHED
2 1 NORMAL ASMDISK6 CACHED
10 rows selected.
SQL>
我們獲得了所有ASM識別到的磁盤,包括了哪些不是當(dāng)前正mount磁盤組(GROUP_NUMBER=0)的磁盤。
V$ASM_DISK_STAT view
視圖V$ASM_DISK_STAT展示了跟V$ASM_DISK相同的信息,不過查詢V$ASM_DISK_STAT并不會執(zhí)行發(fā)現(xiàn)所有磁盤的操作。它的信息來自于ASM實(shí)例的SGA區(qū),查詢V$ASM_DISK_STAT的代價不大,因?yàn)椴⒉贿M(jìn)行發(fā)現(xiàn)磁盤的操作,但這個查詢的結(jié)果可能并不能實(shí)時反應(yīng)系統(tǒng)磁盤的現(xiàn)狀。
譯者注:
V$ASM_DISK_STAT中的信息只能反映出當(dāng)前掛載磁盤組的磁盤信息,而不僅僅是不能反映出系統(tǒng)新加入盤的信息。
下面的查詢顯示了在ASM實(shí)例中查詢V$ASM_DISK_STAT視圖的輸出:
SQL> SELECT group_number, disk_number, state, name, mount_status
FROM v$asm_disk_stat;
GROUP_NUMBER DISK_NUMBER STATE NAME MOUNT_S
------------ ----------- -------- ------------ -------
1 0 NORMAL ASMDISK1 CACHED
1 1 NORMAL ASMDISK2 CACHED
1 2 NORMAL ASMDISK3 CACHED
1 3 NORMAL ASMDISK4 CACHED
2 0 NORMAL ASMDISK5 CACHED
2 1 NORMAL ASMDISK6 CACHED
6 rows selected.
SQL>
這次,我們只看到了mount的磁盤組上的磁盤。
我們可以在ASM實(shí)例中查詢固態(tài)表X$KFFXP來查看哪些AU屬于ASM的2號文件,同時通過join視圖V$ASM_DISK_STAT來獲取ASM的磁盤名稱,讓我們來對一個磁盤組進(jìn)行查詢:
SQL> SELECT x.xnum_kffxp "Extent", x.au_kffxp "AU", x.disk_kffxp "Disk #",
d.name "Disk name" FROM x$kffxp x, v$asm_disk_stat d
WHERE x.group_kffxp=d.group_number and x.disk_kffxp=d.disk_number and x.group_kffxp=1 and x.number_kffxp=2 ORDER BY 1, 2; Extent AU Disk # Disk name --------- ---------- ---------- --------- 0 2 3 ASMDISK4 0 3 0 ASMDISK1 0 3 1 ASMDISK2
SQL>
上面的結(jié)果展示了2個內(nèi)容:ASM的磁盤目錄被做了3重鏡像,當(dāng)前磁盤目錄的大小是3個物理extent(本例中也就是3個AU),再次強(qiáng)調(diào),即使在一個normal冗余的磁盤組中,ASM的磁盤目錄也被做了3重鏡像。
讓我們使用kfed工具查看下磁盤目錄的具體內(nèi)容,由于數(shù)據(jù)在3個AU中是一樣的,我們只需要查看個AU的內(nèi)容就可以了,這里是ASMDISK4的AU 2:
$ kfed read /dev/oracleasm/disks/ASMDISK4 aun=2 | more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 6 ; 0x002: KFBTYP_DISKDIR ...
kfddde[0].entry.incarn: 1 ; 0x024: A=1 NUMM=0x0 kfddde[0].entry.hash: 0 ; 0x028: 0x00000000 kfddde[0].entry.refer.number:4294967295 ; 0x02c: 0xffffffff kfddde[0].entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0 kfddde[0].dsknum: 0 ; 0x034: 0x0000 kfddde[0].state: 2 ; 0x036: KFDSTA_NORMAL kfddde[0].ddchgfl: 132 ; 0x037: 0x84 kfddde[0].dskname: ASMDISK1 ; 0x038: length=8 kfddde[0].fgname: ASMDISK1 ; 0x058: length=8 kfddde[0].crestmp.hi: 32960657 ; 0x078: HOUR=0x11 DAYS=0x4 MNTH=0xc YEAR=0x7db kfddde[0].crestmp.lo: 2843202560 ; 0x07c: USEC=0x0 MSEC=0x1f5 SECS=0x17 MINS=0x2a kfddde[0].failstmp.hi: 0 ; 0x080: HOUR=0x0 DAYS=0x0 MNTH=0x0 YEAR=0x0 kfddde[0].failstmp.lo: 0 ; 0x084: USEC=0x0 MSEC=0x0 SECS=0x0 MINS=0x0 kfddde[0].timer: 0 ; 0x088: 0x00000000 kfddde[0].size: 4094 ; 0x08c: 0x00000ffe kfddde[0].srRloc.super.hiStart: 0 ; 0x090: 0x00000000 kfddde[0].srRloc.super.loStart: 0 ; 0x094: 0x00000000 kfddde[0].srRloc.super.length: 0 ; 0x098: 0x00000000 kfddde[0].srRloc.incarn: 0 ; 0x09c: 0x00000000 kfddde[0].dskrprtm: 0 ; 0x0a0: 0x00000000 kfddde[0].zones[0].start: 0 ; 0x0a4: 0x00000000 kfddde[0].zones[0].size: 4094 ; 0x0a8: 0x00000ffe kfddde[0].zones[0].used: 47 ; 0x0ac: 0x0000002f ...
kfddde[1].entry.incarn: 1 ; 0x1e4: A=1 NUMM=0x0 kfddde[1].entry.hash: 1 ; 0x1e8: 0x00000001 kfddde[1].entry.refer.number:4294967295 ; 0x1ec: 0xffffffff kfddde[1].entry.refer.incarn: 0 ; 0x1f0: A=0 NUMM=0x0 kfddde[1].dsknum: 1 ; 0x1f4: 0x0001 kfddde[1].state: 2 ; 0x1f6: KFDSTA_NORMAL kfddde[1].ddchgfl: 132 ; 0x1f7: 0x84 kfddde[1].dskname: ASMDISK2 ; 0x1f8: length=8 ...
kfddde[2].entry.incarn: 1 ; 0x3a4: A=1 NUMM=0x0 kfddde[2].entry.hash: 2 ; 0x3a8: 0x00000002 kfddde[2].entry.refer.number:4294967295 ; 0x3ac: 0xffffffff kfddde[2].entry.refer.incarn: 0 ; 0x3b0: A=0 NUMM=0x0 kfddde[2].dsknum: 2 ; 0x3b4: 0x0002 kfddde[2].state: 2 ; 0x3b6: KFDSTA_NORMAL kfddde[2].ddchgfl: 132 ; 0x3b7: 0x84 kfddde[2].dskname: ASMDISK3 ; 0x3b8: length=8 ...
$
輸出信息中的kfbh.type為KFBTYP_DISKDIR代表了這是一個磁盤目錄。ASM中的磁盤的信息存儲在上面輸出內(nèi)容的kfddde的區(qū)域,kfddde[0] 是關(guān)于磁盤0,kfddde[1]是關(guān)于磁盤1,以此類推。以這種方式我們可以知道磁盤組中所有磁盤的信息,就像你看到的,大部分的信息都可以通過視圖V$ASM_DISK去獲取,而不需要通過kfed這種工具去查看。
ASM磁盤目錄維護(hù)了關(guān)于ASM磁盤組中的所有的磁盤的信息,這些信息基本上可以通過視圖V$ASM_DISK去獲取,也可以通過kfed工具去訪問。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個個人學(xué)習(xí)交流的平臺,網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請及時聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對此聲明的最終解釋權(quán)。