Exadata Cloud Service : ASM Cluster File System (ACFS)設定してみてみた

Oracle ASM Cluster File System（ACFS）は、POSIX、X/OPEN、およびWindowsに準拠した業界標準のクラスタ・ファイル・システムで複数のノードからアクセスできる共有ファイルシステムで、expdp/impdp,バッチやデータ・ロード用途のファイル配置場所として使用します
ACFSの管理コマンドとしてacfsutilがあり、ファイルシステムを動的拡張することができ、18c以降ではファイル・システムのサイズを動的縮小することもできます。

Exadata Cloud Servie (ExaCS) 、Database Cloud Service (DBCS)では ASM が使用されており、デフォルトで ACFS 領域がありますがパッチ自動配置などシステムで使用される必要領域です。ということで、ユーザー用途で個別に ACFS 領域を作成してデータ移行用途でデータ・ポンプの dump ファイルを配置できるようにしてみてみます。




# ■ ACFS ボリューム作成
DUMPSTORE という名前で ACFS ボリューム作成してみてみます

### 1) Gridユーザー スイッチ

```shell
[opc@exacs-tokyo ~]$ sudo su - grid
	Last login: Tue Sep  7 11:25:04 UTC 2021
[grid@exacs-tokyo ~]$ id
	uid=1000(grid) gid=1001(oinstall) groups=1001(oinstall),1004(asmdba),1005(asmoper),1006(asmadmin)
```


### 2) ASM Disk Group確認

```shell
[grid@exacs-tokyo1 ~]$ 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  HIGH  N         512             512   4096  4194304  188301312  175272036         10461184        54936950              0             Y  DATAC1/
	MOUNTED  HIGH  N         512             512   4096  4194304  282488832  282433800         15693824        88913325              0             N  RECOC1/

```

### 3)  ADVMボリュームに関する情報表示

```shell
[grid@exacs-tokyo1 ~]$ asmcmd
ASMCMD> volinfo --all
	Diskgroup Name: DATAC1

		Volume Name: ACFSVOL01
		Volume Device: /dev/asm/acfsvol01-75
		State: ENABLED
		Size (MB): 1146880
		Resize Unit (MB): 64
		Redundancy: HIGH
		Stripe Columns: 8
		Stripe Width (K): 1024
		Usage: ACFS
		Mountpath: /acfs01
```

### 4) ADVMボリュームDUMPSTORE作成
ここでは、既存のASMボリュームDATAC1上に ACFS領域のボリューム名を DUMPSTORE,サイズを3TBとして作成

```shell
ASMCMD> volcreate -G DATAC1 -s 3T DUMPSTORE
```

## ● ACFSボリューム確認
作成したDUMPSTOREボリューム情報確認

### 1) ASCMDコマンド確認

```shell
ASMCMD> volinfo -G DATAC1 DUMPSTORE
	Diskgroup Name: DATAC1

		Volume Name: DUMPSTORE
		Volume Device: /dev/asm/dumpstore-75
		State: ENABLED
		Size (MB): 3145728
		Resize Unit (MB): 64
		Redundancy: HIGH
		Stripe Columns: 8
		Stripe Width (K): 1024
		Usage:
		Mountpath:

ASMCMD> volinfo --all
	Diskgroup Name: DATAC1

		Volume Name: ACFSVOL01
		Volume Device: /dev/asm/acfsvol01-75
		State: ENABLED
		Size (MB): 1146880
		Resize Unit (MB): 64
		Redundancy: HIGH
		Stripe Columns: 8
		Stripe Width (K): 1024
		Usage: ACFS
		Mountpath: /acfs01

		Volume Name: DUMPSTORE
		Volume Device: /dev/asm/dumpstore-75
		State: ENABLED
		Size (MB): 3145728
		Resize Unit (MB): 64
		Redundancy: HIGH
		Stripe Columns: 8
		Stripe Width (K): 1024
		Usage:
		Mountpath:
```


### 2) OSコマンド確認
作成された OSデバイスファイルを確認
ここでは、/dev/asm/dumpstore-75 になります。ここにACFSファイルシステムを作成します。
```shell
[grid@exacs-tokyo1 ~]$ ls -l /dev/asm/*
	brwxrwx--- 1 root asmadmin 251, 38401 Jan 26 02:05 /dev/asm/acfsvol01-75
	brwxrwx--- 1 root asmadmin 251, 38402 Jan 26 11:51 /dev/asm/dumpstore-75
```


# ■ ACFS ファイル・システムの作成
作成された DUMPSTORE Volume の Volume Device へ ACFS ファイル・システムの作成

## ● ACFS ファイル・システム作成
### 1) ACFS ファイル・システム作成
上記確認したOSデバイスファイル名 /dev/asm/dumpstore-75 へACFSファイル・システムを作成

```shell
[root@exacs-tokyo1 ~]# mkfs -t acfs /dev/asm/dumpstore-75
	mkfs.acfs: version                   = 19.0.0.0.0
	mkfs.acfs: on-disk version           = 46.0
	mkfs.acfs: volume                    = /dev/asm/dumpstore-75
	mkfs.acfs: volume size               = 3298534883328  (   3.00 TB )
	mkfs.acfs: Format complete.
```

