3 Oracle ASMLIBの構成

次の手順は、Oracle LinuxでのASMLIBの初期構成のガイドラインです。詳細は、次のOracle Databaseのドキュメントを参照してください。

重要:

ASMLIB構成に対する変更は、すぐには有効になりません。ASMLIBの再構成時に、データベースおよびすべての関連プロセスを停止します。通常、変更は、次のシステム再起動後に有効になります。

ASMLIB構成の初期化

インストール後、管理ユーティリティ/usr/sbin/oracleasmを使用して、ASMLIBソフトウェアを構成し、起動時にディスクをスキャンします。

ASMLIB構成ファイルは/etc/sysconfig/oracleasmで読み取ることができますが、このファイルが常に正しく構成されるように、常にoracleasm configureを使用して構成パラメータを変更することをお薦めします。対話型(-i)オプションは通常、ライブラリを初めて構成するために使用されます。

  • 構成ユーティリティを対話モードで実行して、構成を初期化します。
    sudo oracleasm configure -i

    初めて実行する場合、oracleasm configureユーティリティは、ASMLIBを使用する権限を割り当てるユーザーIDとグループIDなど、一連の質問をします。

    Oracle Databaseがoracleユーザーおよびdbaグループとして実行されるように構成されている場合、出力は次のようになります。

    Configuring the Oracle ASM library driver.
                
    This will configure the on-boot properties of the Oracle ASM library
    driver.  The following questions will determine whether the driver is
    loaded on boot and what permissions it will have.  The current values
    will be shown in brackets ('[]').  Hitting <ENTER> without typing an
    answer will keep that current value.  Ctrl-C will abort.
                
    Default user to own the driver interface []: oracle
    Default group to own the driver interface []: dba
    Start Oracle ASM library driver on boot (y/n) [n]: y
    Scan for Oracle ASM disks on boot (y/n) [y]: y
    Maximum number of disks that may be used in ASM system [2048]: 2048
    Enable iofilter if kernel supports it (y/n) [y]: y
    Writing Oracle ASM library driver configuration: done
  • oracleasmサービスを有効にして起動します。

    ASMLIBの構成が終了したら、oracleasmサービスを有効にして起動します。

    sudo systemctl enable --now oracleasm

ASM I/Oフィルタリングの構成

oracleasm-supportには、カーネルのBPFインフラストラクチャ・サポートに依存するASM I/Oフィルタリング機能が含まれています。この機能は、UEK R7またはRHCKを使用するOracle Linux 9で使用できます。有効にすると、I/Oフィルタ機能によって、ASMによって起動されていない書込み操作が拒否され、ASMシステムへのディスクの追加後のddなどの管理コマンドによるASMディスクへの書込みが防止されます。

I/Oフィルタ機能の詳細は、「oracleasm-support 3.0リリース・ノート」を参照してください。
  1. 構成ユーティリティを実行して、I/Oフィルタリングを有効または無効にします。

    デフォルトでは、I/Oフィルタ機能が有効になっています。oracleasm configureコマンドを使用して、I/Oフィルタ機能を無効または有効にします。

    1. I/Oフィルタを無効にします。
      sudo oracleasm configure --iofilter n
    2. I/Oフィルタを有効にします。
      sudo oracleasm configure --iofilter y
  2. 構成ユーティリティを実行して、ASMLIBがI/Oフィルタリングで使用できるディスク・デバイスの最大数を設定します。

    I/Oフィルタリングには、ASMLIBが使用できるディスク・デバイスの最大数のマッピングが必要です。デフォルト値は2048ですが、次のコマンドを実行して、この値を4096などの任意の値に変更できます。

    sudo oracleasm configure --maxdevs 4096

ディスクをASMLIBで使用可能にする

Oracle DatabaseがASMLIBを使用してアクセスするすべてのディスクにラベルを付ける必要があります。このトピックでは、ASMディスク・ラベルの作成方法、検証方法およびラベルの削除方法について説明します。

次のコマンドは、ディスクをスキャンし、ASMディスク・ラベルを作成する方法を示しています。ディスク・ラベルの表示および問合せを実行したり、削除したりするための手順も提供されています。

  1. oracleasm scandisksコマンドを使用して、システムに接続されているすべてのブロック・デバイスでASMディスク・ラベルをスキャンし、検出されたASMディスクをASMで使用できるようにします。
    sudo oracleasm scandisks

    出力は次のようになります。

    Reloading disk partitions: done
    Cleaning any stale ASM disks...
    Setting up iofilter map for ASM disks: done
    Scanning system for ASM disks...
  2. oracleasm creatediskコマンドを使用して、ディスクにラベルを付けます。
    sudo oracleasm createdisk VOL1 /dev/sdg1

    次のような出力結果が表示される場合があります。

    Writing disk header: done
    Instantiating disk: done
  3. oracleasm listdisksコマンドを使用して、既存のディスク・ラベルを表示します。
    sudo oracleasm listdisks

    出力は次のようになります。

    VOL1
    VOL2
    VOL3
  4. oracleasm querydiskコマンドを使用して、ディスク・デバイスにラベルがあるかどうかを確認します。
    sudo oracleasm querydisk /dev/sdg1

    デバイスにASMディスクのラベルが付いていない場合は、次の出力が表示されます。

    Device "/dev/sdg1" is not marked as an ASM disk
    デバイスにASMディスクのラベルが付いている場合、出力は次のようになります。
    Device "/dev/sdg1" is marked an ASM disk with the label "VOL1"
    ASMディスク・ラベルを問い合せて、ラベルが有効かどうかを確認することもできます。次に例を示します。
    sudo oracleasm querydisk VOL1
  5. oracleasm deletediskコマンドを使用して、ディスクからASMラベルを削除します。
    sudo oracleasm deletedisk VOL1

    次のような出力結果が表示される場合があります。

    Clearing disk header: done
    Dropping disk: done

