Oracle ASM Volume Directory

2017-01-04 10:32:10来源:作者:Java & Oracle人点击

第七城市

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 selectedSQL> 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 installACFS-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 startACFS-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 versionACFS-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 53ACFS /dev/raw/raw6 ACFS_0001 ACFS_0001 5,120 53ARCHDG /dev/raw/raw2 ARCHDG_0000 ARCHDG_0000 5,120 3,447ARCHDG /dev/raw/raw9 ARCHDG_0001 ARCHDG_0001 5,120 3,447CRSDG /dev/raw/raw1 CRSDG_0000 CRSDG_0000 5,120 215CRSDG /dev/raw/raw8 CRSDG_0001 CRSDG_0001 5,120 183DATADG /dev/raw/raw10 DATADG_0000 DATADG_0000 5,120 1,673DATADG /dev/raw/raw11 DATADG_0001 DATADG_0001 5,120 1,670DATADG /dev/raw/raw3 DATADG_0002 DATADG_0002 5,120 1,666DATADG /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 014 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 -aDiskgroup 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号文件,从中找出要读的目标文件在磁盘上的分布位置,然后再去读取相应的文件的数据。由于COD是4号文件,所以要读取0号磁盘(/dev/raw/raw11)的2号AU的6号块

[grid@jyrac1 ~]$ kfed read /dev/raw/raw5 aun=2 blkn=7 | morekfbh.endian: 1 ; 0x000: 0x01kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 4 ; 0x002: KFBTYP_FILEDIRkfbh.datfmt: 1 ; 0x003: 0x01kfbh.block.blk: 7 ; 0x004: blk=7kfbh.block.obj: 1 ; 0x008: file=1kfbh.check: 3972298863 ; 0x00c: 0xecc4786fkfbh.fcn.base: 6805 ; 0x010: 0x00001a95kfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1: 0 ; 0x018: 0x00000000kfbh.spare2: 0 ; 0x01c: 0x00000000kfffdb.node.incarn: 1 ; 0x000: A=1 NUMM=0x0kfffdb.node.frlist.number: 4294967295 ; 0x004: 0xffffffffkfffdb.node.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0kfffdb.hibytes: 0 ; 0x00c: 0x00000000kfffdb.lobytes: 1048576 ; 0x010: 0x00100000kfffdb.xtntcnt: 3 ; 0x014: 0x00000003kfffdb.xtnteof: 3 ; 0x018: 0x00000003kfffdb.blkSize: 4096 ; 0x01c: 0x00001000kfffdb.flags: 1 ; 0x020: O=1 S=0 S=0 D=0 C=0 I=0 R=0 A=0kfffdb.fileType: 15 ; 0x021: 0x0fkfffdb.dXrs: 19 ; 0x022: SCHE=0x1 NUMB=0x3kfffdb.iXrs: 19 ; 0x023: SCHE=0x1 NUMB=0x3kfffdb.dXsiz[0]: 4294967295 ; 0x024: 0xffffffffkfffdb.dXsiz[1]: 0 ; 0x028: 0x00000000kfffdb.dXsiz[2]: 0 ; 0x02c: 0x00000000kfffdb.iXsiz[0]: 4294967295 ; 0x030: 0xffffffffkfffdb.iXsiz[1]: 0 ; 0x034: 0x00000000kfffdb.iXsiz[2]: 0 ; 0x038: 0x00000000kfffdb.xtntblk: 3 ; 0x03c: 0x0003kfffdb.break: 60 ; 0x03e: 0x003ckfffdb.priZn: 0 ; 0x040: KFDZN_COLDkfffdb.secZn: 0 ; 0x041: KFDZN_COLDkfffdb.ub2spare: 0 ; 0x042: 0x0000kfffdb.alias[0]: 4294967295 ; 0x044: 0xffffffffkfffdb.alias[1]: 4294967295 ; 0x048: 0xffffffffkfffdb.strpwdth: 0 ; 0x04c: 0x00kfffdb.strpsz: 0 ; 0x04d: 0x00kfffdb.usmsz: 0 ; 0x04e: 0x0000kfffdb.crets.hi: 33043401 ; 0x050: HOUR=0x9 DAYS=0x1e MNTH=0xc YEAR=0x7e0kfffdb.crets.lo: 1933631488 ; 0x054: USEC=0x0 MSEC=0x38 SECS=0x34 MINS=0x1ckfffdb.modts.hi: 33043401 ; 0x058: HOUR=0x9 DAYS=0x1e MNTH=0xc YEAR=0x7e0kfffdb.modts.lo: 1933631488 ; 0x05c: USEC=0x0 MSEC=0x38 SECS=0x34 MINS=0x1ckfffdb.dasz[0]: 0 ; 0x060: 0x00kfffdb.dasz[1]: 0 ; 0x061: 0x00kfffdb.dasz[2]: 0 ; 0x062: 0x00kfffdb.dasz[3]: 0 ; 0x063: 0x00kfffdb.permissn: 0 ; 0x064: 0x00kfffdb.ub1spar1: 0 ; 0x065: 0x00kfffdb.ub2spar2: 0 ; 0x066: 0x0000kfffdb.user.entnum: 0 ; 0x068: 0x0000kfffdb.user.entinc: 0 ; 0x06a: 0x0000kfffdb.group.entnum: 0 ; 0x06c: 0x0000kfffdb.group.entinc: 0 ; 0x06e: 0x0000kfffdb.spare[0]: 0 ; 0x070: 0x00000000kfffdb.spare[1]: 0 ; 0x074: 0x00000000kfffdb.spare[2]: 0 ; 0x078: 0x00000000kfffdb.spare[3]: 0 ; 0x07c: 0x00000000kfffdb.spare[4]: 0 ; 0x080: 0x00000000kfffdb.spare[5]: 0 ; 0x084: 0x00000000kfffdb.spare[6]: 0 ; 0x088: 0x00000000kfffdb.spare[7]: 0 ; 0x08c: 0x00000000kfffdb.spare[8]: 0 ; 0x090: 0x00000000kfffdb.spare[9]: 0 ; 0x094: 0x00000000kfffdb.spare[10]: 0 ; 0x098: 0x00000000kfffdb.spare[11]: 0 ; 0x09c: 0x00000000kfffdb.usm: ; 0x0a0: length=0kfffde[0].xptr.au: 53 ; 0x4a0: 0x00000035kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0kfffde[0].xptr.chk: 31 ; 0x4a7: 0x1fkfffde[1].xptr.au: 53 ; 0x4a8: 0x00000035kfffde[1].xptr.disk: 1 ; 0x4ac: 0x0001kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0kfffde[1].xptr.chk: 30 ; 0x4af: 0x1ekfffde[2].xptr.au: 4294967294 ; 0x4b0: 0xfffffffekfffde[2].xptr.disk: 65534 ; 0x4b4: 0xfffekfffde[2].xptr.flags: 0 ; 0x4b6: L=0 E=0 D=0 S=0kfffde[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-319mkfs.acfs: version = 11.2.0.4.0mkfs.acfs: on-disk version = 39.0mkfs.acfs: volume = /dev/asm/acfs_vol1-319mkfs.acfs: volume size = 2147483648mkfs.acfs: Format complete.[root@jyrac1 bin]# /sbin/mkfs -t acfs /dev/asm/acfs_vol2-319mkfs.acfs: version = 11.2.0.4.0mkfs.acfs: on-disk version = 39.0mkfs.acfs: volume = /dev/asm/acfs_vol2-319mkfs.acfs: volume size = 2147483648mkfs.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_VOL1Diskgroup 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_VOL2Diskgroup 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 -hFilesystem 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 | morekfbh.endian: 1 ; 0x000: 0x01kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 22 ; 0x002: KFBTYP_VOLUMEDIRkfbh.datfmt: 1 ; 0x003: 0x01kfbh.block.blk: 0 ; 0x004: blk=0kfbh.block.obj: 7 ; 0x008: file=7kfbh.check: 1546379724 ; 0x00c: 0x5c2be1cckfbh.fcn.base: 7356 ; 0x010: 0x00001cbckfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1: 0 ; 0x018: 0x00000000kfbh.spare2: 0 ; 0x01c: 0x00000000kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffffkffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0kffdnd.overfl.number: 1 ; 0x00c: 0x00000001kffdnd.overfl.incarn: 1 ; 0x010: A=1 NUMM=0x0kffdnd.parent.number: 0 ; 0x014: 0x00000000kffdnd.parent.incarn: 1 ; 0x018: A=1 NUMM=0x0kffdnd.fstblk.number: 0 ; 0x01c: 0x00000000kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0kfvvde.entry.incarn: 1 ; 0x024: A=1 NUMM=0x0kfvvde.entry.hash: 0 ; 0x028: 0x00000000kfvvde.entry.refer.number: 4294967295 ; 0x02c: 0xffffffffkfvvde.entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0kfvvde.volnm: ++AVD_DG_NUMBER ; 0x034: length=15kfvvde.usage: ; 0x054: length=0kfvvde.dgname: ; 0x074: length=0kfvvde.clname: ; 0x094: length=0kfvvde.mountpath: ; 0x0b4: length=0kfvvde.drlinit: 0 ; 0x4b5: 0x00kfvvde.pad1: 0 ; 0x4b6: 0x0000kfvvde.volfnum.number: 0 ; 0x4b8: 0x00000000kfvvde.volfnum.incarn: 0 ; 0x4bc: 0x00000000kfvvde.drlfnum.number: 0 ; 0x4c0: 0x00000000kfvvde.drlfnum.incarn: 0 ; 0x4c4: 0x00000000kfvvde.volnum: 0 ; 0x4c8: 0x0000kfvvde.avddgnum: 319 ; 0x4ca: 0x013fkfvvde.extentsz: 0 ; 0x4cc: 0x00000000kfvvde.volstate: 4 ; 0x4d0: D=0 C=0 R=1kfvvde.pad[0]: 0 ; 0x4d1: 0x00kfvvde.pad[1]: 0 ; 0x4d2: 0x00kfvvde.pad[2]: 0 ; 0x4d3: 0x00kfvvde.pad[3]: 0 ; 0x4d4: 0x00kfvvde.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 | morekfbh.endian: 1 ; 0x000: 0x01kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 22 ; 0x002: KFBTYP_VOLUMEDIR --指数据类型kfbh.datfmt: 1 ; 0x003: 0x01kfbh.block.blk: 1 ; 0x004: blk=1 --该数据所在的au block号kfbh.block.obj: 7 ; 0x008: file=7 --指该元数据的asm file number,advm是file 7,所以这里看到的是7kfbh.check: 3589956819 ; 0x00c: 0xd5fa64d3kfbh.fcn.base: 7697 ; 0x010: 0x00001e11kfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1: 0 ; 0x018: 0x00000000kfbh.spare2: 0 ; 0x01c: 0x00000000kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0 --分配信息,包括block的分支号和指向next freelist block的指针kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffffkffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0kffdnd.overfl.number: 2 ; 0x00c: 0x00000002 --overfl,表示指向同层级的下一个blockkffdnd.overfl.incarn: 1 ; 0x010: A=1 NUMM=0x0kffdnd.parent.number: 4294967295 ; 0x014: 0xffffffffkffdnd.parent.incarn: 0 ; 0x018: A=0 NUMM=0x0kffdnd.fstblk.number: 0 ; 0x01c: 0x00000000 --表示指向上一层的blockkffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0kfvvde.entry.incarn: 1 ; 0x024: A=1 NUMM=0x0kfvvde.entry.hash: 0 ; 0x028: 0x00000000kfvvde.entry.refer.number: 4294967295 ; 0x02c: 0xffffffffkfvvde.entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0kfvvde.volnm: ACFS_VOL1 ; 0x034: length=9 --表示asm advm 卷名称kfvvde.usage: ACFS ; 0x054: length=4 --advm的type类型,这里是使用的acfskfvvde.dgname: ; 0x074: length=0kfvvde.clname: ; 0x094: length=0kfvvde.mountpath: /acfs1 ; 0x0b4: length=6 --这里表示acfs mount的路径kfvvde.drlinit: 1 ; 0x4b5: 0x01kfvvde.pad1: 0 ; 0x4b6: 0x0000kfvvde.volfnum.number: 257 ; 0x4b8: 0x00000101 --这里表示volume file number.kfvvde.volfnum.incarn: 931944533 ; 0x4bc: 0x378c5855kfvvde.drlfnum.number: 256 ; 0x4c0: 0x00000100 --这里表示volume dirty region logging 信息对应的file numberkfvvde.drlfnum.incarn: 931944533 ; 0x4c4: 0x378c5855kfvvde.volnum: 1 ; 0x4c8: 0x0001 --这里表示对应的卷组number号,从1开始kfvvde.avddgnum: 319 ; 0x4ca: 0x013fkfvvde.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: 0x00kfvvde.pad[1]: 0 ; 0x4d2: 0x00kfvvde.pad[2]: 0 ; 0x4d3: 0x00kfvvde.pad[3]: 0 ; 0x4d4: 0x00kfvvde.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 | morekfbh.endian: 1 ; 0x000: 0x01kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 22 ; 0x002: KFBTYP_VOLUMEDIR --指数据类型kfbh.datfmt: 1 ; 0x003: 0x01kfbh.block.blk: 2 ; 0x004: blk=2 --该数据所在的au block号kfbh.block.obj: 7 ; 0x008: file=7 --指该元数据的asm file number,advm是file 7,所以这里看到的是7kfbh.check: 705009710 ; 0x00c: 0x2a05982ekfbh.fcn.base: 7699 ; 0x010: 0x00001e13kfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1: 0 ; 0x018: 0x00000000kfbh.spare2: 0 ; 0x01c: 0x00000000kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0 --分配信息,包括block的分支号和指向next freelist block的指针kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffffkffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0kffdnd.overfl.number: 4294967295 ; 0x00c: 0xffffffff --overfl,表示指向同层级的下一个blockkffdnd.overfl.incarn: 0 ; 0x010: A=0 NUMM=0x0kffdnd.parent.number: 4294967295 ; 0x014: 0xffffffffkffdnd.parent.incarn: 0 ; 0x018: A=0 NUMM=0x0kffdnd.fstblk.number: 0 ; 0x01c: 0x00000000 --表示指向上一层的blockkffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0kfvvde.entry.incarn: 1 ; 0x024: A=1 NUMM=0x0kfvvde.entry.hash: 0 ; 0x028: 0x00000000kfvvde.entry.refer.number: 4294967295 ; 0x02c: 0xffffffffkfvvde.entry.refer.incarn: 0 ; 0x030: A=0 NUMM=0x0kfvvde.volnm: ACFS_VOL2 ; 0x034: length=9 --表示asm advm 卷名称kfvvde.usage: ACFS ; 0x054: length=4 --advm的type类型,这里是使用的acfskfvvde.dgname: ; 0x074: length=0kfvvde.clname: ; 0x094: length=0kfvvde.mountpath: /acfs2 ; 0x0b4: length=6 --这里表示acfs mount的路径kfvvde.drlinit: 1 ; 0x4b5: 0x01kfvvde.pad1: 0 ; 0x4b6: 0x0000kfvvde.volfnum.number: 259 ; 0x4b8: 0x00000103 --这里表示volume file number.kfvvde.volfnum.incarn: 931944539 ; 0x4bc: 0x378c585bkfvvde.drlfnum.number: 258 ; 0x4c0: 0x00000102 --这里表示volume dirty region logging 信息对应的file numberkfvvde.drlfnum.incarn: 931944539 ; 0x4c4: 0x378c585bkfvvde.volnum: 2 ; 0x4c8: 0x0002 --这里表示对应的卷组number号,从1开始kfvvde.avddgnum: 319 ; 0x4ca: 0x013fkfvvde.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: 0x00kfvvde.pad[1]: 0 ; 0x4d2: 0x00kfvvde.pad[2]: 0 ; 0x4d3: 0x00kfvvde.pad[3]: 0 ; 0x4d4: 0x00kfvvde.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:包含脏数据记录区域信息的文件,恢复镜像数据时会用到此文件。

第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台