文章标题

来源:互联网 发布:js options 编辑:程序博客网 时间:2024/06/14 04:50

原文: ASM file number 7
作者: Bane Radulovic
译者:郭旭瑞,沃趣科技产品交付部经理,负责QData Cloud高性能数据库云平台、QBackup数据库秒级备份恢复云平台等产品的整体交付管理与技术支持、维保服务工作。
审校:魏兴华
责编:仲培艺

ASM元信息7号文件,是ASM的逻辑卷目录,用于跟踪与ADVM有关的文件。

ASM动态逻辑卷设备是由ASM动态逻辑卷构建的。一个磁盘组中可以配置一个或多个ASM动态逻辑卷设备。ASM集群文件系统通过ADVM接口构建在ASM磁盘组之上。ADVM像数据库一样,也是ASM的一个客户端。当一个逻辑卷被访问时,相应的ASM文件会被打开并且ASM extent的信息会被发送到ADVM驱动。

有两种与ADVM逻辑卷相关的文件类型:

  • ASMVOL:逻辑卷文件,作为逻辑卷存储的容器
  • ASMVDRL:包含脏数据记录区域信息的文件。重新同步镜像数据时会用到此文件。

Turn up the ADVM volume

为ADVM创建一个单独的磁盘组并不是必须的,但这样做确实是有意义的,通过这种方式,可以把数据库文件与ACFS文件隔离开。看几个例子。

SQL> create diskgroup ACFSdisk 'ORCL:ASMDISK5', 'ORCL:ASMDISK6'attribute 'COMPATIBLE.ASM' = '11.2', 'COMPATIBLE.ADVM' = '11.2';Diskgroup created.

要创建逻辑卷,首先需要有一个磁盘组,上面创建了一个名称为acfs的磁盘组。为了能在磁盘组中创建逻辑卷,磁盘组的COMPATIBLE.ASM与COMPATIBLE.ADVM必须设置为11.2或以上,同时ADVM/ACFS驱动要被加载(在集群环境中,已经默认加载,而在单实例环境中,需要手动加载)。

做到以上要求后,就可以在磁盘组中创建逻辑卷了。

$ asmcmd volcreate -G ACFS -s 2G ACFS_VOL1$ asmcmd volcreate -G ACFS -s 2G ACFS_VOL2$ asmcmd volinfo -aDiskgroup Name: ACFS Volume Name: ACFS_VOL1 Volume Device: /dev/asm/acfs_vol1-159 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-159 State: ENABLED Size (MB): 2048 Resize Unit (MB): 32 Redundancy: MIRROR Stripe Columns: 4 Stripe Width (K): 128 Usage: Mountpath:$

到现在,还没有相应的挂载目录与逻辑卷相关联,所以还不能使用它们。这时,我们可以先看看ADVM逻辑卷元信息,我们先从逻辑卷目录获取其所在的分配单元。

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 dWHERE x.group_kffxp=d.group_number and x.disk_kffxp=d.disk_number and x.group_kffxp=2 and x.number_kffxp=7ORDER BY 1, 2;    Extent         AU     Disk # Disk name---------- ---------- ---------- ------------------------------         0         53          1 ASMDISK6         0         53          0 ASMDISK5

接下来,使用kfed工具查看真实的元信息。

$ kfed read /dev/oracleasm/disks/ASMDISK5 aun=53 | morekfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                           22 ; 0x002: KFBTYP_VOLUMEDIR...kfvvde.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:                    159 ; 0x4ca: 0x009fkfvvde.extentsz:                      0 ; 0x4cc: 0x00000000kfvvde.volstate:                      4 ; 0x4d0: D=0 C=0 R=1...

上面的输出信息显示了53号AU的block 0。它只包含了ADVM逻辑卷的标记(++AVD_DG_NUMBER),而真正的逻辑卷的信息其实位于block 1及以后。