ディスクの可用性の構成が終了したら、ディスクがASMに表示されていることを確認できます。「検出文字列を使用したASMディスクの表示の検証」を参照してください。

ASMLIB構成ステータスの確認

oracleasm statusコマンドを使用して、ASMLIB構成のステータスを表示します。このコマンドは、問題の特定に役立ち、有効になっている機能を表示できます。

  • oracleasm statusを実行して、現在の構成ステータスを表示します。
    sudo oracleasm status
    次の出力例は、UEK R7を実行しているシステムから取得されます。
    Checking if the oracleasm kernel module is loaded: no (Not required with kernel 5.15.0)
    Checking if /dev/oracleasm is mounted: no (Not required with kernel 5.15.0)
    Checking which I/O Interface is in use: io_uring (KABI_V3)
    Checking if io_uring is enabled: yes
    Checking if ASM disks have the correct ownership and permissions: yes
    Checking if ASM I/O filter is set up: yes
    次のチェックが実行されます。
    • oracleasmカーネル・モジュールがロードされているかどうかを確認します。io_uringを含まない以前のカーネルにはカーネル・モジュールが必要です。

    • /dev/oracleasmがマウントされているかどうかを確認します。oracleasmカーネル・モジュールを使用すると、デバイス・ノードが構成およびマウントされます。io_uringを含むカーネルでは、このアクションは必要ありません。

    • 使用されているI/Oインタフェースを確認します。KABI_V3を使用しているカーネルの場合、io_uringインタフェースが使用され、KABI_V2を使用しているカーネルではoracleasm driverインタフェースが使用されます。

    次のチェックは、KABI_V3が検出された場合のみ実行されます。

    • io_uringが有効かどうかを確認します。io_uringを含むカーネルで、ASMLIBを使用するにはio_uring機能を有効にする必要があります。「io_uringの有効化または制限」を参照してください。

    • ASMディスクの所有権および権限が正しいかどうかを確認します。ASM用にラベル付けされたディスク・デバイスが、ASM用に構成されたユーザーおよびグループ、および構成の初期化時に設定されたユーザーおよびグループによって所有されていることを確認します。「ASMLIB構成の初期化」を参照してください。

    • ASM I/Oフィルタが有効で、構成されているかどうかを確認します。必要なBPF機能を含むカーネルでは、I/Oフィルタリングを有効にして、ASMディスクが誤って上書きされないように構成できます。「ASM I/Oフィルタリングの構成」を参照してください。

検出文字列を使用したASMディスクの表示の検証

ASMでは、検出文字列を使用して、システムにアタッチされているラベル付きASMディスクのうち、どのディスクをOracle Databaseインスタンスで使用できるかを記述します。

oracleasm discoverコマンドを使用して、ASM検出文字列を検証し、関連するASMディスクの特性を表示します。

  • システム上のすべてのASMディスクをリストします。
    sudo oracleasm discover

    次のような出力結果が表示される場合があります。

    Using ASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so
    [ASM Library - Linux, version 3.0.0 (KABI_V3), Aug 26 2024 00:20]
    Discovered disk: ORCL:DB1 [1044162 blocks (534610944 bytes), blksz 512/512, maxio 524288 bytes, integrity none]
    Discovered disk: ORCL:DB2 [1044162 blocks (534610944 bytes), blksz 512/512, maxio 524288 bytes, integrity none]
    Discovered disk: ORCL:VOL1 [1044162 blocks (534610944 bytes), blksz 512/512, maxio 524288 bytes, integrity none]
    Discovered disk: ORCL:VOL2 [1044162 blocks (534610944 bytes), blksz 512/512, maxio 524288 bytes, integrity none]
  • ラベルが"VOL"で始まるすべてのASMディスクをリストします。
    sudo oracleasm discover ORCL:VOL\*

    次のような出力結果が表示される場合があります。

    Using ASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so
    [ASM Library - Linux, version 3.0.0 (KABI_V3), Aug 26 2024 00:20]
    Discovered disk: ORCL:VOL1 [1044162 blocks (534610944 bytes), blksz 512/512, maxio 524288 bytes, integrity none]
    Discovered disk: ORCL:VOL2 [1044162 blocks (534610944 bytes), blksz 512/512, maxio 524288 bytes, integrity none]