ACFSファイルシステム作成手順

oracle_honsya-100

ACFS作成手順

ACFSは、Oracle自動ストレージ管理クラスタ・ファイルシステムという意味で、その名の通りOracle製のクラスタファイルシステムです。このファイルシステムの特徴は3つあります。

  • マルチプラットフォームでマウント可能なファイルシステムであること
  • Oracleデータベースファイル以外のカスタマファイルをサポートすること
  • Grid管理下にある複数ノードから同時に参照できること

UNIX系OSでも、Linuxでも、Windowsでも使えて、GRID配下の全サーバーから同時アクセスでき、dbfはもちろんパッチファイルやアプリケーションファイルも配置できるという、大変優れたファイルシステムです。

便利な使い方の例を挙げてみます。

  • パッチファイルをACFSに配置することで、各ノードに配置する必要なし
  • DataPumpのダンプファイルを配置すれば、CLUSTER=yで複数ノードでパラレルでのexport/importを実施可能
  • $ORACLE_HOMEを配置することで、単一ORACLE_HOME構成を実現可能
  • アプリケーション実行ファイルを配置 (リリースでノード間同期が不要)

とても使い勝手が良さそうです。では実際に作ってみます。

 

ACFS作成

ACFS作成の流れを説明します。

  1. ACFSを格納するASMディスクグループを決める。(または新規作成する)
  2. OS上にマウントポイント・ディレクトリを作成
  3. ディスクグループ上にACFS用ボリュームを作成
  4. ACFS作成

 

ACFS用ディスクグループ作成

既存のディスクグループの空き領域に作成してもいいですが、ここでは新規DGに作成することにします。

  • DG用物理ディスクデバイス名 : /dev/rhdisk5
  • 物理ディスクへのシンボリックリンク名 : /dev/oracle/db/db01/acfs1 (物理ディスクを直接指定する場合はリンク不要)

所有権、パーミッション、をGRID配下の各ノードで設定します。ここでは、server01とserver02です。

server01設定

[root@server01:/] ls -l /dev/rhdisk5
crw-------    1 root     system       19,  3 Oct 16 15:49 /dev/rhdisk5
[root@server01:/]
[root@server01:/] chown grid.asmadmin /dev/rhdisk5
[root@server01:/] chmod 660 /dev/rhdisk5
[root@server01:/] cd /dev/oracle/db/db01/
[root@server01:/dev/oracle/db/db01] ln -s /dev/rhdisk5 acfs1
[root@server01:/dev/oracle/db/db01] chown -h grid.asmadmin acfs1
[root@server01:/dev/oracle/db/db01] ls -l acfs1
lrwxrwxrwx    1 grid     asmadmin         12 Nov 13 15:40 acfs1 -> /dev/rhdisk5
[root@server01:/dev/oracle/db/db01]

server02設定

[root@server02:/] ls -l /dev/rhdisk5
crw-------    1 root     system       19,  2 Oct 16 16:37 /dev/rhdisk5
[root@server02:/]
[root@server02:/] chown grid.asmadmin /dev/rhdisk5
[root@server02:/] chmod 660 /dev/rhdisk5
[root@server02:/] cd /dev/oracle/db/db01
[root@server02:/dev/oracle/db/db01] ln -s /dev/rhdisk5 acfs1
[root@server02:/dev/oracle/db/db01] chown -h grid.asmadmin acfs1
[root@server02:/dev/oracle/db/db01] ls -l acfs1
lrwxrwxrwx    1 grid     asmadmin         12 Nov 13 15:42 acfs1 -> /dev/rhdisk5
[root@server02:/dev/oracle/db/db01]

 

 マウントポイント作成

 ACFSのマウントポイントを作成します。

  • /acfs_work

 server01

[root@server01:/] mkdir /acfs_work
[root@server01:/] chown oracle.oinstall /acfs_work
[root@server01:/]

 server02

[root@server02:/] mkdir /acfs_work
[root@server02:/] chown oracle.oinstall /acfs_work
[root@server02:/]

 

 ディスクグループ作成

物理ディスクrhdisk5に ディスクグループ名「DG_TEST」で新規DGを作成します。

gridユーザーにスイッチし、SYSASM権限でsqlplusにログインします。この作業はserver01のみでOKです。

server01作業

[grid@server01:/home/grid] sqlplus sys/password as sysasm

SQL*Plus: Release 11.2.0.4.0 Production on 水 11月 13 15:52:01 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options
に接続されました。
SQL>

 

 ディスクグループ「DG_TEST」を作成します。

SQL> CREATE DISKGROUP DG_TEST EXTERNAL REDUNDANCY DISK '/dev/oracle/db/db01/acfs1' SIZE 81920 M;

Diskgroup created.

SQL>

 

