ACFS(ASM Cluster Filesystem) は Oracle ASM をファイルシステムとして使用可能にする仕組みです。
Oracle ACFSについて
https://docs.oracle.com/cd/F19136_01/ostmg/understand-acfs-concepts.html#GUID-579FDDA5-7D18-4A01-B3D6-906B6DB93851
:
Oracle ACFSは、すべてのカスタマ・ファイルをサポートする、スタンドアロン・サーバーおよびクラスタ全体の汎用ファイル・システムとして設計されています。
:
今回の記事では OCI BaseDB の EE-EP(Enterprise Edition - Extreme Performance) RAC に ACFS をマウントしてみますやで。
彡(^)(^)
1. 参考ドキュメント
以下のマニュアルを参照しています。ACFS のマウントには幾つかの方法がありますが acfsutilコマンド によるマウントを行います。
Oracle ACFSの管理の理解
https://docs.oracle.com/cd/F19136_01/ostmg/understand-acfs-admin.html#GUID-EC577A31-256E-4FD2-9E9F-749D78B378D0
・acfsutilコマンドで作成され、ノード・リストを指定するOracle ACFSリソースは、そのリストのノードすべてにマウントされます。
Oracle ACFSファイル・システムの作成
https://docs.oracle.com/cd/F19136_01/ostmg/steps-manage-acfs.html#GUID-FA9F9335-ADA4-48D1-B060-6F096E3BAE6C
2. Oracle ADVMボリュームの作成
BaseDB に opcユーザーでログインして、gridユーザーにスイッチします。asmcmdコマンドを起動します。
su - grid
asmcmd
lsdg
#結果
$ su - grid
$ asmcmd
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 262144 250256 0 250256 0 Y DATA/
MOUNTED EXTERN N 512 512 4096 4194304 262144 245052 0 245052 0 N RECO/
volcreateコマンドでOracle ADVMボリュームを作成します。+DATAディスクグループに 50GB ほど確保します。
volcreate -G data -s 50G volume1
volinfo -G data volume1
-- 結果
ASMCMD> volcreate -G data -s 50G volume1
ASMCMD> volinfo -G data volume1
Diskgroup Name: DATA
Volume Name: VOLUME1
Volume Device: /dev/asm/volume1-274
State: ENABLED
Size (MB): 51200
Resize Unit (MB): 64
Redundancy: UNPROT
Stripe Columns: 8
Stripe Width (K): 1024
Usage:
Mountpath:
asmcmd を抜けて作成されたボリュームをlsコマンドで確認してみます。
$ ls -la /dev/asm/volume1-274
brwxrwx--- 1 root asmadmin 251, 140290 Apr 30 11:04 /dev/asm/volume1-274
/dev配下のデバイスとして参照できます。
3. mkfs によるフォーマットと acfsutil によるマウント
mkfsユーティリティでデバイスをフォーマットします。
/sbin/mkfs -t acfs /dev/asm/volume1-274
#結果
$ /sbin/mkfs -t acfs /dev/asm/volume1-274
mkfs.acfs: version = 19.0.0.0.0
mkfs.acfs: on-disk version = 46.0
mkfs.acfs: volume = /dev/asm/volume1-274
mkfs.acfs: volume size = 53687091200 ( 50.00 GB )
mkfs.acfs: Format complete.
$
gridユーザーを抜けてrootユーザーにスイッチします。acfsutil でフォーマットしたデバイスをマウントします。
sudo su -
/sbin/acfsutil registry -a /dev/asm/volume1-274 /acfs1
#結果
# /sbin/acfsutil registry -a /dev/asm/volume1-274 /acfs1
acfsutil registry: mount point /acfs1 successfully added to Oracle Registry
#
dfコマンドでマウントされているか確認します。
# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 16239508 0 16239508 0% /dev
tmpfs 16284060 1623140 14660920 10% /dev/shm
tmpfs 16284060 952 16283108 1% /run
tmpfs 16284060 0 16284060 0% /sys/fs/cgroup
/dev/mapper/vg00-root 10054932 3964256 5550004 42% /
tmpfs 16284060 224 16283836 1% /tmp
/dev/mapper/vg00-opt 34438992 13798900 19134760 42% /opt
/dev/mapper/vg00-home 980396 180 911404 1% /home
/dev/sda2 996780 97020 830948 11% /boot
/dev/mapper/vg00-var 10064220 927952 8637544 10% /var
/dev/sda1 130798 5138 125660 4% /boot/efi
/dev/mapper/vg00-var_log 3981024 78504 3676424 3% /var/log
/dev/mapper/vg00-var_log_audit 1959784 21028 1817516 2% /var/log/audit
/dev/mapper/vg00-var_tmp 980396 68 911516 1% /var/tmp
/dev/sde 205314024 26282420 168529460 14% /u01
tmpfs 3256812 0 3256812 0% /run/user/102
/dev/asm/commonstore-274 5242880 834280 4408600 16% /opt/oracle/dcs/commonstore
tmpfs 3256812 0 3256812 0% /run/user/101
tmpfs 3256812 0 3256812 0% /run/user/1000
/dev/asm/volume1-274 52428800 666000 51762800 2% /acfs1 ★★★
4. ファイル書き込みと異なるノードからの確認
今回は RAC なので複数ノードで ACFS がマウントされています。
# 1号機の df の結果
[opc@aysoskbasedb19c1 ~]$ uname -a
Linux aysoskbasedb19c1 5.4.17-2136.326.6.el8uek.x86_64 #2 SMP Thu Nov 30 22:30:37 PST 2023 x86_64 x86_64 x86_64 GNU/Linux
[opc@aysoskbasedb19c1 ~]$ df -k /acfs1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/asm/volume1-274 52428800 666000 51762800 2% /acfs1
[opc@aysoskbasedb19c1 ~]$
# 2号機の df の結果
[opc@aysoskbasedb19c2 ~]$ uname -a
Linux aysoskbasedb19c2 5.4.17-2136.326.6.el8uek.x86_64 #2 SMP Thu Nov 30 22:30:37 PST 2023 x86_64 x86_64 x86_64 GNU/Linux
[opc@aysoskbasedb19c2 ~]$ df -k /acfs1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/asm/volume1-274 52428800 666000 51762800 2% /acfs1
[opc@aysoskbasedb19c2 ~]$
# crsctl のリソース稼働状況
[opc@aysoskbasedb19c2 ~]$ /u01/app/19.0.0.0/grid/bin/crsctl stat res ora.data.volume1.acfs -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.data.volume1.acfs
ONLINE ONLINE aysoskbasedb19c1 mounted on /acfs1,ST
ABLE
ONLINE ONLINE aysoskbasedb19c2 mounted on /acfs1,ST
ABLE
--------------------------------------------------------------------------------
[opc@aysoskbasedb19c2 ~]$
1号機でファイルを書いてみます。
[oracle@aysoskbasedb19c1 dump]$ pwd
/acfs1/dump
[oracle@aysoskbasedb19c1 dump]$ echo "Hello, ACFS!" > Hello.txt
[oracle@aysoskbasedb19c1 dump]$ ls -la
total 88
drwxr-xr-x 2 oracle oinstall 20480 Apr 30 11:55 .
drwxr-xr-x 5 root root 32768 Apr 30 11:08 ..
-rw-r--r-- 1 oracle oinstall 13 Apr 30 11:55 Hello.txt
[oracle@aysoskbasedb19c1 dump]$ cat Hello.txt
Hello, ACFS!
[oracle@aysoskbasedb19c1 dump]$
書いたファイルを2号機で読んでみます。
[oracle@aysoskbasedb19c2 dump]$ pwd
/acfs1/dump
[oracle@aysoskbasedb19c2 dump]$ ls -la
total 88
drwxr-xr-x 2 oracle oinstall 20480 Apr 30 11:55 .
drwxr-xr-x 5 root root 32768 Apr 30 11:08 ..
-rw-r--r-- 1 oracle oinstall 13 Apr 30 11:55 Hello.txt
[oracle@aysoskbasedb19c2 dump]$ cat Hello.txt
Hello, ACFS!
[oracle@aysoskbasedb19c2 dump]$
1号機で書かれたファイルを2号機で読み込めました彡(^)(^)
5. ACFS のクラスタ・リソースとしての定義確認
acfsutil で登録した ACFS は Oracle Clusterware のクラスタ・リソースとして登録されています。
# crsctl のリソース稼働状況
[opc@aysoskbasedb19c2 ~]$ /u01/app/19.0.0.0/grid/bin/crsctl stat res ora.data.volume1.acfs -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.data.volume1.acfs
ONLINE ONLINE aysoskbasedb19c1 mounted on /acfs1,ST
ABLE
ONLINE ONLINE aysoskbasedb19c2 mounted on /acfs1,ST
ABLE
--------------------------------------------------------------------------------
[opc@aysoskbasedb19c2 ~]$
-pオプション付きの crsctlコマンドでクラスタ・リソースの定義を確認してみます。
[grid@aysoskbasedb19c1 ~]$ crsctl stat res ora.data.volume1.acfs -p
NAME=ora.data.volume1.acfs
TYPE=ora.acfs.type
ACFS_INTERNAL_USE=1186418149
ACL=owner:root:rwx,pgrp:root:r-x,other::r--,user:grid:r-x
ACTIONS=
ACTION_SCRIPT=
ACTION_TIMEOUT=60
AGENT_FILENAME=%CRS_HOME%/bin/orarootagent%CRS_EXE_SUFFIX%
AUTO_START=always
AUX_VOLUMES=
CANONICAL_VOLUME_DEVICE=/dev/asm/volume1-274
CHECK_INTERVAL=15
CHECK_TIMEOUT=120
CLEAN_TIMEOUT=60
CSS_CRITICAL=no
DELETE_TIMEOUT=60
DESCRIPTION=CRS resource type for ASM Cluster File Systems
ENABLED=1
FS_DESCRIPTION=
FS_OPTIONS=
FS_TYPE=ACFS
GH_CREATED=0
IGNORE_TARGET_ON_FAILURE=yes
INSTANCE_FAILOVER=1
INTERMEDIATE_TIMEOUT=0
INTERNAL_MOUNTPOINT_PATH=/acfs1
LOAD=1
LOGGING_LEVEL=1
MODIFY_TIMEOUT=60
MOUNTPOINT_PATH=/acfs1
MOUNT_ACL=owner:root:rwx,pgrp:root:r-x,other::r-x
NLS_LANG=
OFFLINE_CHECK_INTERVAL=30
RESOURCE_GROUP=
RESTART_ATTEMPTS=5
RESTART_DELAY=0
SCRIPT_TIMEOUT=60
SERVER_CATEGORY=ora.hub.category
START_CONCURRENCY=0
START_DEPENDENCIES=hard(ora.DATA.VOLUME1.advm) pullup(ora.DATA.VOLUME1.advm,ora.asm)
START_TIMEOUT=500
STOP_CONCURRENCY=0
STOP_DEPENDENCIES=hard(intermediate:ora.DATA.VOLUME1.advm)
STOP_TIMEOUT=120
TARGET_DEFAULT=atleastone
TYPE_VERSION=3.3
UPTIME_THRESHOLD=1d
USER_WORKLOAD=no
USR_ORA_ENV=
VOLUME_DEVICE=/dev/asm/volume1-274
WORKLOAD_CPU=0
WORKLOAD_CPU_CAP=0
WORKLOAD_MEMORY_MAX=0
WORKLOAD_MEMORY_TARGET=0
[grid@aysoskbasedb19c1 ~]$
TYPE=ora.acfs.type のリソースとして登録されています。ADVMボリュームとの依存性が定義されています。
6. まとめ
OCI BaseDB に ACFS をマウントできました。OSファイル置き場として利用可能なので、皆さん活用して下さいね。
彡(^)(^)