暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

ACFS – ASM Cluster File System

原创 eygle 2019-09-19
3068

在Oracle Database 11gR2中,以ASM技术为基础,Oracle推出了强劲的ACFS文件系统,进一步推进了自动存储管理技术。


在11gR2中,ASM技术仍旧着眼于支持数据库运行和备份的核心文件等,包括数据文件、控制文件、归档日志、spfile、RMAN备份文件、Change Tracking文件、数据泵Dump文件以及OCR文件等;而ACFS和Oracle ADVM(ASM Dynamic Volume Manager)则进一步延展了ASM的支持范围,可以存储Oracle软件、告警日志、跟踪文件、BFILEs大对象、还有影像、图片以及其它应用的普通文件。


在ASMCA中,可以通过ASM集群文件系统(ASM Cluster File Systems)选项页来查看ACFS相关设置,下图是单节点ASM显示的界面信息,提示显示“ASM集群文件系统(ACFS)可用于存储文件,如可执行文件、Oracle诊断文件、应用程序配置文件等。要使用ACFS,必须先创建ASM卷”:


企业微信截图_15688752631921.png


总结一下,创建ACFS文件系统需要以下几个前提条件:


1. Oracle 11gR2数据库


对于11.2.0.1数据库,操作系统只支持Linux和Windows


对于11.2.0.2数据库,增加支持的操作系统有AIX和Solaris


2. 需要安装Grid Infrastructure


安装GI的单机版即可,也就是Oracle Restart环境,但是ACFS在Oracle Restart环境中跟RAC环境相比会有些功能上的不足,比如Oracle ACFS drivers无法自动加载,创建完毕的ACFS文件系统也无法自动mount。


3. 预先创建ASM实例及ASM磁盘组并创建ASM卷


在以下例子中ASM实例名为+ASM,磁盘组为ORADG.


如果要在ASM磁盘组上创建ACFS Volume,必须要求ASM磁盘组的属性COMPATIBLE.ASM在11.2以上。否则创建卷组的时候会出现以下报错。


SQL> alter diskgroup ORADG add volume ACFSVOL size 1G;
alter diskgroup oradg add volume acfsvol size 1G
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15221: ASM operation requires compatible.asm of 11.2.0.0.0 or higher


如果ASM磁盘组是使用asmca图形化工具创建的,那么compatible.asm默认设置就已经为11.2,但如果是使用CREATE DISKGROUP这个SQL命令创建的,那么默认设置则为10.1,需要手动修改。


SQL> alter diskgroup oradg set attribute 'COMPATIBLE.ASM'='11.2';


如果要创建ACFS Volume,还必须要求ASM磁盘组的COMPATIBLE.ADVM属性也在11.2以上,此属性默认为空。而修改COMPATIBLE.ADVM属性,则要求加载ASM volume driver,否则将会出现以下报错。


SQL> alter diskgroup oradg set attribute 'compatible.advm'='11.2';
alter diskgroup oradg set attribute 'compatible.advm'='11.2'
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15242: could not set attribute compatible.advm
ORA-15238: 11.2 is not a valid value for attribute compatible.advm
ORA-15477: cannot communicate with the volume driver


该错误提示ASM Driver未加载:


SQL> host oerr ora 15477
15477, 00000, "cannot communicate with the volume driver"
// *Cause:  An attempt was made to communicate with the volume driver.
// *Action: Check that the ASM volume driver is loaded. If so, check the alert
//          log to identify the reason for failure and take necessary action
//          to prevent such failures in the future.


可以使用root用户手工加载ASM volume driver:


# /app/grid/bin/acfsload start –s


修改ASM磁盘组的COMPATIBLE.ADVM属性,并创建ACFS Volume。


SQL> alter diskgroup oradg set attribute 'compatible.advm'='11.2';
Diskgroup altered.
 
SQL> alter diskgroup ORADG add volume ACFSVOL size 1G;
Diskgroup altered.
 
SQL> select VOLUME_DEVICE from V$ASM_VOLUME where VOLUME_NAME='ACFSVOL';
VOLUME_DEVICE
-------------------------------------------------------------------------
/dev/asm/acfsvol-351


