프린트 하기 URL 복사

OS 환경 : Oracle Linux 9.6 (64bit)

 

DB 환경 : Oracle Database 19.31.0.0

 

방법 : 오라클 19c ACFS 구성 테스트

본문에서는 ASMlib를 이용해 2node 19c RAC 구성된 서버에 acfs 파일시스템을 추가하는 방법을 설명함
참고로 리눅스9/6 환경에서 인증 매트릭스상 19.28에서는 안되고 19.29 이상 이어야해서 19.31로 패치 후 진행함
참고 : ACFS and AFD Support On OS Platforms (Certification Matrix).(KB129209)

참고 : 오라클 19c RAC 환경 opatchauto 이용 19.31 RU 패치 가이드 ( https://positivemh.tistory.com/1390 )
DATA diskgroup을 이용해 acfs 볼륨을 만들 예정임

 

 

acfs란?
ACFS(Oracle Automatic Storage Management Cluster File System)는 오라클의 저장소 관리 기술인 ASM을 기반으로 만든 고성능 클러스터 파일 시스템임
acfs 특징
ASM 디스크 그룹을 기반으로 동작하는 공유 파일 시스템임
오라클 RAC 환경의 여러 노드에서 동시에 읽기 및 쓰기가 가능함
DB 파일뿐만 아니라 로그, 바이너리, 이미지 등 일반 파일도 모두 저장할 수 있음
일반 리눅스 디렉터리 형태로 마운트되어 익숙한 OS 명령어(ls, cp 등)를 그대로 쓸 수 있음
서비스 중단 없이 파일 시스템 용량을 동적으로 확장하거나 축소할 수 있음
자체적인 스냅숏, 복제, 암호화, 보안 감사 등 엔터프라이즈급 기능을 제공함
사용을 위해서는 오라클 그리드 인프라(Grid Infrastructure)와 ASM 구성이 필수임

 

 

테스트
커널 버전 확인

1
2
# uname -a
Linux oel19db1 6.12.0-1.23.3.2.el9uek.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 13 17:24:00 PDT 2025 x86_64 x86_64 x86_64 GNU/Linux

 

 

db 및 grid 패치 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# su - oracle
$ opatch lspatches -oh $GRID_HOME
39107855;TOMCAT RELEASE UPDATE 19.0.0.0.0 (39107855)
39107825;DBWLM RELEASE UPDATE 19.0.0.0.0 (39107825)
39055473;ACFS RELEASE UPDATE 19.31.0.0.0 (39055473)
39039430;OCW RELEASE UPDATE 19.31.0.0.0 (39039430)
39034528;Database Release Update : 19.31.0.0.260421 (REL-APR2026) (39034528)
 
OPatch succeeded.
 
$ opatch lspatches -oh $ORACLE_HOME
38906621;OJVM RELEASE UPDATE: 19.31.0.0.260421 (38906621)
39039430;OCW RELEASE UPDATE 19.31.0.0.0 (39039430)
39034528;Database Release Update : 19.31.0.0.260421 (REL-APR2026) (39034528)
 
OPatch succeeded.

19.31임

 

 

acfs 모듈 확인 및 활성화(root 유저로 모든 노드에서 수행)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/app/grid/product/19c/bin/acfsdriverstate supported
ACFS-9200: Supported
 
/app/grid/product/19c/bin/acfsdriverstate installed
ACFS-9203: true
 
/app/grid/product/19c/bin/acfsroot install
ACFS-9300: ADVM/ACFS distribution files found.
ACFS-9314: Removing previous ADVM/ACFS installation.
ACFS-9315: Previous ADVM/ACFS components successfully removed.
ACFS-9294: updating file /etc/sysconfig/oracledrivers.conf
ACFS-9307: Installing requested ADVM/ACFS software.
ACFS-9294: updating file /etc/sysconfig/oracledrivers.conf
ACFS-9308: Loading installed ADVM/ACFS drivers.
ACFS-9298: Installing SELinux policy for ACFS.
ACFS-9297: Creating ACFS SELinux policy file /usr/share/oracleacfs/acfs.cil.
ACFS-9321: Creating udev for ADVM/ACFS.
ACFS-9323: Creating module dependencies - this may take some time.
ACFS-9154: Loading 'oracleoks.ko' driver.
ACFS-9154: Loading 'oracleadvm.ko' driver.
ACFS-9154: Loading 'oracleacfs.ko' driver.
ACFS-9327: Verifying ADVM/ACFS devices.
ACFS-9156: Detecting control device '/dev/asm/.asm_ctl_spec'.
ACFS-9156: Detecting control device '/dev/ofsctl'.
ACFS-9309: ADVM/ACFS installation correctness verified.

 

 

디스크 그룹 확인

1
2
3
4
5
$ asmcmd lsdg
State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name
MOUNTED  EXTERN  N         512             512   4096  4194304     30720    25044                0           25044              0             N  DATA/
MOUNTED  NORMAL  N         512             512   4096  4194304     12288    11252             4096            3578              0             Y  OCRVOTE/
MOUNTED  EXTERN  N         512             512   4096  4194304     30720    30580                0           30580              0             N  RECO/

DATA diskgroup을 이용해 acfs 볼륨을 만들 예정임

 

 

1번 노드에서 ACFS 볼륨 생성
DATA 디스크 그룹에 acfs_my_vol 볼륨 생성(oracle 유저로 asmcmd 실행)

1
2
$ asmcmd
ASMCMD> volcreate -G DATA -s 1G acfs_my_vol

 

 

생성된 볼륨 정보 확인(grid 유저 또는 .oraenv 변경 후 확인)

1
2
3
4
5
6
7
8
9
10
11
12
$ . oraenv
ORACLE_SID = [ORADB1] ? +ASM1
ORACLE_HOME = [/home/oracle] ? /app/grid/product/19c
$ sqlplus / as sysasm
SQL> 
set lines 200 pages 1000
col volume_device for a40
select volume_name, volume_device from v$asm_volume;
 
VOLUME_NAME                    VOLUME_DEVICE
------------------------------ ----------------------------------------
ACFS_MY_VOL                    /dev/asm/acfs_my_vol-499

 

 

asmcmd의 volinfo 명령으로 확인(grid 유저 또는 .oraenv 변경 후 확인)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ . oraenv
ORACLE_SID = [ORADB1] ? +ASM1
ORACLE_HOME = [/home/oracle] ? /app/grid/product/19c
The Oracle base remains unchanged with value /app/oracle
 
$ asmcmd
ASMCMD> volinfo -G DATA acfs_my_vol
Diskgroup Name: DATA
 
         Volume Name: ACFS_MY_VOL
         Volume Device: /dev/asm/acfs_my_vol-499
         State: ENABLED
         Size (MB): 1024
         Resize Unit (MB): 64
         Redundancy: UNPROT
         Stripe Columns: 8
         Stripe Width (K): 1024
         Usage:
         Mountpath:

 

 

/dev/asm 경로에서 acfs 디스크 확인

1
2
$ ls -rlt /dev/asm/acfs_my_vol-499
brwxrwx--- 1 root dba 250, 255489 Jun  6 07:56 /dev/asm/acfs_my_vol-499

잘 보임

해당 볼륨 디바이스를 acfs로 포맷

1
2
3
4
5
6
$ mkfs -t acfs /dev/asm/acfs_my_vol-499
mkfs.acfs: version                   = 19.0.0.0.0
mkfs.acfs: on-disk version           = 46.0
mkfs.acfs: volume                    = /dev/asm/acfs_my_vol-499
mkfs.acfs: volume size               = 1073741824  (   1.00 GB )
mkfs.acfs: Format complete.

포맷됨, 참고로 일반 디스크 포맷과는 다르게 acfs여서 oracle(grid) 유저에서 수행해도 포맷이 잘 수행됨

 

 

OS에서 마운트 포인트 디렉토리 생성

1
# mkdir -p /acfs

 

 

srvctl 명령으로 파일시스템을 등록(root 유저로 한쪽 노드에서만 수행)

1
2
3
# srvctl add filesystem -volume acfs_my_vol -diskgroup DATA \
  -path /acfs -fstype acfs -mountowner oracle \
  -mountgroup dba -mountperm 755

옵션 설명 :
-volume acfs_my_vol : acfs로 사용할 볼륨 이름을 지정
-diskgroup DATA : 해당 볼륨이 생성되어 있는 ASM 디스크 그룹 이름을 지정
-path /acfs : OS에서 이 파일 시스템을 마운트할 경로를 지정
-fstype acfs : 파일 시스템의 타입을 지정
-mountowner oracle : 파일 시스템이 마운트될 때 해당 마운트 포인트의 소유자(owner)를 oracle 유저로 설정
-mountgroup dba : 파일 시스템 마운트 포인트의 소유 그룹을 dba 그룹으로 설정
-mountperm 755 : 마운트 포인트의 디렉터리 권한을 755(rwxr-xr-x)로 지정
참고로 volume 옵션 대신 device 옵션도 사용 가능함(예시 : -device /dev/asm/acfs_my_vol-499)

 

 

crstl 명령으로 리소스 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.ACFS_MY_VOL.advm  <<-- !!
               ONLINE  ONLINE       oel19db1                 STABLE  <<-- !!
               ONLINE  ONLINE       oel19db2                 STABLE  <<-- !!
...
ora.data.acfs_my_vol.acfs  <<-- !!
               OFFLINE OFFLINE      oel19db1                 STABLE  <<-- !!
               OFFLINE OFFLINE      oel19db2                 STABLE  <<-- !!
..

ora.DATA.ACFS_MY_VOL.advm 리소스만 ONLINE 상태이고 ora.DATA.acfs_my_vol.acfs 리소스는 아직 OFFLINE 상태임

 

 

파일시스템 시작

1
2
3
4
5
6
7
8
9
10
11
12
# srvctl start filesystem -volume acfs_my_vol -diskgroup data
# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  4.0M     0  4.0M   0% /dev
tmpfs                      10G  1.6G  8.5G  16% /dev/shm
tmpfs                     2.0G   13M  2.0G   1% /run
/dev/mapper/ol-root        92G   63G   30G  69% /
/dev/sda1                 448M  405M   44M  91% /boot
tmpfs                     995M   52K  995M   1% /run/user/42
tmpfs                     995M   36K  995M   1% /run/user/0
tmpfs                     995M   36K  995M   1% /run/user/54321
/dev/asm/acfs_my_vol-499  1.0G  551M  474M  54% /acfs  <<-- !!

/acfs 파일시스템이 등록됨

 

 

crstl 명령으로 리소스 재확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# crsctl stat res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.ACFS_MY_VOL.advm
               ONLINE  ONLINE       oel19db1                 STABLE
               ONLINE  ONLINE       oel19db2                 STABLE
...
ora.data.acfs_my_vol.acfs  <<-- !!
               ONLINE  ONLINE       oel19db1                 mounted on /acfs,STA  <<--!!
                                                             BLE
               ONLINE  ONLINE       oel19db2                 mounted on /acfs,STA  <<--!!
                                                             BLE

ora.DATA.acfs_my_vol.acfs 리소스도 ONLINE로 변경되고 /acfs에 mounted 되었다고 나옴

 

 

config 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# srvctl config filesystem -volume acfs_my_vol -diskgroup DATA
Volume device: /dev/asm/acfs_my_vol-499
Diskgroup name: data
Volume name: acfs_my_vol
Canonical volume device: /dev/asm/acfs_my_vol-499
Accelerator volume devices:
Mountpoint path: /acfs
Mount point owner: oracle
Mount point group: dba
Mount permissions: owner:oracle:rwx,pgrp:dba:r-x,other::r-x
Mount users:
Type: ACFS
Mount options:
Description:
ACFS file system is enabled
ACFS file system is individually enabled on nodes:
ACFS file system is individually disabled on nodes:

잘 등록됨

 

 

폴더 권한 확인

1
2
# ls -ld /acfs/
drwxr-xr-x 4 oracle dba 32768 Jun  6 08:12 /acfs/

정상적으로 oracle에 dba로 설정됨

 

 

샘플 파일 생성

1
2
3
4
# cd acfsmyvol
# echo "TESTFILE" > acfstest.txt
# cat acfstest.txt
TESTFILE

파일도 잘 생성됨

 

 

2번 노드에서도 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
# df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  4.0M     0  4.0M   0% /dev
tmpfs                      10G  1.6G  8.5G  16% /dev/shm
tmpfs                     2.0G   13M  2.0G   1% /run
/dev/mapper/ol-root        92G   57G   35G  63% /
/dev/sda1                 448M  405M   44M  91% /boot
tmpfs                     995M   52K  995M   1% /run/user/42
tmpfs                     995M   36K  995M   1% /run/user/0
tmpfs                     995M   36K  995M   1% /run/user/54321
/dev/asm/acfs_my_vol-499  1.0G  615M  410M  61% /acfs
# cat /acfs/acfstest.txt
TESTFILE

파일시스템과 그 안의 파일이 잘보임

 

 

참고1. 디스크 마운트 포인트 이름 변경
참고 : 오라클 19c ACFS 경로 변경 테스트 ( https://positivemh.tistory.com/1389 )

 

 

참고2. oracle 유저로 volinfo 수행시 State가 Remote로 표시되고 sh 명령으로 $ORACLE_HOME에서 crsctl 명령도 찾을수 없다는 메세지까지 나옴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ASMCMD> volinfo -G DATA acfs_my_vol
sh: line 1: /app/oracle/product/19c/bin/crsctl: No such file or directory  <<-- !!
Diskgroup Name: DATA
 
         Volume Name: ACFS_MY_VOL
         Volume Device: /dev/asm/acfs_my_vol-499
         State: REMOTE  <<-- !!
         Size (MB): 1024
         Resize Unit (MB): 64
         Redundancy: UNPROT
         Stripe Columns: 8
         Stripe Width (K): 1024
         Usage:
         Mountpath:

 

 

참고3. root 유저로 volcreate 수행시 아래 에러 발생함

1
2
3
ASMCMD> volcreate -G DATA -s 1G acfs_my_vol
ORA-15032: not all alterations performed
ORA-15477: cannot communicate with the volume driver (DBD ERROR: OCIStmtExecute)

 

 

참고4. 볼륨 이름에 하이픈(-) 포함시 아래 에러 발생함

1
2
3
ASMCMD> volcreate -G DATA -s 1G acfs-my-vol
ORA-15032: not all alterations performed
ORA-15458: invalid character in volume name (DBD ERROR: OCIStmtExecute)

 

 

결론 : 

asm 환경에서는 디스크그룹의 여유공간만 있다면 acfs 공유파일시스템을 간편하게 생성할 수 있음

ogg 등 동기화 제품을 사용할때 trail 파일을 저장할 공유 파일시스템이 필요한 경우 acfs를 사용하면 편리함

 

 

참조 : 

https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/oracle-acfs-and-oracle-advm-support-on-linux.html