客户需求,提供在19c环境下,ACFS的命令行操作的具体步骤,便于在图形界面不可用场景使用。
当然,如果有图形可操作,还是推荐首选图形,避免复杂度以及不必要的错误。
其实之前有测试过11g环境下的ACFS命令创建,如下:
但考虑到版本可能会有变化,为避免不必要的试错过程,我们建议依据官方19c最新的方式来创建。
在正式开始之前,首先我们要了解下相关概念,嗯,又要来看官方文档说明了,主要看“Automatic Storage Management Administrator's Guide”这个文档。
Oracle ASM Cluster File System (Oracle ACFS) and Oracle ASM Dynamic Volume Manager (Oracle ADVM) provide key components of storage management.
其实存储管理的功能本身由存储软件商来cover,但是Oracle的ASM一出,就抢占了这个市场。尤其是现在去装Oracle集群数据库,基本不会再用到存储软件的存储管理,都是首选ASM。
但ASM磁盘组只能存放Oracle相关数据,而ACFS就是进一步扩展应用场景,在ASM的基础上,提供了集群文件系统,可以用于存放任意数据。官方原话是:
Oracle Automatic Storage Management Cluster File System (Oracle ACFS) is a multi-platform, scalable file system, and storage management technology that extends Oracle Automatic Storage Management (Oracle ASM) functionality to support all customer files.
创建ACFS,参考官方文档:
https://docs.oracle.com/en/database/oracle/oracle-database/19/ostmg/steps-manage-acfs.html#GUID-4C98CF06-8CCC-45F1-9316-C40FB3EFF268
官方文档写的非常清楚,只需要按文档做一个具体测试验证,供客户操作参考:
我这里用于XTTS测试,就将挂载目录创建简单明了的/xtts
吧。
[root@db01rac1 ~]# mkdir /xtts [root@db01rac2 ~]# mkdir /xtts
之后步骤按文档验证如下:
ASMCMD> volcreate -G datadg -s 5G volume1
实验空间有限,就以5G大小为例,如果你的空间需要更大,按实际调整即可,ACFS支持大空间创建,只要你的ASM磁盘组剩余空间足够。
ASMCMD> volinfo -G datadg volume1 Diskgroup Name: DATADG Volume Name: VOLUME1 Volume Device: /dev/asm/volume1-290 State: ENABLED Size (MB): 5120 Resize Unit (MB): 64 Redundancy: UNPROT Stripe Columns: 8 Stripe Width (K): 1024 Usage: Mountpath: [grid@db01rac1 ~]$ sqlplus / as sysasm SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jun 1 14:02:48 2023 Version 19.16.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.16.0.0.0 SQL> SELECT volume_name, volume_device FROM V$ASM_VOLUME WHERE volume_name ='VOLUME1'; 2 VOLUME_NAME ------------------------------ VOLUME_DEVICE -------------------------------------------------------------------------------- VOLUME1 /dev/asm/volume1-290
[grid@db01rac1 ~]$ ls -l /dev/asm/volume1-290 brwxrwx--- 1 root asmadmin 250, 148481 Jun 1 13:19 /dev/asm/volume1-290 [grid@db01rac1 ~]$ /sbin/mkfs -t acfs /dev/asm/volume1-290 mkfs.acfs: version = 19.0.0.0.0 mkfs.acfs: on-disk version = 46.0 mkfs.acfs: volume = /dev/asm/volume1-290 mkfs.acfs: volume size = 5368709120 ( 5.00 GB ) mkfs.acfs: Format complete.
注意:这里其实并不需要root用户执行mkfs命令,只要是volume的所有者即可执行此命令,比如这里就是grid用户执行成功的。
使用 srvctl 命令注册并自动挂载文件系统,举例来说:
[root@db01rac1 ~]# /u01/app/19.3.0/grid/bin/srvctl add filesystem -device /dev/asm/volume1-290 -path /xtts -user grid,oracle
使用acfsutil命令来注册文件系统,举例如下:
[root@db01rac1 ~]# /sbin/acfsutil registry -a /dev/asm/volume1-290 /xtts acfsutil registry: mount point /xtts successfully added to Oracle Registry
此时已经可以查到两边节点正常看到这个acfs的文件系统正常挂载:
--node1: [root@db01rac1 xtts]# df -h /xtts 文件系统 容量 已用 可用 已用% 挂载点 /dev/asm/volume1-290 5.0G 559M 4.5G 11% /xtts [root@db01rac1 xtts]# ls -ld /xtts drwxr-xr-x 4 oracle oinstall 32768 6月 1 14:31 /xtts [root@db01rac1 xtts]# ls -lrth /xtts 总用量 64K drwx------ 2 root root 64K 6月 1 14:31 lost+found --node2: [root@db01rac2 xtts]# df -h /xtts 文件系统 容量 已用 可用 已用% 挂载点 /dev/asm/volume1-290 5.0G 559M 4.5G 11% /xtts [root@db01rac2 xtts]# df -h /xtts 文件系统 容量 已用 可用 已用% 挂载点 /dev/asm/volume1-290 5.0G 559M 4.5G 11% /xtts [root@db01rac2 xtts]# ls -ld /xtts drwxr-xr-x 4 oracle oinstall 32768 6月 1 14:31 /xtts [root@db01rac2 xtts]# ls -lrth /xtts 总用量 64K drwx------ 2 root root 64K 6月 1 14:31 lost+found
之前已经注册了文件系统,直接使用SRVCTL命令启动文件系统,举例如下:
[grid@db01rac1 ~]$ srvctl start filesystem -device /dev/asm/volume1-290 PRCR-1120 : Resources are already running. CRS-5702: Resource 'ora.datadg.volume1.acfs' is already running on 'db01rac1'
实际发现这一步不需要执行了,因为资源都已经正常启动啦:
[grid@db01rac1 ~]$ crsctl stat res -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DATADG.VOLUME1.advm ONLINE ONLINE db01rac1 STABLE ONLINE ONLINE db01rac2 STABLE ... ora.datadg.volume1.acfs ONLINE ONLINE db01rac1 mounted on /xtts,STA BLE ONLINE ONLINE db01rac2 mounted on /xtts,STA BLE ...
你根据实际情况判断即可,如果要启动,是这个命令没错。
如果你之前没有注册文件系统,那么使用oracle acfs的mount命令挂载文件系统,举例如下(这里上面已完成注册、启动并挂载,未做这种情况的验证):
# /bin/mount -t acfs /dev/asm/volume1-290 /xtts
这一步也不需要执行。
下面看下另外一种封装的方法,其实就是直接使用asmca,只不过用它的静默模式,来创建ACFS:
对应文档:
https://docs.oracle.com/en/database/oracle/oracle-database/19/ostmg/manage-acfs-advm-asmca.html#GUID-5DD43A64-2D00-469A-8035-88F10D79F5E4
首先创建ADVM,然后创建ACFS,两步都可以使用asmca静默模式来创建:
这里另外创建一个测试挂载点 /ggs,使用另外一个ASM磁盘组:ARCHDG。
$ asmca -silent \ -createVolume \ -volumeName volume1 \ -volumeDiskGroup archdg \ -volumeSizeGB 1 --实际执行效果: [grid@db01rac1 ~]$ asmca -silent \ > -createVolume \ > -volumeName volume1 \ > -volumeDiskGroup archdg \ > -volumeSizeGB 1 [INFO] [DBT-30079] Volume volume1 created successfully.
此时对应资源正确显示:
-------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.ARCHDG.VOLUME1.advm ONLINE ONLINE db01rac1 STABLE ONLINE ONLINE db01rac2 STABLE
先查询下volume的名字:
ASMCMD> volinfo --all Diskgroup Name: ARCHDG Volume Name: VOLUME1 Volume Device: /dev/asm/volume1-346 State: ENABLED Size (MB): 1024 Resize Unit (MB): 64 Redundancy: UNPROT Stripe Columns: 8 Stripe Width (K): 1024 Usage: Mountpath: Diskgroup Name: DATADG Volume Name: VOLUME1 Volume Device: /dev/asm/volume1-290 State: ENABLED Size (MB): 5120 Resize Unit (MB): 64 Redundancy: UNPROT Stripe Columns: 8 Stripe Width (K): 1024 Usage: ACFS Mountpath: /xtts
然后确认是/dev/asm/volume1-346
后,执行:
$ asmca -silent \ -createACFS \ -acfsVolumeDevice /dev/asm/volume1-346 \ -acfsMountPoint /ggs --实际执行效果: [grid@db01rac1 ~]$ asmca -silent \ > -createACFS \ > -acfsVolumeDevice /dev/asm/volume1-346 \ > -acfsMountPoint /ggs [INFO] [DBT-30092] ASM Cluster File System created on /dev/asm/volume1-346 successfully. [INFO] Run the generated ACFS registration script /u01/app/grid/cfgtoollogs/asmca/scripts/acfs_script.sh as privileged user to register the ACFS with Grid Infrastructure and to mount the ACFS. The ACFS registration script needs to be run only on this node: db01rac1.
使用root用户执行提示的这个脚本,
注意只需在节点1执行一次即可:
[root@db01rac1 xtts]# sh /u01/app/grid/cfgtoollogs/asmca/scripts/acfs_script.sh 已在节点 db01rac1,db01rac2 上装载 ACFS 文件系统/ggs
最后有个小细节稍微提下,这里挂载的/ggs目录默认权限是root用户哈,而上面方法一,因为有指定用户权限,挂载的目录/xtts是oracle用户。