## ●  ACFS ファイル・システム Mount
### 1) rootユーザー へ切替

```shell
[grid@exacs-tokyo1 ~]$ exit
[root@exacs-tokyo1 ~]# id -a
	uid=0(root) gid=0(root) groups=0(root)
```


### 2) マウント・ポイント /acfs02 作成 (全Nodeで実施)
**・Node1**
```shell
[root@exacs-tokyo1 ~]# mkdir -p /acfs02
[root@exacs-tokyo1 ~]# ls -ld /acfs02/
    drwxr-xr-x 2 grid oinstall 4096 Jun  4 11:11 /acfs02/
```

**・Node２**
```shell
[root@exacs-tokyo2 ~]# mkdir -p /acfs02
[root@exacs-tokyo2 ~]# ls -ld /acfs02/
    drwxr-xr-x 2 grid oinstall 4096 Jun  26 11:15 /acfs02/
```

### 3) /acfs02 自動マウント設定 (1 nodeのみで実施)
切り出したボリュームを、/acfs02 に grid ユーザとしてマウントするように srvctlコマンドで設定
＊srvctlコマンドは、gridユーザーの $ORACLE_HOME/bin/srvctl にあります。
```shell
[root@exacs-tokyo1 ~]# /u01/app/19.0.0.0/grid/bin/srvctl add filesystem -d /dev/asm/dumpstore-75 -g DATAC1 -v DUMPSTORE -m /acfs02 -u grid

```


### 4) /acfs02 マウント実施 (1 nodeのみで実施)
＊srvctlコマンドは、gridユーザーの $ORACLE_HOME/bin/srvctl にあります。
```shell
[root@exacs-tokyo1 ~]# /u01/app/19.0.0.0/grid/bin/srvctl start filesystem -d /dev/asm/dumpstore-75
```

### 5) srvctl status is mounted確認 (全Nodeで実施)

```shell
[root@exacs-tokyo1 ~]# /u01/app/19.0.0.0/grid/bin/srvctl status filesystem
	ACFS file system /acfs01 is mounted on nodes exacs-tokyo-b7yzk1,exacs-tokyo-b7yzk2
	ACFS file system /acfs02 is mounted on nodes exacs-tokyo-b7yzk1,exacs-tokyo-b7yzk2
```


### 6) crsctl stat ONLINE確認 (1Nodeで実施)
```
[grid@exacs-tokyo2 ~]$ crsctl stat res ora.data.dumpstore.acfs
    NAME=ora.data.dumpstore.acfs
    TYPE=ora.acfs.type
    TARGET=ONLINE               , ONLINE
    STATE=ONLINE on exacs-tokyo1, ONLINE on exacs-tokyo2

[grid@exacs-tokyo2 ~]$ crsctl stat res ora.data.dumpstore.acfs -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.data.dumpstore.acfs
                ONLINE  ONLINE       exacs-tokyo1              mounted on /acfs02,S
                                                                                    TABLE
                ONLINE  ONLINE       exacs-tokyo2              mounted on /acfs02,S
                                                                                    TABLE
    --------------------------------------------------------------------------------
```

### 7) /acfs02 マウント確認  (全Nodeで実施)

```shell
[root@exacs-tokyo1 ~]# ls -l / | grep acfs
	drwxr-xr-x    7 root   root     32768  Jun 25 13:09 acfs01
	drwxr-xr-x    2 grid   oinstall 32768  Jun 26 11:59 acfs02

[root@exacs-tokyo1 ~]# ls -ld /acfs02
	drwxr-xr-x 4 grid oinstall 32768 Jun 26 11:59 /acfs02
 
[root@exacs-tokyo1 ~]# df -hT | grep acfs
	/dev/asm/acfsvol01-75                                    acfs       1.1T   35G  1.1T    4% /acfs01
	/dev/asm/dumpstore-75                                    acfs       3.0T  6.7G  3.0T    1% /acfs02
```


### 8) 書き込みテスト
gridユーザーでファイル作成/削除できることを確認
複数Node構成のRACの場合、全ノードでファイルアクセスできることを確認

**・Node1 でファイル作成**
```
[root@exacs-tokyo1 ~]# su - grid
[grid@exacs-tokyo1 ~]$ touch /acfs02/test.txt
[grid@exacs-tokyo1 ~]$ ls -l /acfs02/test.txt
    -rw-r--r-- 1 grid oinstall 0 Jun  26 14:43 /acfs02/test.txt
```

**・Node２ でファイルが作成されていることを確認し削除**
```
[root@exacs-tokyo2 ~]# su - grid
[grid@exacs-tokyo1 ~]$ ls -l /acfs02/test.txt
    -rw-r--r-- 1 grid oinstall 0 Jun  26 14:43 /acfs02/test.txt
[grid@exacs-tokyo1 ~]$ rm /acfs02/test.txt
```

