12 Oracle ASMフィルタ・ドライバの管理

Oracle ASMフィルタ・ドライバ(Oracle ASMFD)を使用すると、システムを再起動するたびにOracle ASMで使用するディスク・デバイスをリバインドする必要がなくなるため、ディスク・デバイスの構成および管理が簡単になります。

この項では、次の項目について説明します。

警告:

Oracle ASMFDを含めてOracle ASMを構成する場合、Oracle ASMディスクの内容を手動で変更または消去したり、構成ファイルなどのファイルを変更したりしないでください。

ノート:

  • Oracle ASMFDの構成は、Oracle Grid Infrastructureのインストール時に自動プロセスとなるようチェック・ボックスを使用して有効にできるようになりました。

  • ASMLIBが既存のOracle ASMインストール用にインストールおよび構成されている場合、Oracle ASMFDのインストールおよび構成前に、既存のASMLIB構成を明示的にアンインストールする必要があります。

  • Oracle ASMフィルタ・ドライバ(Oracle ASMFD)は、Oracle Database 12cリリース1 (12.1.0.2)からLinuxシステムで使用できます。Oracle ASMFDは、Oracle Database 12cリリース2 (12.2.0.1)からSolarisシステムで使用できます。

  • この項のトピックに記載されているプロシージャのステップでは、$ORACLE_HOME環境変数はOracle Grid Infrastructureホームのディレクトリ・パスに設定されています。#がオペレーティング・システム・プロンプトとして表示されているコマンドは、ルート・ユーザーとして実行する必要があります。$がオペレーティング・システム・プロンプトとして表示されているコマンドは、Oracle Grid Infrastructureホームの所有者として実行する必要があります

関連項目:

Oracle ASMフィルタ・ドライバについて

Oracle ASMフィルタ・ドライバ(Oracle ASMFD)は、Oracle ASMディスクのI/Oパスに存在するカーネル・モジュールです。Oracle ASMでは、フィルタ・ドライバによりOracle ASMディスクへの書込みI/Oリクエストが検証されます。

Oracle ASMFDを使用すると、システムを再起動するたびにOracle ASMで使用するディスク・デバイスをリバインドする必要がなくなるため、ディスク・デバイスの構成および管理が簡単になります。

Oracle ASMフィルタ・ドライバでは、無効なI/Oリクエストは拒否されます。このアクションにより、ディスク・グループ内のディスクおよびファイルの破損を引き起こす可能性のあるOracle ASMディスクの偶発的な上書きがなくなります。たとえば、偶発的な上書きを引き起こす可能性のあるOracle以外のI/Oは、Oracle ASMフィルタ・ドライバによってすべて除外されます。

Oracle ASMLIBとOracle ASMフィルタ・ドライバについて

Oracle Grid Infrastructure 12cリリース2 (12.2)以降、Oracle ASMLIBがシステムにインストールされている場合、Oracle ASMフィルタ・ドライバ(Oracle ASMFD)をインストールして構成することはできません。Oracle ASMFDをインストールして構成する場合は、先にOracle ASMLIBをアンインストールする必要があります。

関連項目:

パーティション表とOracle ASMフィルタ・ドライバについて

拡張パーティション表は、Oracle Automatic Storage Management 12.2リリース1 (12.2.0.1)のOracle ASMフィルタ・ドライバ(ASMFD)でサポートされません。

Oracle ASMフィルタ・ドライバが構成されているかどうかの判別

SYS_ASMFD_PROPERTIESAFD_STATEパラメータの値は、Oracle ASMFDがOracle ASMインスタンスに構成されているかどうかを示します。

ASMCMD afd_stateコマンドを使用すると、Oracle ASMFDの状態を確認できます。たとえば:

$ $ORACLE_HOME/bin/asmcmd afd_state
ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'DEFAULT' on host 'myhost'

Oracles ASMFDがホストに存在するかどうかを判別するために、SYS_CONTEXTからAFD_STATEの値を表示することもできます。問合せは、Oracle ASMインスタンスで実行する必要があります。

AFD_STATEの値がNOT AVAILABLEの場合、Oracle ASMFDは構成されていません。

SQL> SELECT SYS_CONTEXT('SYS_ASMFD_PROPERTIES', 'AFD_STATE') FROM DUAL;
SYS_CONTEXT('SYS_ASMFD_PROPERTIES','AFD_STATE')
--------------------------------------------------------------------------------
NOT AVAILABLE

CONFIGUREDは、Oracle ASMFDが完全に設定されており、Oracle ASMインスタンスをドライバに登録できることを意味します。