server01でDGを作成するとDG「DG_TEST」は自動でマウントされますが、server02はマウントされないので手動でマウントします。server02にgridユーザーでログインし、SYSASM権限でsqlplusにログイン後、マウントします。

server02作業

SQL> ALTER DISKGROUP DG_TEST MOUNT;

Diskgroup altered.

SQL>

 

ACFS用ボリューム作成

作成した「DG_TEST」上に、ACFSとして割り当てる論理ボリュームをサイズ75GBで作成します。
ところが、ここで想定外のエラーが発生します。

server01作業

SQL> ALTER DISKGROUP DG_TEST ADD VOLUME ACFSVOL1 SIZE 75G;
ALTER DISKGROUP DG_TEST ADD VOLUME ACFSVOL1 SIZE 75G
*
行1でエラーが発生しました。:
ORA-15032: not all alterations performed
ORA-15221: ASM operation requires compatible.asm of 11.2.0.0.0 or higher

SQL>

 

ORA-15032: not all alterations performed
ORA-15221: ASM operation requires compatible.asm of 11.2.0.0.0 or higher

 

ASMのcompatible.asmが11.2.0.0.0より低い、というエラーです。いろいろと調べてみたところ、compatible.asmという属性のバージョン値が「10.1.0.0.0」となっており、確かに「11.2.0.0.0」よりも低いことが判明しました。

SQL> col COMPATIBILITY form a10
SQL> col DATABASE_COMPATIBILITY form a10
SQL> col NAME form a20
SQL> select GROUP_NUMBER,NAME,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;

GROUP_NUMBER NAME                 COMPATIBIL DATABASE_C
------------ -------------------- ---------- ----------
           1 DATA                 11.2.0.0.0 10.1.0.0.0
           2 DG_REDO_1            11.2.0.0.0 10.1.0.0.0
           3 DG_REDO_2            11.2.0.0.0 10.1.0.0.0
           4 DG_TEST              10.1.0.0.0 10.1.0.0.0

SQL>

 

ついでにV$ASM_ATTRIBUTEも確認してみると、DG_TESTであるGROUP_NUMBER=4が表示もされませんでした。

SQL> col value form a10
SQL> select group_number,name,value from v$asm_attribute where name like '%compatible%';

GROUP_NUMBER NAME                 VALUE
------------ -------------------- ----------
           1 compatible.asm       11.2.0.0.0
           1 compatible.rdbms     10.1.0.0.0
           2 compatible.asm       11.2.0.0.0
           2 compatible.rdbms     10.1.0.0.0
           3 compatible.asm       11.2.0.0.0
           3 compatible.rdbms     10.1.0.0.0

6 rows selected.

SQL>

 

 このエラー原因として、ASMボリューム作成のためには、ディスク・グループのCOMPATIBLE.ADVM属性を11.2以上にする必要があり、そのためには、COMPATIBLE.ASM属性を11.2以上に設定する必要がある、という事が判明。そして、COMPATIBLE.ADVM属性の値は設定しないかぎり空のままであることから、ASM属性を「11.2」に設定後、ADVMの属性も「11.2」に設定する必要があることが分かりました。

参考資料

 ・Oracle ADVMの詳細は、「Oracle ASM動的ボリューム・マネージャの概要」

・Oracle Automatic Storage Management管理者ガイド 11gリリース2 (11.2) B61035-04
 → 11 Oracle ASMコンフィギュレーション・アシスタント
  → Oracle ASMコンフィギュレーション・アシスタントGUIツール
   → Oracle ASMコンフィギュレーション・アシスタントによるディスク・グループの管理

 

では、ディスクグループ「DG_TEST」のASM属性とADVM属性 を設定します。SYSASM権限でSQLを実行します。

server01作業

まずは、ASM属性を設定します。

SQL> alter diskgroup DG_TEST set attribute 'compatible.asm' = '11.2';

Diskgroup altered.

SQL>

 

次にADVM属性を設定します。

SQL> alter diskgroup DG_TEST set attribute 'compatible.advm' = '11.2';

Diskgroup altered.

SQL>

 

問題なく設定できたようなので、設定結果を確認します。

SQL> select GROUP_NUMBER,NAME,COMPATIBILITY,DATABASE_COMPATIBILITY from v$asm_diskgroup;

GROUP_NUMBER NAME                 COMPATIBIL DATABASE_C
------------ -------------------- ---------- ----------
           1 DATA                 11.2.0.0.0 10.1.0.0.0
           2 DG_REDO_1            11.2.0.0.0 10.1.0.0.0
           3 DG_REDO_2            11.2.0.0.0 10.1.0.0.0
           4 DG_TEST              11.2.0.0.0 10.1.0.0.0

SQL>

SQL> select group_number,name,value from v$asm_attribute where name like '%compatible%';

