OCI Databaseがファイルシステム構成に対応した話


# ファイルシステム構成がサポートされた

2019年10月のアップデートで、Oracle Cloud Infrastructure Databaseでもファイルシステム構成を選択できるようになった。

いままでOracle Cloud Infrastructure Databaseのストレージは、シングルインスタンスでもOracle Grid Infrastructureを利用したASM構成だった。そのためASMを利用したことがないエンジニアだと、

**<font color="blue">データファイルはどこ？</font>**
**<font color="blue">gridユーザーって何だ？</font>**
**<font color="blue">srvctlやasmcmdの使い方がわからない！</font>**

などの問題が発生した。

今回のアップデートによって、Oracle Grid InfrastructureやASMの経験が無いユーザーでも、既存の知識でOracleデータベースを管理できるようになった。

Release Noteは以下のとおり。

* [Fast provisioning option for bare metal and VM DB systems](https://docs.cloud.oracle.com/iaas/releasenotes/changes/6c0de351-20b5-4f90-b8f1-0127bbb15ca1/)

Fastが強調されている理由は、インスタンスの作成時間が圧倒的に短くなったから。いままでのASM構成では60分から120分くらいかかっていたが、ファイルシステム構成では20分くらいになった。

<font color="red">2019年10月時点でファイルシステム構成をサポートしているのは、18c以降のバージョンに限られる。</font>

# マニュアルを読んでみる

マニュアルの関連ページは、このあたり。

* [Fast Provisioning Option for 1-node Virtual Machine DB Systems](https://docs.cloud.oracle.com/iaas/Content/Database/Concepts/overview.htm#fastprovisioning)
* [Creating Bare Metal and Virtual Machine DB Systems](https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/creatingDBsystem.htm#)
* [Storage Scaling Considerations for Virtual Machine Databases Using Fast Provisioning](https://docs.cloud.oracle.com/iaas/Content/Database/References/fastprovisioningstorage.htm)

マニュアルに書かれているポイントをまとめると以下のとおり。

* Fast Provisioning Option = LVM構成（論理ボリュームマネージャ）
* より短い時間でインスタンスを作成
* シングルノードの仮想マシンのときだけ選択可能（RAC,ベアメタル不可）
* 初回作成時に指定したストレージサイズによって、スケールアップ可能な最大サイズが変わる。たとえば初回256GBのときは最大2560GBまで
* 本番システムでは従来のOracle Grid Infrastructure構成を推奨

# LVM構成で作成したDBシステムを調べる

ストレージの管理方法はインスタンス作成時に指定できる。管理コンソールの画面ショットはこちら。
![dbaas-filesystem.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/266049/11d7d885-f5c9-a9aa-b23d-4b50781eeb6d.png)
**<font color="blue">今回は約20分で作成できた。<font>**

### OSユーザーを確認する
作成したインスタンスの内部を見てみよう。opcユーザーとoracleユーザーだけ存在。gridユーザーは存在しない。

```shell-session
$ tail -n 5 /etc/passwd
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
named:x:25:25:Named:/var/named:/bin/false
dhcpd:x:177:177:DHCP server:/:/sbin/nologin
opc:x:54322:54323::/home/opc:/bin/bash
oracle:x:101:1001::/home/oracle:/bin/bash
```
環境変数はoracleユーザーに定義済み。

```shell-session
$ sudo su - oracle
$ env | grep ORA
ORACLE_UNQNAME=DB1003_phx28m
ORACLE_SID=DB1003
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
```

```shell-session:/home/oracle/.bashrc
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1; export ORACLE_HOME
PATH=$PATH:/u01/app/oracle/product/19.0.0/dbhome_1/bin; export PATH
LD_LIBRARY_PATH=/u01/app/oracle/product/19.0.0/dbhome_1/lib; export LD_LIBRARY_PATH
ORACLE_UNQNAME=DB1003_phx28m;export ORACLE_UNQNAME
ORACLE_SID=DB1003; export ORACLE_SID
```

### ディスクを確認する
ディスク構成を確認する。まずは`df`と`ls`から。

```shell-session
$ df -h
Filesystem                          Size  Used Avail Use% Mounted on
devtmpfs                            7.2G     0  7.2G   0% /dev
tmpfs                               7.3G     0  7.3G   0% /dev/shm
tmpfs                               7.3G  8.7M  7.3G   1% /run
tmpfs                               7.3G     0  7.3G   0% /sys/fs/cgroup
/dev/mapper/VolGroupSys-LogVolRoot   35G  4.8G   28G  15% /
/dev/sda2                           1.4G  102M  1.2G   8% /boot
/dev/sda1                           486M  9.8M  476M   3% /boot/efi
/dev/mapper/DATA_GRP-DATA           252G   16G  224G   7% /u02
/dev/mapper/RECO_GRP-RECO           252G  3.3G  236G   2% /u03
/dev/mapper/BITS_GRP-BITS           197G   12G  175G   7% /u01
tmpfs                               1.5G     0  1.5G   0% /run/user/101
tmpfs                               1.5G     0  1.5G   0% /run/user/54322
```

```shell-session
$ ls -F /u0*/app/oracle
/u01/app/oracle:
admin/  audit/  cfgtoollogs/  checkpoints/  diag/  product/

/u02/app/oracle:
oradata/

/u03/app/oracle:
fast_recovery_area/  redo/
```

ブロック・ボリュームはsdaからsdfの計6個（sdaはブート・ボリューム）で、すべてiSCSIでアタッチ。

```shell-session
$ lsblk
NAME                       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                          8:0    0   58G  0 disk
├─sda1                       8:1    0  486M  0 part /boot/efi
├─sda2                       8:2    0  1.4G  0 part /boot
└─sda3                       8:3    0 52.2G  0 part
  ├─VolGroupSys-LogVolRoot 249:0    0   35G  0 lvm  /
  └─VolGroupSys-LogVolSwap 249:1    0   16G  0 lvm  [SWAP]
sdb                          8:16   0  128G  0 disk
└─DATA_GRP-DATA            249:2    0  256G  0 lvm  /u02
sdc                          8:32   0  128G  0 disk
└─DATA_GRP-DATA            249:2    0  256G  0 lvm  /u02
sdd                          8:48   0  128G  0 disk
└─RECO_GRP-RECO            249:3    0  256G  0 lvm  /u03
sde                          8:64   0  128G  0 disk
└─RECO_GRP-RECO            249:3    0  256G  0 lvm  /u03
sdf                          8:80   0  200G  0 disk
└─BITS_GRP-BITS            249:4    0  200G  0 lvm  /u01

$ lsblk -S
NAME HCTL       TYPE VENDOR   MODEL             REV TRAN
sda  2:0:0:1    disk ORACLE   BlockVolume      1.0  iscsi
sdb  3:0:0:1    disk ORACLE   BlockVolume      1.0  iscsi
sdc  4:0:0:1    disk ORACLE   BlockVolume      1.0  iscsi
sdd  5:0:0:1    disk ORACLE   BlockVolume      1.0  iscsi
sde  6:0:0:1    disk ORACLE   BlockVolume      1.0  iscsi
sdf  7:0:0:1    disk ORACLE   BlockVolume      1.0  iscsi
```

LVM構成を確認する。

```shell-session
# pvs
  PV         VG          Fmt  Attr PSize    PFree
  /dev/sda3  VolGroupSys lvm2 a--    52.15g 1.15g
  /dev/sdd   RECO_GRP    lvm2 a--  <128.00g    0
  /dev/sde   RECO_GRP    lvm2 a--  <128.00g    0
  /dev/sdf   BITS_GRP    lvm2 a--  <200.00g    0

# vgs
  VG          #PV #LV #SN Attr   VSize    VFree
  BITS_GRP      1   1   0 wz--n- <200.00g    0
  DATA_GRP      2   1   0 wz--n-  255.99g    0
  RECO_GRP      2   1   0 wz--n-  255.99g    0
  VolGroupSys   1   2   0 wz--n-   52.15g 1.15g

# lvs
  LV         VG          Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  BITS       BITS_GRP    -wi-ao---- <200.00g
  DATA       DATA_GRP    -wi-ao----  255.99g
  RECO       RECO_GRP    -wi-ao----  255.99g
  LogVolRoot VolGroupSys -wi-ao----   35.00g
  LogVolSwap VolGroupSys -wi-ao----   16.00g
```

これらの結果をまとめると以下のとおり。

| Device | LV Name | Mount Point | Purpose |
|:--|:--|:--|:--|
| /dev/sda  |   | /boot, /, SWAP  | OS  |
| /dev/sdb, /dev/sdc  | DATA  | /u02  | データファイル |
| /dev/sdd, /dev/sde  | RECO  | /u03  | FRAとREDO  |
| /dev/sdf | BITS  | /u01  | Oracleバイナリ |


### ディスクサイズを拡張する

管理コンソールから「ストレージのスケール・アップ（Scale Storage Up）」を実行して、使用可能なストレージ・サイズを256GBから2048GBに拡張してみる。

lsblkで確認すると、sdgからsdvの計16個のブロック・ボリュームが追加されている。初回のディスクサイズによって最大サイズが変わるのは、同じサイズのボリュームを割り当てているためだろう。

またLVMで拡張しているので、DBもOSも停止することなくオンラインのまま実行できたた。

```shell-session
★追加分だけを表示
sdg                          8:96   0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdh                          8:112  0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdi                          8:128  0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdj                          8:144  0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdk                          8:160  0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdl                          8:176  0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdm                          8:192  0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdn                          8:208  0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdo                          8:224  0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdp                          8:240  0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdq                         65:0    0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdr                         65:16   0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sds                         65:32   0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdt                         65:48   0  128G  0 disk
└─DATA_GRP-DATA            249:4    0    2T  0 lvm  /u02
sdu                         65:64   0  128G  0 disk
└─RECO_GRP-RECO            249:2    0  512G  0 lvm  /u03
sdv                         65:80   0  128G  0 disk
└─RECO_GRP-RECO            249:2    0  512G  0 lvm  /u03
```


### プロセスを確認する
起動しているプロセスはOracleデータベース関連だけで、Grid Infrastructureのプロセスは無い。

```shell-session
# ps aux | grep ora_
root     10172  0.0  0.0   9100   824 pts/0    S+   04:37   0:00 grep --color=auto ora_
oracle   10700  0.0  0.5 8331840 76284 ?       Ss   03:10   0:02 ora_m001_DB1003
oracle   20652  0.0  0.4 8330804 73564 ?       Ss   03:45   0:01 ora_m000_DB1003
oracle   56725  0.0  0.3 8329748 58760 ?       Ss   02:54   0:00 ora_pmon_DB1003
oracle   56729  0.0  0.3 8329240 58772 ?       Ss   02:54   0:00 ora_clmn_DB1003
oracle   56733  0.0  0.4 8329756 61456 ?       Ss   02:54   0:00 ora_psp0_DB1003
oracle   57000  0.0  0.4 8344688 66036 ?       Ss   02:54   0:01 ora_vktm_DB1003
```

<details><summary>psの結果全部（クリックすると開く）</summary><div>

```shell-session
# ps aux | grep ora_
root     10172  0.0  0.0   9100   824 pts/0    S+   04:37   0:00 grep --color=auto ora_
oracle   10700  0.0  0.5 8331840 76284 ?       Ss   03:10   0:02 ora_m001_DB1003
oracle   20652  0.0  0.4 8330804 73564 ?       Ss   03:45   0:01 ora_m000_DB1003
oracle   56725  0.0  0.3 8329748 58760 ?       Ss   02:54   0:00 ora_pmon_DB1003
oracle   56729  0.0  0.3 8329240 58772 ?       Ss   02:54   0:00 ora_clmn_DB1003
oracle   56733  0.0  0.4 8329756 61456 ?       Ss   02:54   0:00 ora_psp0_DB1003
oracle   57000  0.0  0.4 8344688 66036 ?       Ss   02:54   0:01 ora_vktm_DB1003
oracle   57095  0.0  0.4 8344704 66516 ?       Ss   02:54   0:00 ora_gen0_DB1003
oracle   57117  0.0  0.4 8329748 61300 ?       Ss   02:54   0:00 ora_mman_DB1003
oracle   57156  0.0  0.4 8451624 64652 ?       Ssl  02:54   0:01 ora_gen1_DB1003
oracle   57177  0.0  0.4 8329860 62124 ?       Ss   02:54   0:00 ora_diag_DB1003
oracle   57190  0.0  0.5 8452660 80604 ?       Ssl  02:54   0:00 ora_ofsd_DB1003
oracle   57216  0.0  0.5 8347088 82676 ?       Ss   02:54   0:02 ora_dbrm_DB1003
oracle   57228  0.0  0.3 8329752 58824 ?       Ss   02:54   0:00 ora_vkrm_DB1003
oracle   57244  0.0  0.4 8329748 61260 ?       Ss   02:54   0:00 ora_svcb_DB1003
oracle   57265  0.0  0.3 8329752 58856 ?       Ss   02:54   0:00 ora_pman_DB1003
oracle   57281  0.0  0.4 8331992 65316 ?       Ss   02:54   0:02 ora_dia0_DB1003
oracle   57291  0.0  0.5 8343772 81040 ?       Ss   02:54   0:01 ora_dbw0_DB1003
oracle   57306  0.0  0.4 8331812 66396 ?       Ss   02:54   0:00 ora_lgwr_DB1003
oracle   57311  0.0  0.4 8329768 64400 ?       Ss   02:54   0:01 ora_ckpt_DB1003
oracle   57315  0.0  0.3 8328992 58548 ?       Ss   02:54   0:00 ora_lg00_DB1003
oracle   57319  0.0  0.5 8331128 82412 ?       Ss   02:54   0:00 ora_smon_DB1003
oracle   57324  0.0  0.3 8329504 58548 ?       Ss   02:54   0:00 ora_lg01_DB1003
oracle   57328  0.0  0.3 8329748 58676 ?       Ss   02:54   0:00 ora_smco_DB1003
oracle   57332  0.0  0.5 8331136 78212 ?       Ss   02:54   0:00 ora_reco_DB1003
oracle   57336  0.0  0.5 8330836 81800 ?       Ss   02:54   0:00 ora_w000_DB1003
oracle   57340  0.0  0.5 8336768 86364 ?       Ss   02:54   0:00 ora_lreg_DB1003
oracle   57345  0.0  0.4 8330592 73076 ?       Ss   02:54   0:00 ora_w001_DB1003
oracle   57360  0.0  0.3 8329752 58784 ?       Ss   02:54   0:00 ora_pxmn_DB1003
oracle   57368  0.0  0.9 8381524 145056 ?      Ss   02:54   0:03 ora_mmon_DB1003
oracle   57372  0.0  0.4 8329764 65376 ?       Ss   02:54   0:00 ora_mmnl_DB1003
oracle   57376  0.0  0.3 8331748 58812 ?       Ss   02:54   0:00 ora_d000_DB1003
oracle   57380  0.0  0.3 8331044 56692 ?       Ss   02:54   0:00 ora_s000_DB1003
oracle   57384  0.0  0.3 8329752 58960 ?       Ss   02:54   0:00 ora_tmon_DB1003
oracle   57425  0.0  0.6 8361120 103504 ?      Ss   02:54   0:04 ora_p000_DB1003
oracle   57427  0.0  0.6 8356576 100556 ?      Ss   02:54   0:03 ora_p001_DB1003
oracle   57918  0.0  0.4 8352156 62724 ?       Ss   02:54   0:00 ora_tt00_DB1003
oracle   57922  0.0  0.6 8377000 92356 ?       Ss   02:54   0:00 ora_arc0_DB1003
oracle   57926  0.0  0.3 8329496 58604 ?       Ss   02:54   0:00 ora_tt01_DB1003
oracle   57930  0.0  0.4 8352420 64140 ?       Ss   02:54   0:00 ora_arc1_DB1003
oracle   57934  0.0  0.4 8352424 62040 ?       Ss   02:54   0:00 ora_arc2_DB1003
oracle   57938  0.0  0.4 8352420 62148 ?       Ss   02:54   0:00 ora_arc3_DB1003
oracle   57942  0.0  0.3 8329492 58628 ?       Ss   02:54   0:00 ora_tt02_DB1003
oracle   57964  0.0  0.4 8330064 71764 ?       Ss   02:54   0:00 ora_aqpc_DB1003
oracle   57973  0.0  0.5 8333956 85564 ?       Ss   02:54   0:00 ora_p002_DB1003
oracle   57977  0.0  0.5 8333952 87716 ?       Ss   02:54   0:00 ora_p003_DB1003
oracle   57982  0.0  0.4 8329544 68320 ?       Ss   02:54   0:00 ora_w002_DB1003
oracle   58143  0.0  0.5 8330288 80352 ?       Ss   02:54   0:00 ora_w003_DB1003
oracle   58189  0.1  0.6 8351344 98324 ?       Ss   02:55   0:07 ora_cjq0_DB1003
oracle   58336  0.0  0.4 8328996 64956 ?       Ss   02:55   0:00 ora_w004_DB1003
oracle   58734  0.0  0.7 8340532 118856 ?      Ss   02:55   0:05 ora_m002_DB1003
oracle   58740  0.0  1.0 8393520 165540 ?      Ss   02:55   0:05 ora_m003_DB1003
oracle   58804  0.0  0.4 8329792 71340 ?       Ss   02:55   0:00 ora_qm02_DB1003
oracle   58860  0.0  0.7 8340336 111836 ?      Ss   02:55   0:01 ora_q003_DB1003
oracle   58967  0.0  0.5 8340156 90320 ?       Ss   02:55   0:00 ora_q005_DB1003
oracle   59084  0.0  0.5 8332024 84016 ?       Ss   02:55   0:00 ora_w005_DB1003
oracle   80322  0.0  0.8 8377056 129116 ?      Ss   03:55   0:01 ora_m004_DB1003
oracle   94519  0.0  0.4 8329540 68076 ?       Ss   03:04   0:00 ora_w006_DB1003
oracle   94563  0.0  0.4 8329540 71464 ?       Ss   03:05   0:00 ora_w007_DB1003
```
</div></details>



# まとめ

DBaaSのストレージ管理方法を比較すると、このような感じになるだろうか。

**<font color="darkgreen">Oracle Grid Infrastructure</font>**

* ASMの利便性や性能を得られる反面、Grid Infrastructureの知識が必要
* 本番システム利用における推奨構成

**<font color="darkgreen">Logical Volume Manager</font>**

* ファイルシステム構成なので、Grid Infrastructureの知識は不要
* Grid Infrastructureと比べて短時間にインスタンス作成可能（20～30分程度）
* 適用するパッチはOracleデータベースだけ。DBシステム（Grid Infrastructure）パッチは不要
* 初回作成時のディスクサイズによって、利用可能な最大ディスクサイズが変わる
* ベアメタルやReal Application Clustersでは利用できない