Oracle ASM Volume Directory
Volume Directory
從oracle 11gR2開始,引入了ACFS,其中11gR2同時又引入了ASM Dynamic Volume Manager (ADVM)去支援ACFS。在11.2的asm中,不僅僅用於儲存database files,還能儲存一些非結構化的資料,例如clusterware 檔案、以及一些通常的二進位制檔案、external files和text files。邏輯卷目錄的ASM檔案號為7,它用於跟蹤與ADVM有關的檔案。ASM動態邏輯卷裝置是由ASM動態邏輯卷構建的。一個磁碟組中可以配置一個或多個ASM動態邏輯卷裝置。ASM叢集檔案系統透過ADVM介面構建在ASM磁碟組之上。ADVM像資料庫一樣,也是ASM的一個客戶端。當一個邏輯卷被訪問時,相應的ASM檔案會被開啟並且ASM extent的資訊會被髮送到ADVM驅動。有兩種與ADVM邏輯卷相關的檔案型別:
.ASMVOL:邏輯卷檔案,作為邏輯卷儲存的容器。
.ASMVDRL:包含髒資料記錄區域資訊的檔案;重新同步映象資料時會用到此檔案。
在未建立ADVM之前,直接查詢是看不到file 7的
SQL> select number_kffxp file#, disk_kffxp disk#, count(disk_kffxp) extents 2 from x$kffxp 3 where group_kffxp=3 4 and disk_kffxp <> 65534 5 and number_kffxp=7 6 group by number_kffxp, disk_kffxp 7 order by 1; no rows selected SQL> select x.xnum_kffxp "virtual extent",pxn_kffxp "physical extent",x.au_kffxp "au",x.disk_kffxp "disk #",d.name "disk name" 2 from x$kffxp x, v$asm_disk_stat d 3 where x.group_kffxp=d.group_number 4 and x.disk_kffxp=d.disk_number 5 and x.group_kffxp=3 6 and x.number_kffxp=7 7 order by 1,2,3; no rows selected
建立ADVM
為ADVM建立一個單獨的磁碟組並不是必須的,但這樣做確實是有意義的,透過這種方式,可以把資料庫檔案與ACFS檔案隔離開。要建立邏輯卷,首先需要有一個磁碟組,下面建立了一個名稱為acfs的磁碟組。為了能在磁碟組中建立邏輯卷,磁碟組的COMPATIBLE.ASM與COMPATIBLE.ADVM必須設定為11.2或以上,同時ADVM/ACFS驅動要被載入(在叢集環境中,已經預設載入,而在單例項環境中,需要手動載入)。
單例項載入ADVM/ACFS驅動的命令如下,RAC環境不需要,因為已經預設載入
[root@jyrac1 bin]# ./acfsroot install ACFS-9300: ADVM/ACFS distribution files found. ACFS-9118: oracleadvm.ko driver in use - cannot unload. ACFS-9312: Existing ADVM/ACFS installation detected. ACFS-9118: oracleadvm.ko driver in use - cannot unload. ACFS-9314: Removing previous ADVM/ACFS installation. ACFS-9315: Previous ADVM/ACFS components successfully removed. ACFS-9307: Installing requested ADVM/ACFS software. ACFS-9308: Loading installed ADVM/ACFS drivers. ACFS-9321: Creating udev for ADVM/ACFS. ACFS-9323: Creating module dependencies - this may take some time. ACFS-9154: Loading 'oracleacfs.ko' driver. ACFS-9327: Verifying ADVM/ACFS devices. ACFS-9156: Detecting control device '/dev/asm/.asm_ctl_spec'. ACFS-9156: Detecting control device '/dev/ofsctl'. ACFS-9309: ADVM/ACFS installation correctness verified. [root@jyrac1 bin]# ./acfsload start ACFS-9391: Checking for existing ADVM/ACFS installation. ACFS-9392: Validating ADVM/ACFS installation files for operating system. ACFS-9393: Verifying ASM Administrator setup. ACFS-9308: Loading installed ADVM/ACFS drivers. ACFS-9327: Verifying ADVM/ACFS devices. ACFS-9156: Detecting control device '/dev/asm/.asm_ctl_spec'. ACFS-9156: Detecting control device '/dev/ofsctl'. ACFS-9322: completed [root@jyrac1 bin]# ./acfsdriverstate version ACFS-9325: Driver OS kernel version = 2.6.18-8.el5(x86_64). ACFS-9326: Driver Oracle version = 130707. SQL> create diskgroup acfs disk '/dev/raw/raw5','/dev/raw/raw6' attribute 'COMPATIBLE.ASM' = '11.2', 'COMPATIBLE.ADVM' = '11.2'; Diskgroup created.
建立advm卷組
SQL> select 2 nvl(a.name, '[candidate]') disk_group_name 3 , b.path disk_file_path 4 , b.name disk_file_name 5 , b.failgroup disk_file_fail_group 6 , b.total_mb total_mb 7 , (b.total_mb - b.free_mb) used_mb 8 -- , round((1- (b.free_mb / b.total_mb))*100, 2) pct_used 9 from 10 v$asm_diskgroup a,v$asm_disk b where a.group_number(+)=b.group_number 11 order by 1,3,2,4 ; disk group name path file name fail group file size (mb) used size (mb) -------------------- ----------------- -------------------- -------------------- -------------- -------------- ACFS /dev/raw/raw5 ACFS_0000 ACFS_0000 5,120 53 ACFS /dev/raw/raw6 ACFS_0001 ACFS_0001 5,120 53 ARCHDG /dev/raw/raw2 ARCHDG_0000 ARCHDG_0000 5,120 3,447 ARCHDG /dev/raw/raw9 ARCHDG_0001 ARCHDG_0001 5,120 3,447 CRSDG /dev/raw/raw1 CRSDG_0000 CRSDG_0000 5,120 215 CRSDG /dev/raw/raw8 CRSDG_0001 CRSDG_0001 5,120 183 DATADG /dev/raw/raw10 DATADG_0000 DATADG_0000 5,120 1,673 DATADG /dev/raw/raw11 DATADG_0001 DATADG_0001 5,120 1,670 DATADG /dev/raw/raw3 DATADG_0002 DATADG_0002 5,120 1,666 DATADG /dev/raw/raw4 DATADG_0003 DATADG_0003 5,120 1,666 [candidate] /dev/raw/raw12 0 0 [candidate] /dev/raw/raw13 0 0 [candidate] /dev/raw/raw14 0 0 [candidate] /dev/raw/raw7 0 0 14 rows selected.
上面的查詢顯示ACFS磁碟中可用空間還有大約5G,那麼在磁碟組ACFS中有足夠的空間來建立2個2G大小的建邏輯卷
[grid@jyrac1 ~]$ asmcmd volcreate -G ACFS -s 2G ACFS_VOL1 [grid@jyrac1 ~]$ asmcmd volcreate -G ACFS -s 2G ACFS_VOL2 [grid@jyrac1 ~]$ asmcmd volinfo -a Diskgroup Name: ACFS Volume Name: ACFS_VOL1 Volume Device: /dev/asm/acfs_vol1-319 State: ENABLED Size (MB): 2048 Resize Unit (MB): 32 Redundancy: MIRROR Stripe Columns: 4 Stripe Width (K): 128 Usage: Mountpath: Volume Name: ACFS_VOL2 Volume Device: /dev/asm/acfs_vol2-319 State: ENABLED Size (MB): 2048 Resize Unit (MB): 32 Redundancy: MIRROR Stripe Columns: 4 Stripe Width (K): 128 Usage: Mountpath:
從上面,大家可以看到,預設建立advm是必須映象的,且其分配單元是32m,條頻寬度是128k。建立完advm之後,我們再次查詢試圖,看能否看到asm file 7
SQL> select number_kffxp file#, disk_kffxp disk#, count(disk_kffxp) extents 2 from x$kffxp 3 where group_kffxp=4 4 and disk_kffxp <> 65534 5 and number_kffxp=7 6 group by number_kffxp, disk_kffxp 7 order by 1; FILE# DISK# EXTENTS ---------- ---------- ---------- 7 0 1 7 1 1
從查詢結果可以看到在磁碟組ACFS建立ADVM之後可以查詢到7號檔案。
到現在,還沒有相應的掛載目錄與邏輯卷相關聯,所以還不能使用它們。這時,我們可以先看看ADVM邏輯卷元資訊,我們先從邏輯卷目錄獲取其所在的分配單元
SQL> select x.xnum_kffxp "virtual extent",pxn_kffxp "physical extent",x.au_kffxp "au",x.disk_kffxp "disk #",d.name "disk name",d.path "disk path" 2 from x$kffxp x, v$asm_disk_stat d 3 where x.group_kffxp=d.group_number 4 and x.disk_kffxp=d.disk_number 5 and x.group_kffxp=4 6 and x.number_kffxp=7 7 order by 1,2,3; virtual extent physical extent au disk # disk name disk path -------------- --------------- ---------- ---------- ------------------------------ ---------------------------------------- 0 0 53 0 ACFS_0000 /dev/raw/raw5 0 1 53 1 ACFS_0001 /dev/raw/raw6
上面的結果顯示有一個虛擬區,並且它有兩個物理區,說明7號檔案Volume Directory存在映象,邏輯卷目錄分佈在0號磁碟(/dev/raw/raw5)的53號AU,與1號磁碟(/dev/raw/raw6)的53號AU中。
透過kfed來獲取邏輯卷目錄的AU分佈情況
由於1號檔案總是開始在0號磁碟2號AU,記住這個位置:0號盤2號AU。這是ASM中定位檔案的起點,它的作用,有點相當於磁碟上的引導區,在電腦開機後負責將OS啟動起來。1號檔案在最少情況下,至少有兩個AU。在1號檔案中,每個檔案佔用一個後設資料塊,存放自身的空間分佈資訊。每個後設資料塊大小是4K,一個AU是1M,哪麼,每個AU中,可以儲存256個檔案的空間分佈資訊。這其中,0號盤2號AU中,全是元檔案的資訊。再具體一點,0號盤2號AU,第一個後設資料塊被系統佔用,從第二個塊開始,到255為止,共255個後設資料塊,對應索引號1至255的檔案。其實,也就是全部的元檔案了。也就是說0號盤2號AU,儲存了全部元檔案的空間分佈資訊。1號檔案的第二個AU,從第一個塊開始,儲存256號檔案。第二個塊對應257號檔案,等等。每次從ASM中讀資料時,Oracle都要先讀到1號檔案,從中找出要讀的目標檔案在磁碟上的分佈位置,然後再去讀取相應的檔案的資料。由於邏輯卷目錄是7號檔案,所以要讀取0號磁碟(/dev/raw/raw11)的2號AU的7號塊
[grid@jyrac1 ~]$ kfed read /dev/raw/raw5 aun=2 blkn=7 | more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 4 ; 0x002: KFBTYP_FILEDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 7 ; 0x004: blk=7 kfbh.block.obj: 1 ; 0x008: file=1 kfbh.check: 3972298863 ; 0x00c: 0xecc4786f kfbh.fcn.base: 6805 ; 0x010: 0x00001a95 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kfffdb.node.incarn: 1 ; 0x000: A=1 NUMM=0x0 kfffdb.node.frlist.number: 4294967295 ; 0x004: 0xffffffff kfffdb.node.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kfffdb.hibytes: 0 ; 0x00c: 0x00000000 kfffdb.lobytes: 1048576 ; 0x010: 0x00100000 kfffdb.xtntcnt: 3 ; 0x014: 0x00000003 kfffdb.xtnteof: 3 ; 0x018: 0x00000003 kfffdb.blkSize: 4096 ; 0x01c: 0x00001000 kfffdb.flags: 1 ; 0x020: O=1 S=0 S=0 D=0 C=0 I=0 R=0 A=0 kfffdb.fileType: 15 ; 0x021: 0x0f kfffdb.dXrs: 19 ; 0x022: SCHE=0x1 NUMB=0x3 kfffdb.iXrs: 19 ; 0x023: SCHE=0x1 NUMB=0x3 kfffdb.dXsiz[0]: 4294967295 ; 0x024: 0xffffffff kfffdb.dXsiz[1]: 0 ; 0x028: 0x00000000 kfffdb.dXsiz[2]: 0 ; 0x02c: 0x00000000 kfffdb.iXsiz[0]: 4294967295 ; 0x030: 0xffffffff kfffdb.iXsiz[1]: 0 ; 0x034: 0x00000000 kfffdb.iXsiz[2]: 0 ; 0x038: 0x00000000 kfffdb.xtntblk: 3 ; 0x03c: 0x0003 kfffdb.break: 60 ; 0x03e: 0x003c kfffdb.priZn: 0 ; 0x040: KFDZN_COLD kfffdb.secZn: 0 ; 0x041: KFDZN_COLD kfffdb.ub2spare: 0 ; 0x042: 0x0000 kfffdb.alias[0]: 4294967295 ; 0x044: 0xffffffff kfffdb.alias[1]: 4294967295 ; 0x048: 0xffffffff kfffdb.strpwdth: 0 ; 0x04c: 0x00 kfffdb.strpsz: 0 ; 0x04d: 0x00 kfffdb.usmsz: 0 ; 0x04e: 0x0000 kfffdb.crets.hi: 33043401 ; 0x050: HOUR=0x9 DAYS=0x1e MNTH=0xc YEAR=0x7e0 kfffdb.crets.lo: 1933631488 ; 0x054: USEC=0x0 MSEC=0x38 SECS=0x34 MINS=0x1c kfffdb.modts.hi: 33043401 ; 0x058: HOUR=0x9 DAYS=0x1e MNTH=0xc YEAR=0x7e0 kfffdb.modts.lo: 1933631488 ; 0x05c: USEC=0x0 MSEC=0x38 SECS=0x34 MINS=0x1c kfffdb.dasz[0]: 0 ; 0x060: 0x00 kfffdb.dasz[1]: 0 ; 0x061: 0x00 kfffdb.dasz[2]: 0 ; 0x062: 0x00 kfffdb.dasz[3]: 0 ; 0x063: 0x00 kfffdb.permissn: 0 ; 0x064: 0x00 kfffdb.ub1spar1: 0 ; 0x065: 0x00 kfffdb.ub2spar2: 0 ; 0x066: 0x0000 kfffdb.user.entnum: 0 ; 0x068: 0x0000 kfffdb.user.entinc: 0 ; 0x06a: 0x0000 kfffdb.group.entnum: 0 ; 0x06c: 0x0000 kfffdb.group.entinc: 0 ; 0x06e: 0x0000 kfffdb.spare[0]: 0 ; 0x070: 0x00000000 kfffdb.spare[1]: 0 ; 0x074: 0x00000000 kfffdb.spare[2]: 0 ; 0x078: 0x00000000 kfffdb.spare[3]: 0 ; 0x07c: 0x00000000 kfffdb.spare[4]: 0 ; 0x080: 0x00000000 kfffdb.spare[5]: 0 ; 0x084: 0x00000000 kfffdb.spare[6]: 0 ; 0x088: 0x00000000 kfffdb.spare[7]: 0 ; 0x08c: 0x00000000 kfffdb.spare[8]: 0 ; 0x090: 0x00000000 kfffdb.spare[9]: 0 ; 0x094: 0x00000000 kfffdb.spare[10]: 0 ; 0x098: 0x00000000 kfffdb.spare[11]: 0 ; 0x09c: 0x00000000 kfffdb.usm: ; 0x0a0: length=0 kfffde[0].xptr.au: 53 ; 0x4a0: 0x00000035 kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000 kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0 kfffde[0].xptr.chk: 31 ; 0x4a7: 0x1f kfffde[1].xptr.au: 53 ; 0x4a8: 0x00000035 kfffde[1].xptr.disk: 1 ; 0x4ac: 0x0001 kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0 kfffde[1].xptr.chk: 30 ; 0x4af: 0x1e kfffde[2].xptr.au: 4294967294 ; 0x4b0: 0xfffffffe kfffde[2].xptr.disk: 65534 ; 0x4b4: 0xfffe kfffde[2].xptr.flags: 0 ; 0x4b6: L=0 E=0 D=0 S=0 kfffde[2].xptr.chk: 42 ; 0x4b7: 0x2a
從kfffde[0].xptr.au=53,kfffde[0].xptr.disk=0與kfffde[1].xptr.au=53,kfffde[1].xptr.disk=1可以確定邏輯卷目錄分佈在0號磁碟(/dev/raw/raw5)的53號AU與1號磁碟(/dev/raw/raw6)的53號AU中,與上面SQL語句所查詢的分佈情況完全一致。
在邏輯卷裝置上建立ASM叢集檔案系統(ACFS)
[root@jyrac1 bin]# /sbin/mkfs -t acfs /dev/asm/acfs_vol1-319 mkfs.acfs: version = 11.2.0.4.0 mkfs.acfs: on-disk version = 39.0 mkfs.acfs: volume = /dev/asm/acfs_vol1-319 mkfs.acfs: volume size = 2147483648 mkfs.acfs: Format complete. [root@jyrac1 bin]# /sbin/mkfs -t acfs /dev/asm/acfs_vol2-319 mkfs.acfs: version = 11.2.0.4.0 mkfs.acfs: on-disk version = 39.0 mkfs.acfs: volume = /dev/asm/acfs_vol2-319 mkfs.acfs: volume size = 2147483648 mkfs.acfs: Format complete. [root@jyrac1 bin]# mkdir /acfs1 [root@jyrac1 bin]# mkdir /acfs2 [root@jyrac1 bin]# chown -R grid:oinstall /acfs1 [root@jyrac1 bin]# chown -R grid:oinstall /acfs2 [root@jyrac1 bin]# mount -t acfs /dev/asm/acfs_vol1-319 /acfs1 [root@jyrac1 bin]# mount -t acfs /dev/asm/acfs_vol2-319 /acfs2 [root@jyrac1 bin]# mount /dev/sda1 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) /dev/asm/acfs_vol1-319 on /acfs1 type acfs (rw) /dev/asm/acfs_vol2-319 on /acfs2 type acfs (rw) [grid@jyrac1 ~]$ asmcmd volinfo -G ACFS ACFS_VOL1 Diskgroup Name: ACFS Volume Name: ACFS_VOL1 Volume Device: /dev/asm/acfs_vol1-319 State: ENABLED Size (MB): 2048 Resize Unit (MB): 32 Redundancy: MIRROR Stripe Columns: 4 Stripe Width (K): 128 Usage: ACFS Mountpath: /acfs1 [grid@jyrac1 ~]$ asmcmd volinfo -G ACFS ACFS_VOL2 Diskgroup Name: ACFS Volume Name: ACFS_VOL2 Volume Device: /dev/asm/acfs_vol2-319 State: ENABLED Size (MB): 2048 Resize Unit (MB): 32 Redundancy: MIRROR Stripe Columns: 4 Stripe Width (K): 128 Usage: ACFS Mountpath: /acfs2 [root@jyrac1 bin]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 35G 25G 8.4G 75% / tmpfs 3.9G 170M 3.8G 5% /dev/shm /dev/asm/acfs_vol1-319 2.0G 43M 2.0G 3% /acfs1 /dev/asm/acfs_vol2-319 2.0G 43M 2.0G 3% /acfs2
使用kfed工具檢視ADVM真實的後設資料
[grid@jyrac1 ~]$ kfed read /dev/raw/raw5 aun=53 blkn=0 | more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 22 ; 0x002: KFBTYP_VOLUMEDIR kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 0 ; 0x004: blk=0 kfbh.block.obj: 7 ; 0x008: file=7 kfbh.check: 1546379724 ; 0x00c: 0x5c2be1cc kfbh.fcn.base: 7356 ; 0x010: 0x00001cbc kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0 kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffff kffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kffdnd.overfl.number: 1 ; 0x00c: 0x00000001 kffdnd.overfl.incarn: 1 ; 0x010: A=1 NUMM=0x0 kffdnd.parent.number: 0 ; 0x014: 0x00000000 kffdnd.parent.incarn: 1 ; 0x018: A=1 NUMM=0x0 kffdnd.fstblk.number: 0 ; 0x01c: 0x00000000 kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0 kfvvde.entry.incarn: 1 ; 0x024: A=1 NUMM=0x0 kfvvde.entry.hash: 0 ; 0x028: 0x00000000 kfvvde.entry.refer.number: 4294967295 ; 0x02c: 0xffffffff kfvvde.entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0 kfvvde.volnm: ++AVD_DG_NUMBER ; 0x034: length=15 kfvvde.usage: ; 0x054: length=0 kfvvde.dgname: ; 0x074: length=0 kfvvde.clname: ; 0x094: length=0 kfvvde.mountpath: ; 0x0b4: length=0 kfvvde.drlinit: 0 ; 0x4b5: 0x00 kfvvde.pad1: 0 ; 0x4b6: 0x0000 kfvvde.volfnum.number: 0 ; 0x4b8: 0x00000000 kfvvde.volfnum.incarn: 0 ; 0x4bc: 0x00000000 kfvvde.drlfnum.number: 0 ; 0x4c0: 0x00000000 kfvvde.drlfnum.incarn: 0 ; 0x4c4: 0x00000000 kfvvde.volnum: 0 ; 0x4c8: 0x0000 kfvvde.avddgnum: 319 ; 0x4ca: 0x013f kfvvde.extentsz: 0 ; 0x4cc: 0x00000000 kfvvde.volstate: 4 ; 0x4d0: D=0 C=0 R=1 kfvvde.pad[0]: 0 ; 0x4d1: 0x00 kfvvde.pad[1]: 0 ; 0x4d2: 0x00 kfvvde.pad[2]: 0 ; 0x4d3: 0x00 kfvvde.pad[3]: 0 ; 0x4d4: 0x00 kfvvde.pad[4]: 0 ; 0x4d5: 0x00
上面的輸出資訊顯示了53號AU的block 0.它只包含了ADVM邏輯卷的標記(++AVD_DG_NUMBER),而真正的邏輯卷的資訊其實位於1號塊與之後的塊中
[grid@jyrac1 ~]$ kfed read /dev/raw/raw5 aun=53 blkn=1 | more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 22 ; 0x002: KFBTYP_VOLUMEDIR --指資料型別 kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 1 ; 0x004: blk=1 --該資料所在的au block號 kfbh.block.obj: 7 ; 0x008: file=7 --指該後設資料的asm file number,advm是file 7,所以這裡看到的是7 kfbh.check: 3589956819 ; 0x00c: 0xd5fa64d3 kfbh.fcn.base: 7697 ; 0x010: 0x00001e11 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0 --分配資訊,包括block的分支號和指向next freelist block的指標 kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffff kffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kffdnd.overfl.number: 2 ; 0x00c: 0x00000002 --overfl,表示指向同層級的下一個block kffdnd.overfl.incarn: 1 ; 0x010: A=1 NUMM=0x0 kffdnd.parent.number: 4294967295 ; 0x014: 0xffffffff kffdnd.parent.incarn: 0 ; 0x018: A=0 NUMM=0x0 kffdnd.fstblk.number: 0 ; 0x01c: 0x00000000 --表示指向上一層的block kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0 kfvvde.entry.incarn: 1 ; 0x024: A=1 NUMM=0x0 kfvvde.entry.hash: 0 ; 0x028: 0x00000000 kfvvde.entry.refer.number: 4294967295 ; 0x02c: 0xffffffff kfvvde.entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0 kfvvde.volnm: ACFS_VOL1 ; 0x034: length=9 --表示asm advm 卷名稱 kfvvde.usage: ACFS ; 0x054: length=4 --advm的type型別,這裡是使用的acfs kfvvde.dgname: ; 0x074: length=0 kfvvde.clname: ; 0x094: length=0 kfvvde.mountpath: /acfs1 ; 0x0b4: length=6 --這裡表示acfs mount的路徑 kfvvde.drlinit: 1 ; 0x4b5: 0x01 kfvvde.pad1: 0 ; 0x4b6: 0x0000 kfvvde.volfnum.number: 257 ; 0x4b8: 0x00000101 --這裡表示volume file number. kfvvde.volfnum.incarn: 931944533 ; 0x4bc: 0x378c5855 kfvvde.drlfnum.number: 256 ; 0x4c0: 0x00000100 --這裡表示volume dirty region logging 資訊對應的file number kfvvde.drlfnum.incarn: 931944533 ; 0x4c4: 0x378c5855 kfvvde.volnum: 1 ; 0x4c8: 0x0001 --這裡表示對應的卷組number號,從1開始 kfvvde.avddgnum: 319 ; 0x4ca: 0x013f kfvvde.extentsz: 8 ; 0x4cc: 0x00000008 --這裡表示advm的extent大小,有點類似database中的extent概念。這裡stripe是4,而其分配unit是32m,所以這裡是64. kfvvde.volstate: 2 ; 0x4d0: D=0 C=1 R=0 --這裡表示advm卷組狀態。2應該是表示可用 kfvvde.pad[0]: 0 ; 0x4d1: 0x00 kfvvde.pad[1]: 0 ; 0x4d2: 0x00 kfvvde.pad[2]: 0 ; 0x4d3: 0x00 kfvvde.pad[3]: 0 ; 0x4d4: 0x00 kfvvde.pad[4]: 0 ; 0x4d5: 0x00
ASM元資訊7號檔案block 1包含的是第一個邏輯卷的資訊(kfvvde.volnm: ACFS_VOL1),並且有兩個檔案關聯到這個邏輯卷:
.DRL髒資料記錄區域檔案(kfvvde.drlfnum.number: 256)
.邏輯卷檔案(kfvvde.volfnum.number: 257)
[grid@jyrac1 ~]$ kfed read /dev/raw/raw5 aun=53 blkn=2 | more kfbh.endian: 1 ; 0x000: 0x01 kfbh.hard: 130 ; 0x001: 0x82 kfbh.type: 22 ; 0x002: KFBTYP_VOLUMEDIR --指資料型別 kfbh.datfmt: 1 ; 0x003: 0x01 kfbh.block.blk: 2 ; 0x004: blk=2 --該資料所在的au block號 kfbh.block.obj: 7 ; 0x008: file=7 --指該後設資料的asm file number,advm是file 7,所以這裡看到的是7 kfbh.check: 705009710 ; 0x00c: 0x2a05982e kfbh.fcn.base: 7699 ; 0x010: 0x00001e13 kfbh.fcn.wrap: 0 ; 0x014: 0x00000000 kfbh.spare1: 0 ; 0x018: 0x00000000 kfbh.spare2: 0 ; 0x01c: 0x00000000 kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0 --分配資訊,包括block的分支號和指向next freelist block的指標 kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffff kffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0 kffdnd.overfl.number: 4294967295 ; 0x00c: 0xffffffff --overfl,表示指向同層級的下一個block kffdnd.overfl.incarn: 0 ; 0x010: A=0 NUMM=0x0 kffdnd.parent.number: 4294967295 ; 0x014: 0xffffffff kffdnd.parent.incarn: 0 ; 0x018: A=0 NUMM=0x0 kffdnd.fstblk.number: 0 ; 0x01c: 0x00000000 --表示指向上一層的block kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0 kfvvde.entry.incarn: 1 ; 0x024: A=1 NUMM=0x0 kfvvde.entry.hash: 0 ; 0x028: 0x00000000 kfvvde.entry.refer.number: 4294967295 ; 0x02c: 0xffffffff kfvvde.entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0 kfvvde.volnm: ACFS_VOL2 ; 0x034: length=9 --表示asm advm 卷名稱 kfvvde.usage: ACFS ; 0x054: length=4 --advm的type型別,這裡是使用的acfs kfvvde.dgname: ; 0x074: length=0 kfvvde.clname: ; 0x094: length=0 kfvvde.mountpath: /acfs2 ; 0x0b4: length=6 --這裡表示acfs mount的路徑 kfvvde.drlinit: 1 ; 0x4b5: 0x01 kfvvde.pad1: 0 ; 0x4b6: 0x0000 kfvvde.volfnum.number: 259 ; 0x4b8: 0x00000103 --這裡表示volume file number. kfvvde.volfnum.incarn: 931944539 ; 0x4bc: 0x378c585b kfvvde.drlfnum.number: 258 ; 0x4c0: 0x00000102 --這裡表示volume dirty region logging 資訊對應的file number kfvvde.drlfnum.incarn: 931944539 ; 0x4c4: 0x378c585b kfvvde.volnum: 2 ; 0x4c8: 0x0002 --這裡表示對應的卷組number號,從1開始 kfvvde.avddgnum: 319 ; 0x4ca: 0x013f kfvvde.extentsz: 8 ; 0x4cc: 0x00000008 --這裡表示advm的extent大小,有點類似database中的extent概念。這裡stripe是4,而其分配unit是32m,所以這裡是64. kfvvde.volstate: 2 ; 0x4d0: D=0 C=1 R=0 --這裡表示advm卷組狀態。2應該是表示可用 kfvvde.pad[0]: 0 ; 0x4d1: 0x00 kfvvde.pad[1]: 0 ; 0x4d2: 0x00 kfvvde.pad[2]: 0 ; 0x4d3: 0x00 kfvvde.pad[3]: 0 ; 0x4d4: 0x00 kfvvde.pad[4]: 0 ; 0x4d5: 0x00
ASM元資訊7號檔案block 2包含的是第二個邏輯卷的資訊(kfvvde.volnm: ACFS_VOL2),並且有兩個檔案關聯到這個邏輯卷:
.DRL髒資料記錄區域檔案(kfvvde.drlfnum.number: 258)
.邏輯卷檔案(kfvvde.volfnum.number: 259)
小結:
一個磁碟組中可以配置一個或多個ASM動態邏輯卷裝置。ASM叢集檔案系統透過ADVM介面構建於ASM磁碟組之上。ADVM跟資料庫一樣,也是ASM的一個客戶端。有兩種與ADVM邏輯卷相關的檔案型別:
.ASMVOL:邏輯卷檔案,作為邏輯卷儲存裝置的容器
.ASMVDRL:包含髒資料記錄區域資訊的檔案,恢復映象資料時會用到此檔案。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2131650/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle ASM神書《撥雲見日 解密Oracle ASM核心》出版了OracleASM解密
- Oracle ASM擴容(NFS)OracleASMNFS
- 【ASM】Oracle asm刪除磁碟組注意事項ASMOracle
- Oracle ASM AMDU工具的使用OracleASM
- Oracle ASM Cluster File Systems (ACOracleASM
- Oracle:ASM & 密碼檔案OracleASM密碼
- Oracle 12C Database File Mapping for Oracle ASM FilesOracleDatabaseAPPASM
- 12C Oracle ASM Filter DriverOracleASMFilter
- Oracle ASM Rebalance執行過程OracleASM
- Overview of Oracle Flex ASM In Oracle 19c RAC-20220111ViewOracleFlexASM
- 【ASM】Oracle asm磁碟被格式化,如何掛載該磁碟組ASMOracle
- 【Oracle】ASM例項安裝入門OracleASM
- ORACLE ASM磁碟組空間溢位OracleASM
- 2.10.3 使用 Oracle Automatic Storage Management (Oracle ASM) 克隆資料庫OracleASM資料庫
- Oracle 12C ASM asmcmd amdu_extractOracleASM
- Oracle RAC日常運維-ASM磁碟擴容Oracle運維ASM
- Oracle ASM磁碟組擴容(AIX7.1)OracleASMAI
- ORACLE ASM的SSD磁碟空間回收分析OracleASM
- Oracle asm磁碟損壞異常恢復OracleASM
- oracle asm 資料塊重構恢復OracleASM
- 【BUILD_ORACLE】使用ASMLib包搭建ASM磁碟UIOracleASM
- Oracle Linux 7使用syslog來管理Oracle ASM的審計檔案OracleLinuxASM
- 【ASK_ORACLE】Oracle RAC配置ASM Filter Driver(ASMFD)(一)ASMFD簡介OracleASMFilter
- Oracle OCP(42):ASM 儲存結構簡介OracleASM
- Oracle ASM故障資料恢復解決方案OracleASM資料恢復
- Oracle RAC環境下ASM磁碟組擴容OracleASM
- Oracle資料庫 ASM磁碟線上擴容Oracle資料庫ASM
- 通過ORACLE VM virtualbox環境安裝oracle 11G RAC(ASM)OracleASM
- ORACLE RAC 11.2.0.4 ASM加盤導致叢集重啟之ASM sga設定過小OracleASM
- 關於Oracle 10g ASM磁碟大小的限制Oracle 10gASM
- Oracle 12c新特性--ASMFD(ASM Filter Driver)特性OracleASMFilter
- oracle10gR1 asm儲存簡單示例OracleASM
- docker建立volume 指定volume 匯出image 匯入imageDocker
- 【BUILD_ORACLE】Oracle RAC配置ASM Filter Driver(ASMFD)(二)詳細配置步驟UIOracleASMFilter
- Oracle 11gR2 ASM例項記憶體管理OracleASM記憶體
- oracle RAC+DG 擴容ASM和表空間(Linux)OracleASMLinux
- Oracle使用RMAN將普通資料檔案轉成ASMOracleASM
- Oracle 11gRac 測試案例(五)ASM功能測試OracleASM
- Oracle RAC ASM磁碟組擴容時遇到的VIP漂移OracleASM