Oracle ASM Cluster File System (ACFS)

Oracle ASM Cluster File System (ACFS) is a general purpose cluster file system implemented as part of ASM. It can be used to store almost anything, including the database executables. The only things that should not be stored in ACFS are the Grid Infrastructure home and any Oracle files that can be directly stored in Oracle ASM.

Using ASM Configuration Assistant (ASMCA)

As the “oracle” user, switch to the ASM environment on node 1 of the RAC, then we start the ASM Configuration Assistant (asmca).

[[email protected] ~]$ . oraenv
ORACLE_SID = [RAC1] ? +ASM1
The Oracle base for ORACLE_HOME=/u01/app/11.2.0/grid is /u01/app/oracle
[[email protected] ~]$ dbhome
/u01/app/11.2.0/grid
[[email protected] ~]$ asmca

When the ASM configuration assistant starts you are presented with the “ASM Instances” tab.

ASMCA: ASM Instances

Click on the “ASM Cluster File Systems” tab, then click the “Create” button.

ASMCA: ASM Cluster File Systems

Select “Create Volume” from the Volume list.

ASMCA: Create ASM Cluster File System

Enter the Volume Name and Size and click the “OK” button. Wait for the volume to be created, then click the “OK” button on the subsequent message dialog.

ASMCA: Create Volume

The newly created volume will now be selected in the Volume list. Select the “General Purpose File System” option, enter a previously created mount point directory (or leave the suggested mount point), select the “Yes” option for Register MountPoint and click the “OK” button.

ASMCA: Create ASM Cluster File System

Click the “OK” button on the resulting message.

ASMCA: Create ASM Cluster File System Message

The newly created cluster file system is now listed under the “ASM Cluster File Systems” tab.

ASMCA: ASM Cluster File Systems

Either perform another action, or click the “Exit” button.

At the command line on the first RAC node, navigate to the ACFS mount point and create a test file.

[[email protected] data_acfsvol1]$ cd /u01/app/oracle/acfsmounts/data_acfsvol1
[[email protected] data_acfsvol1]$ echo "This is a test" > test.txt
[[email protected] data_acfsvol1]$ ls -al
total 80
drwxrwx--- 4 root   dba       4096 Dec 29 12:39 .
drwxr-xr-x 3 root   root      4096 Dec 29 12:24 ..
drwxr-xr-x 5 root   root      4096 Dec 29 12:24 .ACFS
drwx------ 2 root   root     65536 Dec 29 12:24 lost+found
-rw-r--r-- 1 oracle oinstall    15 Dec 29 12:39 test.txt
[[email protected] data_acfsvol1]$

Check the file is present on the second RAC node.

[[email protected] data_acfsvol1]$ cd /u01/app/oracle/acfsmounts/data_acfsvol1
[[email protected] data_acfsvol1]$ ls -al
total 80
drwxrwx--- 4 root   dba       4096 Dec 29 12:39 .
drwxr-xr-x 3 root   root      4096 Dec 29 12:24 ..
drwxr-xr-x 5 root   root      4096 Dec 29 12:24 .ACFS
drwx------ 2 root   root     65536 Dec 29 12:24 lost+found
-rw-r--r-- 1 oracle oinstall    15 Dec 29 12:39 test.txt
[[email protected] data_acfsvol1]$ cat test.txt
This is a test
[[email protected] data_acfsvol1]$

So the ASM Cluster File System is working as expected.

Using Oracle Enterprise Manager (OEM)

Oracle Enterprise Manager provides a similar interface for interacting with ASM Cluster File Systems.

First we need to create mount points on the file system of each node for the new volume.

# mkdir -p /u01/app/oracle/acfsmounts/data_acfsvol2
# chown oracle:oinstall /u01/app/oracle/acfsmounts/data_acfsvol2

Log in to OEM, scroll to the bottom of the home page, then click on one of the ASM instances listed. On the resulting ASM screen, click on the “ASM Cluster File System” tab. You are then presented with the following screen. Click the “Create” button.

OEM: ASM Cluster File Systems

Click the “Create ASM Volume” button.

OEM: Create ASM Cluster File Systems

Enter the Volume Name and Size and click the “OK” button. Wait for the volume to be created.

OEM: Create Volume

The newly created volume will now be entered in the Volume Device field. Enter a Volume Label and the previously created mount point directory, then click the “OK” button.

OEM: Create ASM Cluster File System

The newly created volume is listed as “Dismounted”. Select it and click the “Mount” button.

OEM: ASM Cluster File Systems

Accept the default node selection by clicking the “Continue” button.

OEM: Mount ASM Cluster File System

Enter the Mount Point and click the “Generate Command” button.

OEM: Mount Point ASM Cluster File System

Run the suggested command as the “root” user on all nodes, then click the “Return” button on this and the previous screen.

OEM: Mount Command ASM Cluster File System

The new ASM Cluster File System is ready for use.

OEM: ASM Cluster File Systems

Using Command Line

First we need to create mount points on the file system of each node for the new volume.

# mkdir -p /u01/app/oracle/acfsmounts/data_acfsvol3
# chown oracle:oinstall /u01/app/oracle/acfsmounts/data_acfsvol3

As the “oracle” user, switch to the ASM environment on node 1 of the RAC, then connect to the ASM instance using SQL*Plus.

[[email protected] ~]$ . oraenv
ORACLE_SID = [RAC1] ? +ASM1
The Oracle base for ORACLE_HOME=/u01/app/11.2.0/grid is /u01/app/oracle
[[email protected] ~]$ dbhome
/u01/app/11.2.0/grid
[[email protected] ~]$ sqlplus / as sysasm

Issue to the following command to create a new volume.

SQL> ALTER DISKGROUP DATA ADD VOLUME ACFSVOL3 SIZE 10G;

Diskgroup altered.

SQL>

Exit the SQL*Plus session, then create a file system on the volume.

[[email protected] ~]$ /sbin/mkfs -t acfs -b 4k /dev/asm/acfsvol3-301 -n "ASMVOL3"
mkfs.acfs: version                   = 11.2.0.1.0.0
mkfs.acfs: on-disk version           = 39.0
mkfs.acfs: volume                    = /dev/asm/acfsvol3-301
mkfs.acfs: volume size               = 10737418240
mkfs.acfs: Format complete.
[[email protected] ~]$

Register the filesystem.

[[email protected] ~]$ /sbin/acfsutil registry -f -a /dev/asm/acfsvol3-301 /u01/app/oracle/acfsmounts/data_acfsvol3
acfsutil registry: mount point /u01/app/oracle/acfsmounts/data_acfsvol3 successfully added to Oracle Registry
[[email protected] ~]$

The ASM Cluster File System should now be mounted on all RAC nodes. If it not, then issue the following command on each node to mount it.

/bin/mount -t acfs /dev/asm/acfsvol3-301 /u01/app/oracle/acfsmounts/data_acfsvol3

unmount/mount all the ACFS locations

You can unmount and mount all the ACFS locations using the following commands from the “root” user on each RAC node.

# /bin/umount -t acfs -a
# /sbin/mount.acfs -o all

Registering mount points, means these file systems will automatically be mounted and unmounted and startup and shutdown respectively.

Probably the easiest interface to use is the ASM Configuration Assistant (ASMCA), but Enterprise Manager does allow you to see all the commands being run to perform each task.

For More Information check Oracle Help Center:

ACFS