DB君想说3个事儿:
RAC环境下实操ACFS;
RAC环境下ACFS如何自动挂载;
ACFS使用小结
一、RAC环境数据库实操ACFS
在RAC环境下创建、管理、使用ACFS与单实例环境下的的操作流程类似。具体可查看前一篇文章:读书笔记:实操ACFS--Oracle单实例环境
1 RAC数据库环境已部署:
OS版本:RHEL 6.5 X86_64
内核版本:2.6.32-431.el6.x86_64 x86_64
Oracle版本:11.2.0.4.0
磁盘组:FRA「实现已创建好的名为fra的磁盘组」
RAC环境下acfs的正常使用同样需要下述4个OS内核模块:
oracleasm:ASM module;
oracleadvm:ASM Dynamic Volume Manager module;
oracleoks:Oracle kernel services module;
oracleacfs:ASM file system module
只是通常不再需要手工去加载和启动,这项工作由RAC clusterware自动帮我们完成。
[root@node1 ~]# lsmod |grep oracle
oracleacfs 1990406 0
oracleadvm 250040 0
oracleoks 427672 2 oracleacfs,oracleadvm
[root@node1 ~]#
注1:该RAC环境的存储是通过udev来实现的,故没有oracleasm内核。
2 创建ASM volume
SQL> select group_number,name,total_mb,free_mb,state from v$asm_diskgroup;
GROUP_NUMBER NAME TOTAL_MB FREE_MB STATE
------------ ---------- ---------- ---------- ---------------------------------
1 DATA 6141 7 MOUNTED
2 FRA 2047 1716 MOUNTED
3 GRID 1019 623 MOUNTED
SQL> select inst_id,group_number,VOLUME_NAME,usage,state,VOLUME_DEVICE,MOUNTPATH from gv$asm_volume;
no rows selected
SQL> alter diskgroup fra add volume v1 size 300m;
Diskgroup altered.
SQL>
创建之后:
SQL> select inst_id,group_number,VOLUME_NAME,usage,state,VOLUME_DEVICE,MOUNTPATH from gv$asm_volume;
INST_ID GROUP_NUMBER VOL USAGE STATE VOLUME_DEVICE MOUNTPATH
---------- ------------ --- ----- -------- -------------------- --------------------
1 2 V1 ENABLED dev/asm/v1-33
2 2 V1 ENABLED dev/asm/v1-33
SQL> !
node1-> ls -l dev/asm/
total 0
brwxrwx---. 1 root asmadmin 252, 16897 May 4 16:52 v1-33
node1->
注2:RAC环境下创建ASM卷只需要在任意节点上执行即可,其它节点会自动看到已创建出的卷信息,如上。
/dev/asm/v1-33设备是ASM卷v1映射到OS上的设备,且在节点2上同样可以看到该设备信息。
[root@node2 ~]# ls -l dev/asm
total 0
brwxrwx---. 1 root asmadmin 252, 16897 May 4 17:49 v1-33
[root@node2 ~]#
3 创建文件系统
[root@node1 ~]# mkfs.acfs dev/asm/v1-33
mkfs.acfs: version = 11.2.0.4.0
mkfs.acfs: on-disk version = 39.0
mkfs.acfs: volume = dev/asm/v1-33
mkfs.acfs: volume size = 335544320
mkfs.acfs: Format complete.
[root@node1 ~]#
注3:上述给ASM卷映射到OS上的设备创建文件系统时,同样只需要在其中一个节点上执行即可。
4 挂载设备
RAC双节点上创建相同的挂载路径:/home/grid/acfs
RAC双节点上依次使用下述命令挂载/dev/asm/v1-33文件系统。
[root@node1 ~]# mount -t acfs dev/asm/v1-33 home/grid/acfs/
RAC双节点挂载之后:
节点1:
[root@node1 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 16G 14G 1.1G 94%
tmpfs tmpfs 939M 483M 457M 52% dev/shm
/dev/asm/v1-33 acfs 320M 40M 281M 13% /home/grid/acfs
[root@node1 ~]#
节点2:
[root@node2 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 16G 15G 511M 97% /
tmpfs tmpfs 939M 614M 326M 66% /dev/shm
/dev/asm/v1-33 acfs 320M 78M 243M 25% /home/grid/acfs
[root@node2 ~]#
ASM实例里看到的信息:
SQL> select inst_id,group_number,VOLUME_NAME,usage,state,VOLUME_DEVICE,MOUNTPATH from gv$asm_volume;
INST_ID GROUP_NUMBER VOL USAGE STATE VOLUME_DEVICE MOUNTPATH
---------- ------------ --- ----- -------- -------------------- --------------------
1 2 V1 ACFS ENABLED /dev/asm/v1-33 /home/grid/acfs/
2 2 V1 ACFS ENABLED /dev/asm/v1-33 /home/grid/acfs/
SQL>
注4:上述通过OS级别的mount命令需要在每个RAC节点上分别执行,才可以挂载、使用acfs文件系统;
二、RAC环境下如何自动挂载、使用acfs文件系统
1 向clusterware管理的服务项中添加acfs filesystem服务「root用户在任意节点上执行」
grid用户执行报错:
node1-> srvctl add filesystem -d /dev/asm/v1-33 -v v1 -g fra -m /home/grid/acfs/ -u grid
PRCN-2018 : Current user grid is not a privileged user
node1-> whoami
grid
node1->
root用户执行:
[root@node1 ~]# whoami
root
[root@node1 ~]# /u01/app/11.2.0/grid/bin/srvctl add filesystem -d /dev/asm/v1-33 -v v1 -g fra -m /home/grid/acfs/ -u grid
[root@node1 ~]#
注5:上述命令需要root用户执行,且只需在任意节点执行即可。同时,命令中的-u grid选项表示将来以grid用户来自动挂载。
2 启动acfs filesystem
节点1:
node1-> srvctl start filesystem -d /dev/asm/v1-33 -n node1
node1-> df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 16G 14G 1.1G 94% /
tmpfs tmpfs 939M 484M 456M 52% /dev/shm
/dev/asm/v1-33 acfs 320M 78M 243M 25% /home/grid/acfs
node1->
节点2:
node2-> df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 16G 15G 511M 97% /
tmpfs tmpfs 939M 614M 326M 66% /dev/shm
node2-> srvctl start filesystem -d /dev/asm/v1-33
node2-> df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 16G 15G 510M 97% /
tmpfs tmpfs 939M 614M 326M 66% /dev/shm
/dev/asm/v1-33 acfs 320M 78M 243M 25% /home/grid/acfs
node2->
此外,可以通过srvctl enable|disable|start|stop|status filesystem命令来启用、禁用、启动、停止、查看acfs filesystem。如:
node1-> srvctl status filesystem -d /dev/asm/v1-33
ACFS file system is running on node1,node2
node1->
这样,将来RAC节点自动重启之后,ACFS会自动挂载。
注6:只有在RAC环境下才支持ACFS的自动挂载,单实例环境下暂不支持该功能。
三、ACFS小结
ACFS的使用场景离不开ASM环境,且多见于RAC架构下的数据库;
ACFS可以支持存放的文件类型:数据库跟踪文件、日志文件、逻辑备份dump文件、及常见的OS可支持的二进制、文本、音视频等文件,但是不建议将oracle数据库文件存在ACFS上;从11.2.0.3.0版本开始,OCFS支持存放RMAN备份集文件;
ACFS可以用来存放oracle数据库软件的ORACLE_HOME目录,但是不可以用来存放grid软件的ORACLE_HOME目录
题图:Unforgettable Hubble Space Telescope Photos
如果不介意为DB君增+1位新读者的话,欢迎把这篇文章分享到你的朋友圈儿。