**・Node1 でファイル削除されていることを確認**
```
[grid@basedb23ai2 ~]$ ls -l /acfs02/
    total 64
    drwx------ 2 root root 65536 Jun  26 14:28 lost+found
```

# ■ ACFS 動的拡張/縮小

## ● ACFS領域確認
### 1) grid ユーザーログイン

```shell
[grid@exacs-tokyo1 ~]$ su - grid
```

### 2) ASM Disk確認

```shell
[grid@exacs-tokyo1 ~]$ 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  HIGH  N         512             512   4096  4194304  282488832  278894784         15693824        87733653              0             Y  DATAC1/
	MOUNTED  HIGH  N         512             512   4096  4194304   94150656   94094916          5230592        29621441              0             N  RECOC1/
	MOUNTED  HIGH  N         512             512   4096  4194304  941506560  941495208         52305920       296396429              0             N  SPRC1/
```


### 3) acfsマウントポイントとサイズ確認

```shell
[grid@exacs-tokyo1 ~]$ df -hT | grep acfs
	/dev/asm/acfsvol01-472       acfs      1.1T   61G  1.1T   6% /acfs01
```


### 4) ASMディスク・グループ確認

```shell
[grid@exacs-tokyo1 ~]$ acfsutil info storage
	Diskgroup      Consumer      Space     Size With Mirroring  Usable Free  %Free   Path
	DATAC1                      269.40              89.80          83.67       93%
				ACFSVOL01       3.28               1.09           1.03       94%   /acfs01
	RECOC1                       89.79              29.93          28.25       94%
	SPRC1                       897.89             299.30         282.67       94%
	----
	unit of measurement: TB
```

## ● ACFS サイズ拡張
1TB から 5TB へ拡張してみてみます

### 1) ACFS サイズ拡張

```shell
[grid@exacs-tokyo1 ~]$ acfsutil size 5T /acfs01
	acfsutil size: Resizing file system in steps
	acfsutil size: Resizing file system to 1.1094 TB
	acfsutil size: Resizing file system to 1.1250 TB
	・・・
	acfsutil size: Resizing file system to 4.9688 TB
	acfsutil size: Resizing file system to 4.9844 TB
	acfsutil size: Resizing file system to 5.0000 TB
	acfsutil size: new file system size: 5497558138880 (5242880MB)
```



### 2) ASMディスク・グループ確認
ファイルシステムが拡張されたため、Usable Freeが拡張されていることが確認できます

```shell
[grid@exacs-tokyo1 ~]$ acfsutil info storage
	Diskgroup      Consumer      Space     Size With Mirroring  Usable Free  %Free   Path
	DATAC1                      269.40              89.80          79.76       88%
				ACFSVOL01      15.00               5.00           4.93       98%   /acfs01
	RECOC1                       89.79              29.93          28.25       94%
	SPRC1                       897.89             299.30         282.67       94%
	----
	unit of measurement: TB
```

### 3) acfsファイルシステム拡張確認
acfsファイルシステムのサイズが拡張されていることを確認

```shell
[grid@exacs-tokyo ~]$ df -hT | grep acfs
	/dev/asm/acfsvol01-472       acfs      5.0T   69G  5.0T   2% /acfs01
```


## ● ACFS領域縮小
5TB から 8GBへ縮小してみてみます

### 1) acfsサイズ縮小

```shell
[grid@exacs-tokyo1 ~]$ acfsutil size 800G /acfs01
	acfsutil size: Resizing file system in steps
	acfsutil size: Resizing file system to 4.9844 TB
	acfsutil size: Resizing file system to 4.9688 TB
	・・・
	acfsutil size: Resizing file system to 0.7969 TB
	acfsutil size: Resizing file system to 0.7813 TB
	acfsutil size: new file system size: 858993459200 (819200MB)
```

### 2) acfsのサイズが縮小されていることを確認

```shell
[grid@exacs-tokyo1 ~]$ df -hT | grep acfs
	/dev/asm/acfsvol01-472       acfs      800G   68G  733G   9% /acfs01
```


# ■ 参考
### ・マニュアル
　- [Oracle Automatic Storage Management Cluster File System](https://docs.oracle.com/cd/F32587_01/acfsg/part-acfs-advm.html#GUID-864C6B7E-CB6E-4E82-90CD-6CDD37D0426E)
　- [管理者ガイド: ASMCMDによるOracle ADVMの管理](https://docs.oracle.com/cd/F32587_01/acfsg/manage-advm-asmcmd.html#GUID-07E90E70-406A-4273-B27F-9F2ED7C1C4BF)
　- [ACFSファイルシステムのサイズ変更: acfsutil size](https://docs.oracle.com/cd/E82638_01/ostmg/acfs-commands-utilities.html#GUID-79A8333D-4E1C-4788-944D-EC86E4278C00)
### ・Oracle ホワイト・ペーパー 
　- [Oracle ACFSとその使用方法について](https://www.oracle.com/technetwork/database/database-technologies/cloud-storage/benefits-of-oracle-acfs-2379064.pdf?ssSourceSiteId=opn)