GROUP_NUMBER NAME                 VALUE
------------ -------------------- ----------
           1 compatible.asm       11.2.0.0.0
           1 compatible.rdbms     10.1.0.0.0
           2 compatible.asm       11.2.0.0.0
           2 compatible.rdbms     10.1.0.0.0
           3 compatible.asm       11.2.0.0.0
           3 compatible.rdbms     10.1.0.0.0
           4 compatible.asm       11.2.0.0.0
           4 compatible.rdbms     10.1.0.0.0
           4 compatible.advm      11.2

9 rows selected.

SQL>

 

ASMとADVMの属性が「11.2」に変更されたことが確認できました。では、ACFS用論理ボリューム作成を再実行してみます。

SQL> ALTER DISKGROUP DG_TEST ADD VOLUME ACFSVOL1 SIZE 75G;

Diskgroup altered.

SQL>

 

作成できました。

 

ここでは、DG作成後にalterでcompatible属性をセットしましたが、DG作成時にセットすることもできます。

DG作成時にcompatible属性をセットする方法

 

 

ACFS作成

ファイルシステムを作成するためには、OS上で認識している物理デバイス名を知る必要があるので、ACFS用に作成した論理ボリュームの物理デバイス名を調べます。調べ方は、ASMCMDコマンドで調べる方法と、SQLで調べる方法の2通りがあります。

まずはASMCMDコマンドで調べてみます。gridユーザーでログインし、ASMCMDコマンドラインを起動してvolinfoコマンドを実行します。

[grid@server01:/home/grid] asmcmd
ASMCMD> volinfo -G DG_TEST -a
Diskgroup Name: DG_TEST

         Volume Name: ACFSVOL1
         Volume Device: /dev/asm/acfsvol1-5
         State: ENABLED
         Size (MB): 76800
         Resize Unit (MB):32
         Redundancy: UNPROT
         Stripe Colums: 4
         Stripe Width (K): 128
         Usage: ACFS
         Mountpath: /acfs_work

ASMCMD>

 

この結果から、論理ボリューム名「ACFSVOL1」に紐づく物理デバイス名は「/dev/asm/acfsvol1-5」であることがわかりました。

次にSQLでも調べてみます。gridユーザーでログインしSYSASM権限でsqlplusを起動しSQLを実行します。

SQL> col VOLUME_NAME form a20
SQL> col VOLUME_DEVICE form a30
SQL> selecvt VOLUME_NAME,VOLUME_DEVICE from v$asm_volume;

VOLUME_NAME          VOLUME_DEVICE
-------------------- ------------------------------
ACFSVOL1             /dev/asm/acfsvol1-5

SQL>

ASMCMDで調べた結果と同じ物理デバイス名が表示されました。

 

それでは、ACFS用論理ボリューム上にクラスターファイルシステムACFSを作成します。ファイルシステムはOSの管理者権限でなければ作成できないので、server01にrootユーザーでログインしてコマンドを実行します。

server01作業

[root@server01:/] mkfs -V acfs -o b=4k /dev/asm/acfsvol1-5
mkfs: バージョン                   = 11.2.0.4.0
mkfs: ディスク上のバージョン           = 39.0
mkfs: ボリューム                    = /dev/asm/acfsvol1-5
mkfs: ボリューム・サイズ               = 80530636800
mkfs: フォーマットが完了しました。
[root@server01:/]

 

次に、acfsutilでレジストリ登録します。

[root@server01:/] acfsutil registry -f -a /dev/asm/acfsvol1-5 /acfs_work
acfsutil registry: マウント・ポイント/acfs_workはOracleレジストリに正常に追加されました
[root@server01:/]

 

これで完了です。
作業はserver01で実施しましたが、server02でもACFSがmountされている状態になっています。

 

dfコマンドで確認すると、このように見えます。

server01

[root@server01:/] df -m /acfs_work
Filesystem    MB ブロック      Free %Used    Iused %Iused Mounted on
/dev/asm/acfsvol1-5    76800.00  76571.39    1%   468192     1% /acfs_work
[root@server01:/]

 server02

[root@server02:/] df -m /acfs_work
Filesystem    MB ブロック      Free %Used    Iused %Iused Mounted on
/dev/asm/acfsvol1-5    76800.00  76571.39    1%   468192     1% /acfs_work
[root@server02:/]

 

ACFSがマウントできていることを確認できました。

 

umontとmount

では最後に、ACFSのアンマウントをマウントをやってみます。

アンマウントは、AIXのumountコマンドで行います。

[root@server01:/] umount /acfs_work
[root@server01:/]

 

マウントは、AIXのmountコマンドで行います。

[root@server01:/] mount -V acfs /dev/asm/acfsvol1-5 /acfs_work
[root@server01:/]

 

以上でACFS作成は完了です。

 

 


サブコンテンツ

このページの先頭へ