使用mkfs命令创建文件系统,使用acfsutil命令注册文件系统,然后使用mount.acfs命令挂载文件系统,以下命令需要用root用户执行。


# mkdir -p /app/oracle/acfsmounts/oradg_acfsvol
# /sbin/mkfs -t acfs -n ACFSVOL1 /dev/asm/acfsvol-351
mkfs.acfs: version                   = 11.2.0.1.0.0
mkfs.acfs: on-disk version           = 39.0
mkfs.acfs: volume                    = /dev/asm/acfsvol-351
mkfs.acfs: volume size               = 1073741824
mkfs.acfs: Format complete.
# /sbin/acfsutil registry -a -f /dev/asm/acfsvol-351 /app/oracle/acfsmounts/oradg_acfsvol
acfsutil registry: mount point /app/oracle/acfsmounts/oradg_acfsvol successfully added to Oracle Registry
# mount.acfs -o all
#df -k | grep acfs
/dev/asm/acfsvol-351   1048576     39192   1009384   4% /app/oracle/acfsmounts/oradg_acfsvol
# chown oracle:dba /app/oracle/acfsmounts/oradg_acfsvol


至此ACFS文件系统创建成功,可以用oracle用户在该文件系统下创建测试文件。


$ dd if=/dev/zero of=/app/oracle/acfsmounts/oradg_acfsvol/testfile bs=8192 count=100
100+0 records in
100+0 records out
819200 bytes (819 kB) copied, 0.0270009 seconds, 30.3 MB/s
$ ls -l /app/oracle/acfsmounts/oradg_acfsvol/testfile
-rw-r--r-- 1 oracle dba 819200 Aug 12 19:18 /app/oracle/acfsmounts/oradg_acfsvol/testfile


Oracle提供了acfsutil实用程序来与ACFS文件系统交互,查看ACFS文件系统信息。


# /sbin/acfsutil info fs
/app/oracle/acfsmounts/oradg_acfsvol
    ACFS Version: 11.2.0.1.0.0
    flags:        MountPoint,Available
    mount time:   Thu Aug 12 19:06:33 2010
    volumes:      1
    total size:   1073741824
    total free:   968667136
    primary volume: /dev/asm/acfsvol-351
        label:                 ACFSVOL1
        flags:                 Primary,Available,ADVM
        on-disk version:       39.0
        allocation unit:       4096
        major, minor:          252, 179713
        size:                  1073741824
        free:                  968667136
        ADVM diskgroup         ORADG
        ADVM resize increment: 268435456
        ADVM redundancy:       unprotected
        ADVM stripe columns:   4
        ADVM stripe width:     131072
    number of snapshots:  0
    snapshot space usage: 0


在ASM卷被打开的时候,无法直接shutdown ASM实例,会报ORA-15487错误。


SQL> shutdown immediate
ORA-15487: cannot shutdown the ASM instance with an open ASM volume


可以使用umount命令卸载ACFS系统。


# /bin/umount -t acfs –a


如果挂载文件系统时报错,那么可能是因为ACFS Volume没有激活,Volume的状态可以从V$ASM_VOLUME.STATE字段获得,显示为“ENABLED”才表示已激活。


# mount.acfs /dev/asm/acfsvol-351 /app/oracle/acfsmounts/oradg_acfsvol
mount.acfs: CLSU-00100: Operating System function: open64 (/dev/asm/acfsvol-351) failed with error data: 2
mount.acfs: CLSU-00101: Operating System error message: No such file or directory
mount.acfs: CLSU-00103: error location: OOF_1
mount.acfs: ACFS-02017: Failed to open volume /dev/asm/acfsvol-351. Verify the volume exists.


如果Volume状态显示为DISABLE,可以使用如下命令,激活Volume。


SQL>alter diskgroup ORADG enable volume 'ACFSVOL';


由于ACFS基于ASM创建,所以只要底层卷组具有足够的空间,则可以动态的对文件系统进行扩展,如下ACFSG卷初始分配的空间为4G:


[grid@enmou1 ~]$ asmcmd volinfo -G ACFSG -a
Diskgroup Name: ACFSG
         Volume Name: ACFSVOL1
         Volume Device: /dev/asm/acfsvol1-171
         State: ENABLED
         Size (MB): 4096
         Resize Unit (MB): 256
         Redundancy: UNPROT
         Stripe Columns: 4
         Stripe Width (K): 128
         Usage: ACFS
         Mountpath: /u01/app/acfs/vol1