SQL> SELECT SYS_CONTEXT('SYS_ASMFD_PROPERTIES', 'AFD_STATE') FROM DUAL;
SYS_CONTEXT('SYS_ASMFD_PROPERTIES','AFD_STATE')
--------------------------------------------------------------------------------
CONFIGURED

Oracle ASMフィルタ・ドライバのAFD_DISKSTRINGパラメータの更新

AFD_DISKSTRINGパラメータは、Oracle ASMFDによって管理されるディスクを識別するために使用されるOracle ASMFDディスク検出文字列を示します。

ASMCMD afd_dssetおよびafd_dgsetコマンドを使用して、AFD_DISKSTRINGパラメータを設定し表示できます。たとえば:

$ $ORACLE_HOME/bin/asmcmd afd_dsset '/dev/rdsk/mydisks/*'

$ $ORACLE_HOME/bin/asmcmd afd_dsget
AFD discovery string: /dev/rdsk/mydisks/*

ALTER SYSTEM SQL文を使用してAFD_DISKSTRINGを設定することもできます。ラベルは、Oracle ASMFDディスク検出文字列によって識別されるディスクのディスク・ヘッダーで作成されます。

SQL> ALTER SYSTEM AFD_DISKSTRING SET '/dev/disk0','/dev/disk1','/devices/dsk/*';
System altered.

次の問合せを使用して、AFD_DISKSTRINGパラメータの値を取得できます。

SQL> SELECT SYS_CONTEXT('SYS_ASMFD_PROPERTIES', 'AFD_DISKSTRING') FROM DUAL;
SYS_CONTEXT('SYS_ASMFD_PROPERTIES','AFD_DISKSTRING')
--------------------------------------------------------------------------------
'/dev/disk0','/dev/disk1','/devices/dsk/*'

関連項目:

Oracle ASMフィルタ・ドライバ・ディスク用のOracle ASMのASM_DISKSTRINGパラメータの更新

Oracle ASMディスク検出文字列を更新して、ASM_DIKSTRING初期化パラメータに対してOracle ASMFDディスク・ラベル名を追加または削除できます。

たとえば、次のようにOracle ASMFDディスクをASM_DIKSTRING初期化パラメータに追加できます。

ASM_DISKSTRING = 'AFD:DISK0', 'AFD:DISK1', '/dev/rdsk/mydisks/*'

または、次のようにASM_DIKSTRING初期化パラメータを設定できます。

ASM_DISKSTRING = 'AFD:*', '/dev/rdsk/mydisks/*'

ASMCMD dsgetおよびdssetコマンドを使用すると、Oracle ASMディスク検出文字列を表示し設定できます。たとえば、次のようにOracle ASMディスク検出文字列を設定すると、Oracle ASMFDディスクを追加できます。

$ $ORACLE_HOME/bin/asmcmd dsset 'AFD:*,/dev/rdsk/mydisks/*'

次のように、以前に追加したOracle ASMFDディスクを削除できます。

$ $ORACLE_HOME/bin/asmcmd dsset '/dev/rdsk/mydisks/*'

関連項目:

Oracle ASMフィルタ・ドライバ・ラベルの設定、クリアおよびスキャン

Oracle ASMFDによって使用されるディスクをプロビジョニングするラベルを設定します。ラベルを設定すると、指定したディスクは、Oracle ASMFDによって管理されます。

ASMCMD afd_labelafd_unlabelおよびafd_scanコマンドを使用すると、ラベルを追加、削除およびスキャンできます。たとえば:

$ $ORACLE_HOME/bin/asmcmd afd_label 'disk0' '/dev/rdsk/mydisks/disk0'

$ $ORACLE_HOME/bin/asmcmd afd_unlabel 'disk0'

$ $ORACLE_HOME/bin/asmcmd afd_scan '/dev/rdsk/mydisks/*'

また、Oracle ASMコンフィギュレーション・アシスタント(ASMCA)では、Oracle ASMFDディスクでのラベルの追加および削除がサポートされます。

SQL文を使用して、ラベルを管理することもできます。ラベルは、ALTER SYSTEM LABEL SET SQL文を使用して設定できます。たとえば:

SQL> ALTER SYSTEM LABEL SET 'disk0' TO '/dev/disk0';
System altered.

SQL> SELECT UPPER(path) FROM V$ASM_DISK ORDER BY PATH;
UPPER(PATH)
--------------------------------------------------------------------------------
AFD:DISK0

文を実行する際、任意でRENAMEまたはMIGRATEオプションを使用できます。ディスクがOracle ASMFDに対して以前にプロビジョニングされている場合、RENAMEオプションを使用してラベルの名前を変更できます。コマンドの実行時、Oracle ASMFDによってデバイスを管理しないようにする必要があります。ディスクがOracle ASMディスク・グループに以前に使用されていて、このディスク・グループがディスマウントされた場合、MIGRATEオプションを使用してこのディスクにラベル付けできます。

ALTER SYSTEM LABEL CLEARを使用すると、デバイスからラベルを削除し、Oracle ASMFDによるデバイスの管理を停止できます。たとえば:

SQL> ALTER SYSTEM LABEL CLEAR 'disk0';
System altered.

ローカル・ノードでALTER SYSTEM LABEL SETコマンドを実行した後、リモート・ノードでALTER SYSTEM LABEL SCANを使用できます。

ALTER SYSTEM LABEL SET文は、ディスク・ヘッダー上のラベルを書き込み、そのディスクはノード間で共有されるため、同じ文はクラスタの他のノードで実行されません。

デバイス・パスが指定されていない場合、文ではAFD_DISKSTRINGパラメータ値が使用され、スキャン操作が実行されます。

SQL> ALTER SYSTEM LABEL SCAN

関連項目:

Oracle ASMフィルタ・ドライバの構成解除

Oracle ASMフィルタ・ドライバ(Oracle ASMFD)がシステム上で構成済の場合、これを構成解除できます。

この項では、次の項目について説明します。

関連項目:

Oracle Grid Infrastructureのクラスタウェア環境でのOracle ASMフィルタ・ドライバの構成解除

Oracle Clusterware環境でOracle ASMフィルタ・ドライバを構成解除するには、次のステップを実行します。

  1. Oracle ASMFDの構成解除後、Oracle ASMがディスク・デバイスを検出できるように、Oracle ASMディスク検出文字列を更新します。

  2. Oracle Grid Infrastructure所有者として、任意のノードで次のコマンドを実行し、クラスタ内のノードおよびノード・ロールをリストします。

    $ $ORACLE_HOME/bin/olsnodes -a
    
  3. 各ハブ・ノードおよびリーフ・ノードで、ローリング・モードまたは非ローリング・モードのいずれかで次を実行します。

    1. rootユーザーとしてログインし、Oracle Grid Infrastructureを停止します。

      # $ORACLE_HOME/bin/crsctl stop crs
      

      コマンドでエラーが戻された場合、次のようにOracle Grid Infrastructureを強制的に停止します。

      # $ORACLE_HOME/bin/crsctl stop crs -f
      
    2. rootとして、Oracle ACFSカーネル・モジュールを停止し、信頼性が最も高い停止を確実に実行します。

      # $ORACLE_HOME/bin/acfsload stop
      
    3. rootとして、Oracle ASMFDを構成解除します。

      # $ORACLE_HOME/bin/asmcmd afd_deconfigure
      
    4. ストレージ・デバイスがrootによって所有されている場合は、Oracle Grid Infrastructureユーザーがデバイスにアクセスするために必要な権限を設定します。

    5. rootとして、Oracle ACFSカーネル・モジュールを開始します。

      # $ORACLE_HOME/bin/acfsload start
      
    6. rootとして、ノードのOracle Clusterwareスタックを開始します。

      # $ORACLE_HOME/bin/crsctl start crs
      
    7. Oracle Grid Infrastructure所有者として、Oracle ASMFDのステータスを確認します。

      $ $ORACLE_HOME/bin/asmcmd afd_state
      
  4. Oracle Grid Infrastructure所有者として、Oracle ASMFDパスを削除するようにOracle ASM検出文字列を更新します。

    $ $ORACLE_HOME/bin/asmcmd dsget
    
    $ $ORACLE_HOME/bin/asmcmd dsset old_diskstring
    

    Oracle ASMディスク検出文字列の現在の値を確認してから、値を更新します。old_diskstringの値は、AFD: (Oracle ASMFD)パスで更新する前の古いディスク検出文字列値です。

関連項目:

Oracle Grid Infrastructureのスタンドアロン(Oracle Restart)環境でのOracle ASMフィルタ・ドライバの構成解除

Oracle Grid Infrastructureのスタンドアロン環境でOracle ASMフィルタ・ドライバを構成解除するには、次のステップを実行します。

  1. Oracle ASMFDの構成解除後、Oracle ASMがディスク・デバイスを検出できるように、Oracle ASMディスク検出文字列を更新します。

  2. rootユーザーとしてログインし、次のコマンドを使用して、スタンドアロン・サーバー用のOracle Grid Infrastructureインストールを停止します。

    # $ORACLE_HOME/bin/crsctl stop has
    

    前述のコマンドでエラーが戻された場合、次のコマンドを使用してください。

    # $ORACLE_HOME/bin/crsctl stop has -f
    
  3. rootとして、Oracle ACFSカーネル・モジュールを停止し、信頼性が最も高い停止を確実に実行します。

    # $ORACLE_HOME/bin/acfsload stop
    
  4. rootとして、Oracle ASMFDを構成解除します。

    # $ORACLE_HOME/bin/asmcmd afd_deconfigure
    
  5. ストレージ・デバイスがrootによって所有されている場合は、Oracle Grid Infrastructureユーザーがデバイスにアクセスするために必要な権限を設定します。

  6. rootとして、Oracle ACFSカーネル・モジュールを開始します。

    # $ORACLE_HOME/bin/acfsload start
    
  7. rootとして、スタンドアロン・サーバー用のOracle Grid Infrastructureを開始します。

    # $ORACLE_HOME/bin/crsctl start has
    
  8. Oracle Grid Infrastructureスタンドアロン・サーバーの所有者として、Oracle ASMFDのステータスを確認します。

    $ $ORACLE_HOME/bin/asmcmd afd_state
    
  9. Oracle Grid Infrastructureのスタンドアロン・サーバー所有者として、Oracle ASMFDパスを削除するようにOracle ASMディスク検出文字列を更新します。

$ $ORACLE_HOME/bin/asmcmd dsget

$ $ORACLE_HOME/bin/asmcmd dsset old_diskstring

Oracle ASMディスク検出文字列の現在の値を確認してから、値を更新します。old_diskstringの値は、AFD: (Oracle ASMFD)パスで更新する前の古いディスク検出文字列値です。

関連項目:

Oracle ASMフィルタ・ドライバのコマンド

この項では、Oracle ASMフィルタ・ドライバを管理するためにインストール時に使用されるOracle ASMフィルタ・ドライバ(ASMFD)コマンドについて説明します。これらのコマンドは、Oracle Grid Infrastructureホームの/binディレクトリにあります。

afdload

目的

afdloadは、Oracle ASMフィルタ・ドライバをロードまたはアンロードします。

構文

afdload { start | stop  } [ -s ]

表12-1に、afdloadコマンドで使用可能なオプションを示します。

表12-1 afdloadコマンドのオプション

オプション 説明

start

Oracle ASMフィルタ・ドライバをロードします。

stop

Oracle ASMフィルタ・ドライバをアンロードします。

-s

サイレント・モードで動作します。

説明

afdloadを使用してOracle ASMフィルタ・ドライバを手動でロードまたはアンロードできます。

stopオプションでドライバをアンロードする前に、ディスク・グループをディスマウントし、Oracle ASMを停止する必要があります。

afdloadを実行するには、rootまたは管理者の権限が必要です。

次に、Oracle ASMフィルタ・ドライバを停止(アンロード)するafdloadの使用例を示します。

# afdload stop

afddriverstate

目的

afddriverstateは、Oracle ASMフィルタ・ドライバの現在の状態に関する情報を示します。

構文

afddriverstate [-orahome ORACLE_HOME ] 
    { installed | loaded | version | supported } [-s]

表12-2に、afddriverstateコマンドで使用可能なオプションを示します。

表12-2 afddriverstateコマンドのオプション

オプション 説明

-orahome ORACLE_HOME

ユーザーがafddriverstateコマンドを実行する権限を持つOracle Grid Infrastructureホームを指定します。

installed

Oracle ASMフィルタ・ドライバがシステムにインストールされているかどうかを判別します。

loaded

Oracle ASMフィルタ・ドライバがメモリーにロードされているかどうかを判別します。

version

現在インストールされているOracle ASMフィルタ・ドライバ・システム・ソフトウェアのバージョンをレポートします。

supported

システムがOracle ASMフィルタ・ドライバでサポートされているカーネルであるかどうかをレポートします。

-s

コマンドの実行時、サイレント・モードを指定します。

説明

afddriverstateを使用して、Oracle ASMフィルタ・ドライバの現在の状態に関する詳細情報を表示できます。

次に、afddriverstateの使用例を示します。

$ afddriverstate version
AFD-9325:     Driver operating system kernel version = 2.6.39-400.3.0.el6uek.x86_64(x86_64).
AFD-9326:     Driver Oracle version = 150728.
AFD-9212:     Driver build version = MAIN.