$ kfed read /dev/oracleasm/disks/ASMDISK5 aun=53 blkn=1 | morekfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                           22 ; 0x002: KFBTYP_VOLUMEDIR...kfvvde.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=9kfvvde.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:              257 ; 0x4b8: 0x00000101kfvvde.volfnum.incarn:        771971291 ; 0x4bc: 0x2e0358dbkfvvde.drlfnum.number:              256 ; 0x4c0: 0x00000100kfvvde.drlfnum.incarn:        771971289 ; 0x4c4: 0x2e0358d9kfvvde.volnum:                        1 ; 0x4c8: 0x0001kfvvde.avddgnum:                    159 ; 0x4ca: 0x009fkfvvde.extentsz:                      8 ; 0x4cc: 0x00000008kfvvde.volstate:                      2 ; 0x4d0: D=0 C=1 R=0...$ kfed read /dev/oracleasm/disks/ASMDISK5 aun=53 blkn=2 | morekfbh.endian:                          1 ; 0x000: 0x01kfbh.hard:                          130 ; 0x001: 0x82kfbh.type:                           22 ; 0x002: KFBTYP_VOLUMEDIR...kfvvde.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=9kfvvde.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:              259 ; 0x4b8: 0x00000103kfvvde.volfnum.incarn:        771971303 ; 0x4bc: 0x2e0358e7kfvvde.drlfnum.number:              258 ; 0x4c0: 0x00000102kfvvde.drlfnum.incarn:        771971301 ; 0x4c4: 0x2e0358e5kfvvde.volnum:                        2 ; 0x4c8: 0x0002kfvvde.avddgnum:                    159 ; 0x4ca: 0x009fkfvvde.extentsz:                      8 ; 0x4cc: 0x00000008kfvvde.volstate:                      2 ; 0x4d0: D=0 C=1 R=0...

ASM元信息7号文件block 1包含的是第一个逻辑卷的信息(kfvvde.volnm: ACFS_VOL1),并且有两个文件关联到这个逻辑卷。

  • DRL脏数据记录区域文件(kfvvde.drlfnum.number: 256)
  • 逻辑卷文件(kfvvde.volfnum.number: 257)

block 2包含第二个逻辑卷的信息(kfvvde.volnm: ACFS_VOL2),并且有两个文件关联到这个逻辑卷。

  • DRL脏数据记录区域文件(kfvvde.drlfnum.number: 258)
  • 逻辑卷文件(kfvvde.volfnum.number: 259)

这些都是特殊文件,所以不会显示在asmcmd ls命令的输出和v$asm_alias视图中。但是,你可以到v$asm_file中找到他们。

SQL> SELECT file_number "File #", bytes/1024/1024 "Size (MB)", typeFROM v$asm_fileWHERE group_number=2;    File #  Size (MB) TYPE---------- ---------- ----------       256         17 ASMVDRL       257       2048 ASMVOL       258         17 ASMVDRL       259       2048 ASMVOL

Create ASM cluster file system

这时,可以在逻辑卷设备上创建ASM集群文件系统(ACFS)。

# /sbin/mkfs -t acfs /dev/asm/acfs_vol1-159mkfs.acfs: version                   = 11.2.0.3.0mkfs.acfs: on-disk version           = 39.0mkfs.acfs: volume                    = /dev/asm/acfs_vol1-159mkfs.acfs: volume size               = 2147483648mkfs.acfs: Format complete.# mkdir /acfs1# mount -t acfs /dev/asm/acfs_vol1-159 /acfs1# mount/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)...oracleasmfs on /dev/oracleasm type oracleasmfs (rw)/dev/asm/acfs_vol1-159 on /acfs1 type acfs (rw)$ asmcmd volinfo -G ACFS ACFS_VOL1Diskgroup Name: ACFS Volume Name: ACFS_VOL1 Volume Device: /dev/asm/acfs_vol1-159 State: ENABLED Size (MB): 2048 Resize Unit (MB): 32 Redundancy: MIRROR Stripe Columns: 4 Stripe Width (K): 128 Usage: ACFS Mountpath: /acfs1$

这时候再看看逻辑卷目录中是否包含挂载目录:

$ kfed read /dev/oracleasm/disks/ASMDISK6 aun=53 blkn=1 | grep mountpathkfvvde.mountpath:                /acfs1 ; 0x0b4: length=6

确实如此。

Conclusion

一个磁盘组中可以配置一个或多个ASM动态逻辑卷设备。ASM集群文件系统通过ADVM接口构建于ASM磁盘组之上。ADVM跟数据库一样,也是ASM的一个客户端。

有两种与ADVM逻辑卷相关的文件类型:

  • ASMVOL:逻辑卷文件,作为逻辑卷存储设备的容器
  • ASMVDRL:包含脏数据记录区域信息的文件。恢复镜像数据时会用到此文件。
0 0
原创粉丝点击