但是相应的磁盘组上还有3663M空间可用:


[grid@enmou1 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Name
MOUNTED  EXTERN  N         512   4096  1048576      7814     3663  ACFSG/
MOUNTED  EXTERN  N         512   4096  1048576      1954     1895  CRSDG/


在root用户下可以使用acfsutil动态调整其大小:


[root@enmou1 ~]# acfsutil size +2048M /u01/app/acfs/vol1
acfsutil size: new file system size: 6442450944 (6144MB)
[grid@enmou1 ~]$ asmcmd lsdg
State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Name
MOUNTED  EXTERN  N         512   4096  1048576      7814     1609  ACFSG/
MOUNTED  EXTERN  N         512   4096  1048576      1954     1895  CRSDG/


使用ASMCA来创建ASM volume、ACFS文件系统则更为直观和简便,以下运行asmca创建一个名为ACFSG的外部冗余磁盘组:


企业微信截图_15688755943856.png


然后在此磁盘组上创建一个卷acfsvol1:


企业微信截图_15688756331057.png


在此卷组之上,就可以创建ACFS文件系统了,这里可以选择挂载点,用于数据库主目录或一般用途(这里的“显示命令”功能可以帮助我们查看具体的操作命令细节):


image.png


创建完成之后,可以在root下执行/sbin/mount.acfs -o all挂载文件系统,本例创建的系统如下,其挂载点在/u01/app/db目录下:


image.png


在命令行可以看到挂载的文件系统:


[root@enmou1 setupFiles]# df -m /u01/app/db
Filesystem           1M-blocks      Used Available Use% Mounted on
/dev/asm/acfsvol1-171
                          6144      4571      1574  75% /u01/app/db


ACFS卷信息可以通过查询V$ASM_ACFSVOLUMES视图获得:


SQL> select * from V$ASM_ACFSVOLUMES;
FS_NAME         VOL_DEVICE                     VOL_L PRIMA   TOTAL_MB    FREE_MB
--------------- ------------------------------ ----- ----- ---------- ----------
/u01/app/db     /dev/asm/acfsvol1-171                TRUE        6144 1487.85156

 

此后可以将数据库软件安装部署在此目录下,使用集群文件系统部署数据库软件的好处是,可以在多节点同事挂载,在多节点的机群众,只需要安装一份数据库软件:


image.png


ACFS还支持快照功能,可以对文件系统上的文件进行快照备份,以下命令对Oracle软件目录进行了快照镜像:


[oracle@enmou1 db]$ /sbin/acfsutil snap create backup /u01/app/db
acfsutil snap create: Snapshot operation is complete.


文件创建于.ACFS目录下:


[oracle@enmou1 db]$ ls -al
total 108
drwxr-xr-x  9 oracle dba       4096 Mar 17 17:15 .
drwxr-xr-x  6 grid   oinstall  4096 Mar 17 15:08 ..
drwxr-xr-x 75 oracle oinstall  8192 Mar 17 17:23 11.2.0
drwxr-xr-x  5 oracle dba       4096 Mar 17 14:30 .ACFS
drwxr-x---  3 oracle oinstall  4096 Mar 17 17:15 admin
drwxr-x---  5 oracle oinstall  4096 Mar 17 17:20 cfgtoollogs
drwxr-xr-x  2 oracle oinstall  4096 Mar 17 15:45 checkpoints
drwxrwxr-x 11 oracle oinstall  4096 Mar 17 15:35 diag
drwx------  2 root   root     65536 Mar 17 14:30 lost+found


该快照本质上是对当前文件进行了拷贝备份,在发生文件丢失或者损坏时,可以执行恢复


[oracle@enmou1 db]$ tree -d -L 3 .ACFS
.ACFS
|-- repl
|   |-- logs
|   |-- processed
|   |-- ready
|   `-- staging
`-- snaps
    `-- backup
        |-- 11.2.0
        |-- admin
        |-- cfgtoollogs
        |-- checkpoints
        `-- dia

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论