6 Oracle Linux KVMドメインの管理

Oracle Exadata System Softwareリリース19.3.0を実行しているOracle Exadata Database MachineOracle Linux KVMユーザー・ドメインは、管理ドメインから実行するvm_makerユーティリティを使用して管理します。

カーネル仮想マシン(KVM)は、Linuxカーネルのモジュールです。KVMモジュールは/dev/kvmインタフェースを公開することで、プログラムから最新のプロセッサの仮想化機能にアクセスして使用できるようにします。Qemuは、実際にエミュレーションを実行するソフトウェアです。Qemuは、オープン・ソースのマシン・エミュレータおよびバーチャライザです。

すべてのOracle VM管理コマンドは、/opt/exadata_ovm/vm_maker --helpを実行することで表示されます。

注意:

特に記載がない場合、次の手順で実行するすべてのコマンドはrootユーザーとして実行します。

6.1 Oracle Linux KVMおよびOracle Exadata Database Machine

Oracle Exadata Database Machine X8M-2をデプロイする場合は、データベース・サーバーにOracle Linux KVMを実装できます。

すべてのデータベース・サーバーに1つのkvmhostと1つ以上のゲストがインストールされます。Oracle Exadata Deployment Assistant (OEDA)で作成されたスクリプトを使用して初期デプロイメントでOracle Linux KVM環境を構成するか、既存の環境をOracle Linux KVMに移行できます。

注意:

Oracle Linux KVMは、X8M-8などの8ソケット・サーバーではサポートされていません。

6.1.1 Oracle Linux KVMについて

Oracle Linux KVMを使用すると、KVMで管理されるサポート対象の仮想環境内に、Oracle Linuxオペレーティング・システムとアプリケーション・ソフトウェアをデプロイできます。

Oracle Linux KVMOracle Exadata Database Machineで使用する場合、Oracle Linux KVMは、ワークロードにCPU、メモリー、オペレーティング・システムおよびsysadminの分離を提供します。仮想マシン(VM)とネットワークおよびI/Oの優先度付けを組み合せることで、完全なスタック分離を実現できます。統合の場合、Oracle Linux KVMを使用して信頼できる複数のデータベースまたはプラガブル・データベースを作成でき、リソースをより動的に共有できます。

Oracle Exadata System Softwareリリース19.3.0以降のKVMは、RDMA over Converged Ethernet (RoCE)インターコネクトによって構成されたOracle Exadata Database Machineシステムで使用する仮想化テクノロジです。Oracle Linux KVM環境は、管理サーバー(kvmhost)、仮想マシンおよびリソースで構成されます。kvmhostは、軽量でセキュアなサーバー・プラットフォームを提供する管理対象仮想環境です。このプラットフォームでゲストとも呼ばれるVMを実行します。

kvmhostは、ベア・メタル・コンピュータにインストールします。各kvmhostのハイパーバイザは、フットプリントが非常に小さいVMマネージャおよびスケジューラです。システムで唯一完全な権限を持つエンティティとなるように設計されています。CPUとメモリーの使用量、権限の確認、ハードウェア割込みなど、システムの最も基本的なリソースのみを制御します。

ハイパーバイザは、1台のホスト・コンピュータで複数のVMを安全に実行します。各VMは専用のゲストで実行され、専用のオペレーティング・システムを持ちます。kvmhostもハイパーバイザの上位のゲストとして実行されます。kvmhostには、ハードウェアおよびデバイス・ドライバへの特権アクセス権があります。この環境からすべてのゲストを管理します。

ゲストは、RoCEインタフェースにアクセスできる非特権VMです。ゲストは、kvmhostで起動および管理されます。ゲストはその他のVMとは独立して動作するため、ゲストの仮想リソースに適用した構成の変更は、その他のゲストには影響しません。ゲストの障害は、その他のゲストには影響しません。

「ゲスト」、「ドメイン」および「仮想マシン」は、ほとんど同じ意味で使用されます。

KVMの使用時には、同一のkvmhostに最大12個のゲストを配備できます。

ゲストは、kvmhostとともに起動されます。ゲストkvmhostと直接相互作用することはありません。これらの要件は、ハイパーバイザ自体によって処理されます。kvmhostは、ハイパーバイザを管理する手段のみを提供します。

Oracle Exadata Database MachineOracle Linux KVMを作成および構成するには、Oracle Exadata Deployment Assistant (OEDA)を使用します。

6.1.2 Oracle Exadata Database Machineでサポートされる仮想マシンの最大数

RDMA over Converged Ethernet (RoCE)を使用している場合は、最大12台の仮想マシンがサポートされます。

ソフトウェアの前提条件については、My Oracle Supportのドキュメント888828.1を参照してください。

6.1.3 KVMHostでサポートされる操作

手動でkvmhostを変更すると、パフォーマンスの低下やサービスの損失につながる構成の問題が発生する可能性があります。

注意:

Oracleでは、ドキュメント化されている内容以外のkvmhostへの変更はサポートされていません。kvmhostゲストユーザー・ドメインにサードパーティ製アプリケーションをインストールできますが、Oracleソフトウェアにかかわる問題がある場合、Oracle Support Serviceは、その事案のトラブルシューティング中にサードパーティ製アプリケーションの削除を依頼することがあります。

kvmhostでの操作がサポートされているかどうか不明な場合は、Oracleサポート・サービスにお問い合せください。

6.1.4 Oracle Linux KVMリソース

Oracle Linux KVMインフラストラクチャの2つの基本部分であるネットワークとストレージが、Oracle Linux KVMの外部で構成されます。

ネットワーク

Oracle Exadata Deployment Assistant (OEDA)を使用してOracle Exadataラックの構成詳細を指定する場合は、Oracle Linux KVM環境に必要なネットワークIPアドレスの作成方法を入力します。生成されたOEDA設定ファイルはOracle Exadataラックに転送され、ネットワーク・アドレスの作成に使用されます。

ストレージ

Oracle Linux KVMには、仮想マシン(VM)の作成および管理に不可欠な環境リソースを格納する場所が常に必要です。こういったリソースには、ISOファイル(仮想DVDイメージ)、VM構成ファイル、およびVM仮想ディスクがあります。このようなリソースのグループが格納される場所を記憶域リポジトリといいます。

Oracle Exadata Database Machineでは、Oracle Linux KVM用のストレージにXFSファイル・システムを使用します。

Oracle Linux KVM用の記憶領域が必要な場合は、ディスク拡張キットを購入できます。追加のディスク領域を使用すると、/EXAVMIMAGESを拡張してサポートするOracle Linux KVMゲストの数を増やすことや、各ゲスト/u01パーティションのサイズを増やすことができます。

Exadataでサポートされる最大VM数

既存のExadata Database Serverで、Converged Ethernet (RoCE)でRDMAを使用する場合にサポートされるVMの最大数は12です。ソフトウェアの前提条件については、My Oracle Supportのノート888828.1および1270094.1を参照してください。

6.2 ベア・メタルOracle RACクラスタからOracle Linux KVMOracle RACクラスタへの移行

既存のOracle Real Application Clusters (Oracle RAC)クラスタは、KVMで管理する仮想環境に移行できます。

注意:

このトピックは、2ソケットのx86サーバーにのみ適用されます。Oracle Exadata Database Machine X8M-8などの8ソケット・サーバーには適用されません。

ベア・メタルOracle RACクラスタからOracle Linux KVMOracle RACクラスタへの移行は次の方法で実行できます。

  • 既存のベア・メタルOracle RACクラスタを使用してOracle Linux KVMOracle RACクラスタに移行します(停止時間は発生しません)。

  • Oracle Linux KVMに新しいOracle RACクラスタを作成してOracle Linux KVMOracle RACクラスタに移行します(最小限の停止時間が発生します)。

  • Oracle Data Guardを使用してOracle Linux KVMOracle RACクラスタに移行します(最小限の停止時間が発生します)。

  • Oracle Recovery Manager (RMAN)バックアップおよびリストアを使用してOracle Linux KVMOracle RACクラスタに移行します(完全な停止時間が発生します)。

ベア・メタルOracle RACクラスタからOracle Linux KVMOracle RACクラスタに変換することは、次のことを示唆します。

  • 各データベース・サーバーは、kvmhostゲストとともに作成されているOracle Linux KVMサーバーに変換されます。ゲストの数は、デプロイされるOracle RACクラスタの数によって異なります。データベース・サーバー上の各ゲストは、特定のOracle RACクラスタに属します。

  • 変換手順の一環として、最初にベア・メタルOracle RACクラスタがOracle Linux KVM内の1つのOracle RACクラスタに変換されます。データベース・サーバーごとに、1つのゲストが存在するようになります。

  • 変換が終わった後のストレージ・セルのセル・ディスクとグリッド・ディスクの構成は、変換の開始時の構成と同じになります。

  • kvmhostは、各データベース・サーバーの少量のシステム・リソースを使用します。一般に、kvmhostは16GBまたはマシンの利用可能RAMの6%を使用します(どちらか多い方)。また、kvmhostは4個の仮想CPUも使用します。これらのリソース要件は、Oracle Linux KVMOracle RACクラスタで実行するデータベースのSGAのサイズを設定する際に考慮に入れる必要があります。

  • 詳細な手順は、My Oracle Supportノート2099488.1を参照してください。

6.3 実行中のドメインの表示

実行中のドメインのリストを表示するには、vm-makerユーティリティを使用します。

  1. 管理ドメインに接続します。
  2. コマンド/opt/exadata_ovm/vm_maker --list-domainsを実行して、ドメインのリストを表示します。
    # /opt/exadata_ovm/vm_maker --list-domains
    dm01db01vm01.example.com(55)      : running
    dm01db01vm02.example.com(57)      : running
    dm01db01vm03.example.com(59)      : running

    ドメインに対するメモリーまたはCPUの配分を確認するために、次の個別のコマンドがあります。

    • /opt/exadata_ovm/vm_maker --list --memory
    • /opt/exadata_ovm/vm_maker --list --vcpu

6.4 ゲストの起動

手動でゲストを起動することも、kvmhostの起動時に自動的にゲストを起動するように構成することもできます。

  1. kvmhostに接続します。
  2. 手動でゲストを起動する場合は、vm_makerを使用してゲストを起動します。

    次の例のdb01_guest01.example.comは、ゲストの名前です。

    # /opt/exadata_ovm/vm_maker --start-domain db01_guest01.example.com
    [INFO] Running 'virsh start db01_guest01.example.com...
    Domain db01_guest01.example.com started
    
    [INFO] The domain has been started but may not have network connectivity for 
    several minutes.
  3. ゲストの自動起動を構成するには、vm_maker --autostartコマンドを使用します。

    次の例のdb01_guest01.example.comは、ゲストの名前です。

    # /opt/exadata_ovm/vm_maker --autostart db01_guest01.example.com --enable
    [INFO] Running 'virsh autostart db01_guest01.example.com'...
    Domain db01_guest01.example.com marked as autostarted

6.5 起動時のゲスト・コンソールの監視

ゲスト起動時のOracle Linux起動メッセージを表示するには、vm_maker --start-domainコマンドに--consoleオプションを使用します。

  1. rootユーザーとしてkvmhostに接続します。
  2. /opt/exadata_ovm/vm_maker --list-domainsコマンドを使用して、ゲストの名前を取得します。
  3. 次のコマンドを使用して、ゲストの起動の一環としてゲスト・コンソールに接続します。

    次のコマンドのGuestNameは、ゲストの名前です。

    # vm_maker --start-domain GuestName --console
  4. CTRL+]を押して、コンソールの接続を解除します。

6.6 ゲストの自動起動の無効化

kvmhost起動時のゲストの自動起動は無効化できます。

  1. kvmhostに接続します。
  2. vm_makerを使用して、ゲストの自動起動を無効化します。

    次の例のdb01_guest01.example.comは、ゲストの名前です。

    # /opt/exadata_ovm/vm_maker --autostart db01_guest01.example.com --disable
    [INFO] Running 'virsh autostart db01_guest01.example.com --disable'...
    Domain db01_guest01.example.com unmarked as autostarted

6.7 ユーザー・ドメイン内部のユーザー・ドメインのシャットダウン

次の手順では、ユーザー・ドメイン内部でユーザー・ドメインをシャットダウンする方法について説明します。

  1. rootユーザーとしてユーザー・ドメインに接続します。
  2. 次のコマンドを使用して、ドメインをシャットダウンします。
    # shutdown -h now
    

6.8 kvmhostからのゲストのシャットダウン

kvmhostからゲストをシャットダウンできます。

  1. rootユーザーとしてkvmhostに接続します。
  2. 次のコマンドを使用して、ゲストをシャットダウンします。このGuestNameは、ゲストの名前です。
    # /opt/exadata_ovm/vm_maker --stop-domain GuestName

    kvmhostですべてのゲストをシャットダウンするには、次のコマンドを使用します。

    # /opt/exadata_ovm/vm_maker --stop-domain --all

    次に、出力の例を示します。

    [INFO] Running 'virsh shutdown db01_guest01.example.com'...
    Domain db01_guest01.example.com is being shutdown

6.9 Oracle Linux KVMデプロイメントでのkvmhostゲストのバックアップ

Oracle Linux KVMデプロイメントでは、kvmhostとゲストをバックアップする必要があります。

6.9.1 スナップショット・ベースのバックアップを使用したkvmhostのバックアップ

この手順は、kvmhostのスナップショット・ベースのバックアップを作成する方法を示しています。

論理ボリューム/dev/VGExaDb/LVDoNotRemoveOrUseは、スナップショットを作成できるだけの空き領域を常に確保するためのプレースホルダです。dbserver_backup.shを実行すると、プレースホルダLVMがスクリプトによって削除され、それによって生まれた空き領域がスナップショットに使用され、スナップショットの作成後に再びLVMが作成されます。ここで説明する手動手順を実行する場合は、これらのタスクをすべて手動で実行する必要があります。

次のステップで示す値は、例です。rootユーザーとして、すべてのステップを実行する必要があります。

  1. バックアップの保存先を準備します。

    バックアップ先は、書込み可能なNFSの場所など、ローカル・マシンの外部に存在するようにし、バックアップtarファイルを保持できる十分な大きさにする必要があります。カスタマイズされていないパーティションの場合、バックアップを保持するのに必要な領域は約60 GBです。

    次のコマンドを使用して、バックアップ先を準備できます。

    # mkdir -p /remote_FS
    
    # mount -t nfs -o rw,intr,soft,proto=tcp,nolock ip_address:/nfs_location/ /remote_FS
    

    ip_addressは、NFSサーバーのIPアドレスで、nfs_locationは、バックアップを保持するNFSの場所です。

  2. LVDoNotRemoveOrUse論理ボリュームの有無をチェックします。

    このボリュームが存在する場合は、ボリュームを削除してスナップショット用の領域を確保します。次のスクリプトを実行してLVDoNotRemoveOrUse論理ボリュームの有無をチェックし、存在する場合は削除します。

    lvm lvdisplay --ignorelockingfailure /dev/VGExaDb/LVDoNotRemoveOrUse
    if [ $? -eq 0 ]; then
      # LVDoNotRemoveOrUse logical volume exists.
      lvm lvremove -f /dev/VGExaDb/LVDoNotRemoveOrUse
      if [ $? -ne 0 ]; then
           echo "Unable to remove logical volume: LVDoNotRemoveOrUse. Unable to proceed with backup"
      fi
    fi

    LVDoNotRemoveOrUse論理ボリュームが存在しない場合は、その理由を調査し、残りのステップには進みません。

  3. / (ルート)ディレクトリをホストするファイル・システムに、LVDbSys1_snapという名前のスナップショットを作成し、バックアップします

    この例では、LVDbSys1がアクティブ・パーティションであることを前提とします。

    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbSys1_snap /dev/VGExaDb/LVDbSys1
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L DBSYS_SNAP /dev/VGExaDb/LVDbSys1_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/sys
      
      # mount -o nouuid /dev/VGExaDb/LVDbSys1_snap /root/mnt/sys
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/sys
      
    5. ルート・ファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/rootfs-boot.tar.bz2 * /boot > /tmp/backup_tar.stdout 2>
       /tmp/backup_tar.stderr
    6. /tmp/backup_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/sys
      # /bin/rmdir /root/mnt/sys
      # lvremove -f /dev/VGExaDb/LVDbSys1_snap
  4. /varディレクトリをホストするファイル・システムに、LVDbVar1_snapという名前のスナップショットを作成し、バックアップします。
    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbVar1_snap /dev/VGExaDb/LVDbVar1
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L VAR_SNAP /dev/VGExaDb/LVDbVar1_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/var
      
      # mount -o nouuid /dev/VGExaDb/LVDbVar1_snap /root/mnt/var
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/var
      
    5. /varファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/var.tar.bz2 * > /tmp/var_tar.stdout 2>
       /tmp/var_tar.stderr
    6. /tmp/var_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/var
      # /bin/rmdir /root/mnt/var
      # lvremove -f /dev/VGExaDb/LVDbVar1_snap
  5. /var/logディレクトリをホストするファイル・システムに、LVDbVarLog_snapという名前のスナップショットを作成し、バックアップします。
    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbVarLog_snap /dev/VGExaDb/LVDbVarLog
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L VARLOG_SNAP /dev/VGExaDb/LVDbVarLog_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/varlog
      
      # mount -o nouuid /dev/VGExaDb/LVDbVarLog_snap /root/mnt/varlog
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/varlog
      
    5. /var/logファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/varlog.tar.bz2 * > /tmp/varlog_tar.stdout 2>
       /tmp/varlog_tar.stderr
    6. /tmp/varlog_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/varlog
      # /bin/rmdir /root/mnt/varlog
      # lvremove -f /dev/VGExaDb/LVDbVarLog_snap
  6. /var/log/auditディレクトリをホストするファイル・システムに、LVDbVarLogAudit_snapという名前のスナップショットを作成し、バックアップします。
    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbVarLogAudit_snap /dev/VGExaDb/LVDbVarLogAudit
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L VARLOGAUDIT_SNAP /dev/VGExaDb/LVDbVarLogAudit_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/varlogaudit
      
      # mount -o nouuid /dev/VGExaDb/LVDbVarLogAudit_snap /root/mnt/varlogaudit
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/varlogaudit
      
    5. /var/log/auditファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/varlogaudit.tar.bz2 * > /tmp/varlogaudit_tar.stdout 2>
       /tmp/varlogaudit_tar.stderr
    6. /tmp/varlogaudit_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/varlogaudit
      # /bin/rmdir /root/mnt/varlogaudit
      # lvremove -f /dev/VGExaDb/LVDbVarLogAudit_snap
  7. /homeディレクトリをホストするファイル・システムに、LVDbHome_snapという名前のスナップショットを作成し、バックアップします。
    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbHome_snap /dev/VGExaDb/LVDbHome
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L LVDbHome_SNAP /dev/VGExaDb/LVDbHome_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/home
      
      # mount -o nouuid /dev/VGExaDb/LVDbHome_snap /root/mnt/home
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/home
      
    5. /homeファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/home.tar.bz2 * > /tmp/home_tar.stdout 2>
       /tmp/home_tar.stderr
    6. /tmp/home_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/home
      # /bin/rmdir /root/mnt/home
      # lvremove -f /dev/VGExaDb/LVDbHome_snap
  8. NFS共有をアンマウントします。
    # umount /remote_FS
  9. 論理ボリューム/dev/VGExaDb/LVDoNotRemoveOrUseを再作成します。
    # lvm lvcreate -n LVDoNotRemoveOrUse -L2G VGExaDb

6.9.2 Oracle Linux KVMゲストのバックアップ

ホスト上のすべてのゲストのバックアップ、または個々のゲストのバックアップを作成できます。

ゲストをバックアップする方法は3つあります。

  • 方法1: XFS reflinkを使用して一貫性バックアップを取得し、ストレージ・リポジトリのすべてのゲストをバックアップします

    この方法では、/EXAVMIMAGESファイル・システムであるストレージ・リポジトリをバックアップします。この方法では、方法2または3よりもより堅牢で包括的なバックアップが可能です。

    この方法は、kvmhost管理者がゲストのバックアップを担当する場合に最適です。

  • 方法2: XFSファイル・システムのreflinkを使用して一貫性バックアップを取得し、ストレージ・リポジトリの個々のゲストをバックアップします。

    バックアップするゲスト/EXAVMIMAGESファイル・システムから選択します。ゲストは、/EXAVMIMAGES/GuestImages/guest_nameディレクトリにあります。

    この方法は、kvmhost管理者がゲストのバックアップを担当する場合に最適です。

  • 方法3: スナップショット・ベースのバックアップを使用してゲストをバックアップします

    この方法では、ゲスト内からスナップショット・ベースのバックアップを使用して、単一のゲストをバックアップします。

    この方法は、ゲスト管理者がゲストのバックアップを担当している場合に最適です。

6.9.2.1 方法1: すべてのKVMゲストのバックアップ

/EXAVMIMAGESファイル・システムであるストレージ・リポジトリをバックアップすることで、すべてのゲストをバックアップできます。

バックアップ先は、書込み可能なNFSの場所など、ローカル・マシンの外部に存在するようにし、バックアップを保持できる十分な大きさにする必要があります。バックアップに必要な領域は、システムにデプロイされるゲストの数に比例し、最大約3.2TBです。

この手順では、管理ドメインごとに12個以下のゲストがあることを前提としています。

  1. 次のスクリプトを使用して、バックアップ先を準備し、バックアップするゲストを準備します。
    #!/bin/bash
    
    ScriptStarttime=$(date +%s)
    printf "This script is going to remove the directory /EXAVMIMAGES/Backup if it exists.  
    If that is not acceptable, exit the script by typing n, manually remove /EXAVMIMAGES/Backup and 
    come back to rerun the script.  Otherwise, press y to continue :"
    read proceed
    if [[ ${proceed} == "n" ]] || [[ ${proceed} == "N" ]]
    then
      exit 0
    elif [[ ${proceed} != "n" ]] && [[ ${proceed} != "N" ]] && [[ ${proceed} != "y" ]] && [[ ${proceed} != "Y" ]]
    then
      echo "Invalid input"
      exit 1
    fi
    rm -rf /EXAVMIMAGES/Backup
    
    ## Create the Backup Directory
    
    mkdirStartTime=$(date +%s)
    find /EXAVMIMAGES -type d|grep -v 'lost+found'| awk '{print "mkdir -p /EXAVMIMAGES/Backup"$1}'|sh
    mkdirEndTime=$(date +%s)
    mkdirTime=$(expr ${mkdirEndTime} - ${mkdirStartTime})
    echo "Backup Directory creation time :" ${mkdirTime}" seconds"
    
    ## Create reflinks for files not in /EXAVMIMAGES/GuestImages
    
    relinkothesStartTime=$(date +%s)
    
    find /EXAVMIMAGES/ -not -path "/EXAVMIMAGES/GuestImages/*" -not -path "/EXAVMIMAGES/Backup/*" -type f|
    awk '{print "cp --reflink",$0,"/EXAVMIMAGES/Backup"$0}'|sh
    
    relinkothesEndTime=$(date +%s)
    reflinkothesTime=$(expr ${relinkothesEndTime} - ${relinkothesStartTime})
    
    echo "Reflink creation time for files other than in /EXAVMIMAGES/GuestImages :"
     ${reflinkothesTime}" seconds"
    
    for hostName in $(virsh list|egrep -v 'Id|^-'|awk '{print $2}'|sed '/^$/d')
    do
    
    ## Pause the guests
    
      PauseStartTime=$(date +%s)
      virsh suspend ${hostName}
      PauseEndTime=$(date +%s)
      PauseTime=$(expr ${PauseEndTime} - ${PauseStartTime})
      echo "SuspendTime for guest - ${hostName} :" ${PauseTime}" seconds"
    
    ## Create reflinks for all the files in /EXAVMIMAGES/GuestImages
    
      relinkStartTime=$(date +%s)
    
      find /EXAVMIMAGES/GuestImages/${hostName} -type f|awk '{print "cp --reflink", $0,
    "/EXAVMIMAGES/Backup"$0}'|sh
    
      relinkEndTime=$(date +%s)
      reflinkTime=$(expr ${relinkEndTime} - ${relinkStartTime})
      echo "Reflink creation time for guest - ${hostName} :" ${reflinkTime}" seconds"
    
    ## Unpause the guest
    
      unPauseStartTime=$(date +%s)
      virsh resume ${hostName}
      unPauseEndTime=$(date +%s)
      unPauseTime=$(expr ${unPauseEndTime} - ${unPauseStartTime})
      echo "ResumeTime for guest - ${hostName} :" ${unPauseTime}" seconds"
    done
    
    ScriptEndtime=$(date +%s)
    ScriptRunTime=$(expr ${ScriptEndtime} - ${ScriptStarttime})
    echo ScriptRunTime ${ScriptRunTime}" seconds"
  2. スナップショットのバックアップを作成します。

    ステップ1のスクリプトで作成された/EXAVMIMAGES/Backupディレクトリ内のreflinkファイルをリモートの場所にバックアップします。次に例を示します。

    1. /EXAVMIMAGES/Backupの下のすべてのファイルで構成されるtarballファイルを作成します。
    2. tarballをリモートの場所にコピーします。

    これにより、kvmhostが恒久的に失われたり破損した場合にリストア操作が可能になります。

  3. スクリプトによって作成されたreflinkを削除します。
6.9.2.2 方法2: 個々のゲストのバックアップ

/EXAVMIMAGESファイル・システム内の特定のフォルダをバックアップすることで、個々のゲストをバックアップできます。

バックアップ先は、書込み可能なNFSの場所など、ローカル・マシンの外部に存在するようにし、バックアップを保持できる十分な大きさにする必要があります。バックアップに必要な領域は、システムにデプロイされるゲストの数に比例し、最大約3.2TBです。

  1. 次のスクリプトを使用して、バックアップ先を準備し、バックアップするゲストを準備します。
    #!/bin/bash
    
    ScriptStarttime=$(date +%s)
    
    printf "This script is going to remove the directory /EXAVMIMAGES/Backup if it exists. 
    If that is not acceptable, exit the script by typing n, manually remove /EXAVMIMAGES/Backup 
    and come back to rerun the script.  Otherwise, press y to continue :"
    
    read proceed
    
    if [[ ${proceed} == "n" ]] || [[ ${proceed} == "N" ]]
    then
      exit 0
    elif [[ ${proceed} != "n" ]] && [[ ${proceed} != "N" ]] && [[ ${proceed} != "y" ]] && [[ ${proceed} != "Y" ]]
    then
      echo "Invalid input"
      exit 1
    fi
    rm -rf /EXAVMIMAGES/Backup
    printf "Enter the name of the KVM guest to be backed up :"
    read KVMGuestName
    
    ## Create the Backup Directory
    
    if [ ! -d /EXAVMIMAGES/GuestImages/${KVMGuestName} ]
    then
      echo "Guest ${KVMGuestName} does not exist"
    exit 1
    fi
    mkdirStartTime=$(date +%s)
    
    find /EXAVMIMAGES/GuestImages/${KVMGuestName} -type d|grep -v 'lost+found'|awk '{print 
    "mkdir -p /EXAVMIMAGES/Backup"$1}'|sh
    
    mkdirEndTime=$(date +%s)
    mkdirTime=$(expr ${mkdirEndTime} - ${mkdirStartTime})
    echo "Backup Directory creation time :" ${mkdirTime}" seconds"
    
    ## Pause the guest
    
    PauseStartTime=$(date +%s)
    virsh suspend ${KVMGuestName}
    PauseEndTime=$(date +%s)
    PauseTime=$(expr ${PauseEndTime} - ${PauseStartTime})
    echo "PauseTime for guest - ${KVMGuestName} :" ${PauseTime}" seconds"
    
    ## Create reflinks for all the files in /EXAVMIMAGES/GuestImages/${KVMGuestName}
    
    relinkStartTime=$(date +%s)
    
    find /EXAVMIMAGES/GuestImages/${KVMGuestName} -type f|awk '{print "cp --reflink", $0,
    "/EXAVMIMAGES/Backup"$0}'|sh
    
    relinkEndTime=$(date +%s)
    reflinkTime=$(expr ${relinkEndTime} - ${relinkStartTime})
    echo "Reflink creation time for guest - ${KVMGuestName} :" ${reflinkTime}" seconds"
    
    ## Unpause the guest
    
    unPauseStartTime=$(date +%s)
    virsh resume ${KVMGuestName}
    unPauseEndTime=$(date +%s)
    unPauseTime=$(expr ${unPauseEndTime} - ${unPauseStartTime})
    echo "unPauseTime for guest - ${KVMGuestName} :" ${unPauseTime}" seconds"
    
    ScriptEndtime=$(date +%s)
    ScriptRunTime=$(expr ${ScriptEndtime} - ${ScriptStarttime})
    echo ScriptRunTime ${ScriptRunTime}" seconds"
  2. スナップショットのバックアップを作成します。

    ステップ1のスクリプトで作成された/EXAVMIMAGES/Backupディレクトリ内のreflinkファイルをリモートの場所にバックアップします。次に例を示します。

    1. /EXAVMIMAGES/Backupの下のすべてのファイルで構成されるtarballファイルを作成します。
    2. tarballをリモートの場所にコピーします。

    これにより、kvmhostが恒久的に失われたり破損した場合にリストア操作が可能になります。

  3. /EXAVMIMAGES/Backupディレクトリ内のスクリプトによって作成されたreflinkを削除します。
6.9.2.3 方法3: ゲスト内部からのゲストのバックアップ

ゲスト内からゲストのスナップショット・ベースのバックアップを取得できます。これは、ゲストを作業可能な状態にリストアするために使用できます。

すべてのステップは、ゲスト内から実行されます。

注意:

LVMスナップショットを使用してゲスト内からゲストをバックアップする方法は、リカバリの観点から使用に制限があります。このようなバックアップは、ゲストがまだブート可能で、rootユーザーとしてログインできる場合のリカバリ用にのみ使用できます。たとえば、一部のファイルが消失または破損したが、ゲストが起動し、/ (ルート)パーティションおよびブート・パーティションがマウントされた後にtarバックアップからリストアできる場合は、このバックアップをリカバリに使用できます。これに当てはまらず、ゲストがブートしないような損傷の場合、ゲストをリカバリするには、前述の方法1または2を使用して取得したバックアップが必要になり、後述のトピックで説明するリカバリ手順を使用して、ゲストレベルでリカバリ手順を実行する必要があります。

この手順では、次がバックアップされます。

  • プライマリ・ルート・ファイル・システム(LVDbSys1またはLVDbSys2 LVM)
  • /varファイル・システム(LVDbVar1 LVM)
  • /var/logファイル・システム(LVDbVarLog LVM)
  • /var/log/auditファイル・システム(LVDbVarLogAudit LVM)
  • /u01ファイル・システム(LVDbOra1 LVM)
  • /bootパーティション
  • /boot/efiパーティション
  • Grid Infrastructureホーム
  • Oracle Databaseホーム

論理ボリューム/dev/VGExaDb/LVDoNotRemoveOrUseは、スナップショットを作成できるだけの空き領域を常に確保するためのプレースホルダです。dbserver_backup.shを実行すると、プレースホルダLVMがスクリプトによって削除され、それによって生まれた空き領域がスナップショットに使用され、スナップショットの作成後に再びLVMが作成されます。

ここで説明する手動手順を実行する場合は、これらのタスクをすべて手動で実行する必要があります。

次のステップで示す値は、例です。rootユーザーとして、すべてのステップを実行する必要があります。

  1. バックアップの保存先を準備します。

    バックアップ先は、書込み可能なNFSの場所など、ローカル・マシンの外部に存在するようにし、バックアップtarファイルを保持できる十分な大きさにする必要があります。カスタマイズされていないパーティションの場合、バックアップを保持するのに必要な領域は約60 GBです。

    次のコマンドを使用して、バックアップ先を準備できます。次の例で、ip_addressはNFSサーバーのIPアドレス、nfs_locationはバックアップを保持するNFSの場所です。

    # mkdir -p /remote_FS
    
    # mount -t nfs -o rw,intr,soft,proto=tcp,nolock ip_address:/nfs_location/ /remote_FS
  2. LVDoNotRemoveOrUse論理ボリュームの有無をチェックします。

    このボリュームが存在する場合は、ボリュームを削除してスナップショット用の領域を確保します。次のスクリプトを実行してLVDoNotRemoveOrUse論理ボリュームの有無をチェックし、存在する場合は削除します。

    lvm lvdisplay --ignorelockingfailure /dev/VGExaDb/LVDoNotRemoveOrUse
    if [ $? -eq 0 ]; then
      # LVDoNotRemoveOrUse logical volume exists.
      lvm lvremove -f /dev/VGExaDb/LVDoNotRemoveOrUse
      if [ $? -ne 0 ]; then
           echo "Unable to remove logical volume: LVDoNotRemoveOrUse. Unable to proceed with backup"
      fi
    fi

    LVDoNotRemoveOrUse論理ボリュームが存在しない場合は、その理由を調査し、残りのステップには進みません。

  3. / (ルート)ディレクトリをホストするファイル・システムに、LVDbSys1_snapという名前のスナップショットを作成し、バックアップします

    この例では、LVDbSys1がアクティブ・パーティションであることを前提とします。

    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbSys1_snap /dev/VGExaDb/LVDbSys1
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L DBSYS_SNAP /dev/VGExaDb/LVDbSys1_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/sys
      
      # mount -o nouuid /dev/VGExaDb/LVDbSys1_snap /root/mnt/sys
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/sys
      
    5. ルート・ファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/rootfs-boot.tar.bz2 * /boot > /tmp/backup_tar.stdout 2>
       /tmp/backup_tar.stderr
    6. /tmp/backup_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/sys
      # /bin/rmdir /root/mnt/sys
      # lvremove -f /dev/VGExaDb/LVDbSys1_snap
  4. /varディレクトリをホストするファイル・システムに、LVDbVar1_snapという名前のスナップショットを作成し、バックアップします。
    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbVar1_snap /dev/VGExaDb/LVDbVar1
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L VAR_SNAP /dev/VGExaDb/LVDbVar1_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/var
      
      # mount -o nouuid /dev/VGExaDb/LVDbVar1_snap /root/mnt/var
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/var
      
    5. /varファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/var.tar.bz2 * > /tmp/var_tar.stdout 2>
       /tmp/var_tar.stderr
    6. /tmp/var_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/var
      # /bin/rmdir /root/mnt/var
      # lvremove -f /dev/VGExaDb/LVDbVar1_snap
  5. /var/logディレクトリをホストするファイル・システムに、LVDbVarLog_snapという名前のスナップショットを作成し、バックアップします。
    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbVarLog_snap /dev/VGExaDb/LVDbVarLog
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L VARLOG_SNAP /dev/VGExaDb/LVDbVarLog_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/varlog
      
      # mount -o nouuid /dev/VGExaDb/LVDbVarLog_snap /root/mnt/varlog
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/varlog
      
    5. /var/logファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/varlog.tar.bz2 * > /tmp/varlog_tar.stdout 2>
       /tmp/varlog_tar.stderr
    6. /tmp/varlog_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/varlog
      # /bin/rmdir /root/mnt/varlog
      # lvremove -f /dev/VGExaDb/LVDbVarLog_snap
  6. /var/log/auditディレクトリをホストするファイル・システムに、LVDbVarLogAudit_snapという名前のスナップショットを作成し、バックアップします。
    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbVarLogAudit_snap /dev/VGExaDb/LVDbVarLogAudit
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L VARLOGAUDIT_SNAP /dev/VGExaDb/LVDbVarLogAudit_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/varlogaudit
      
      # mount -o nouuid /dev/VGExaDb/LVDbVarLogAudit_snap /root/mnt/varlogaudit
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/varlogaudit
      
    5. /var/log/auditファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/varlogaudit.tar.bz2 * > /tmp/varlogaudit_tar.stdout 2>
       /tmp/varlogaudit_tar.stderr
    6. /tmp/varlogaudit_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/varlogaudit
      # /bin/rmdir /root/mnt/varlogaudit
      # lvremove -f /dev/VGExaDb/LVDbVarLogAudit_snap
  7. /u01ディレクトリをホストするファイル・システムに、LVDbOra1_snapという名前のスナップショットを作成し、バックアップします。
    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbOra1_snap /dev/VGExaDb/LVDbOra1
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L LVDbOra1_SNAP /dev/VGExaDb/LVDbOra1_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/u01
      
      # mount -o nouuid /dev/VGExaDb/LVDbOra1_snap /root/mnt/u01
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/u01
      
    5. /u01ファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/u01.tar.bz2 * > /tmp/u01_tar.stdout 2>
       /tmp/u01_tar.stderr
    6. /tmp/u01_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/u01
      # /bin/rmdir /root/mnt/u01
      # lvremove -f /dev/VGExaDb/LVDbOra1_snap
  8. /homeディレクトリをホストするファイル・システムに、LVDbHome_snapという名前のスナップショットを作成し、バックアップします。
    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LVDbHome_snap /dev/VGExaDb/LVDbHome
      
    2. スナップショットにラベルを付けます。
      # xfs_admin -L LVDbHome_SNAP /dev/VGExaDb/LVDbHome_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/home
      
      # mount -o nouuid /dev/VGExaDb/LVDbHome_snap /root/mnt/home
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/home
      
    5. /homeファイル・システムを含むバックアップ・ファイルを作成します。
      # tar -pjcvf /remote_FS/home.tar.bz2 * > /tmp/home_tar.stdout 2>
       /tmp/home_tar.stderr
    6. /tmp/home_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

      tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。

    7. スナップショットをアンマウントして、ルート・ディレクトリからスナップショットを削除します。
      # cd /
      # umount /root/mnt/home
      # /bin/rmdir /root/mnt/home
      # lvremove -f /dev/VGExaDb/LVDbHome_snap
  9. NFS共有をアンマウントします。
    # umount /remote_FS
  10. 論理ボリューム/dev/VGExaDb/LVDoNotRemoveOrUseを再作成します。
    # lvm lvcreate -n LVDoNotRemoveOrUse -L2G VGExaDb

6.10 KVMゲストでのOracleデータベースのバックアップおよびリストア

KVMゲストのOracleデータベースのバックアップとリストアは、物理ノードのOracleデータベースのバックアップとリストアと同じです。

6.11 ゲストへのメモリー割当ての変更

ゲストへのメモリー割当ては、vm_makerを使用して変更できます。

この操作には、ゲストの再起動が必要です。メモリー構成の変更後に、vm_makerゲストを再起動することもできます。

  1. kvmhostに接続します。
  2. ゲストで使用するメモリーの量を増やす場合は、次のコマンドを使用して、利用可能なメモリーの空き容量を確認します。
    # /opt/exadata_ovm/vm_maker --list --memory

    この出力では、Available memory (now)Available memory (delayed)の間の最小値が空きメモリーの限度になります。

    注意:

    ゲストに空きメモリーを割り当てるときには、メタデータとコントロール構造を格納するために、約1%から2%の空きメモリーを確保しておいてください。
  3. ゲストに使用するメモリーの量を減らす場合は、まず、ゲストで実行しているデータベースのメモリー使用量を確認して調整する必要があります。
    1. データベースのSGAサイズを確認し、そのサイズを必要に応じて縮小します。
    2. データベースのヒュージ・ページ・オペレーティング・システム構成を確認し、必要に応じて縮小します。
    ゲストで実行しているメモリー要件を最初に縮小しておかないと、ゲストは再起動に失敗することがあります。これは、Oracle Linuxオペレーティング・システムの起動時に、ヒュージ・ページ用に大量のメモリーを確保しようとするためです。詳細は、My Oracle SupportのドキュメントID 361468.1を参照してください。
  4. メモリーの新しいサイズを指定します。

    たとえば、db01_guest01.example.comゲストに使用するメモリーを32GBに増やす場合は、次のコマンドを使用します。

    # /opt/exadata_ovm/vm_maker --set --memory 32G --domain db01_guest01.example.com --restart-domain

    このコマンドではゲストをシャットダウンし、メモリー設定を変更して、ゲストを再起動します。

6.12 ゲストへの仮想CPU割当て数の変更

ゲストに割り当てられた仮想CPUの数は、vm_maker --set vcpuコマンドで動的に変更できます。

ゲストに割り当てられた仮想CPUの数を変更するアクションのすべては、kvmhostで実行します。

仮想CPUをオーバーコミットすると、すべてのゲストに割り当てられた仮想CPUを、システム上の物理CPU数より多く割り当てることができます。ただし、CPUのオーバーコミットは、過剰に収容されたリソースへの競合するワークロードが十分理解され、同時に発生する要求が物理能力を超えない場合にのみ、実行する必要があります。

  1. 物理CPUの数を調べます。
    # /opt/exadata_ovm/vm_maker --list vcpu --domain db01_guest01.example.com
  2. 割り当てられた仮想CPUの数を変更します。
    仮想CPUの数は2の倍数である必要があります。

    たとえば、db01_guest01.example.comゲストに割り当てる仮想CPUの数を4に変更する場合は、次のコマンドを使用します。

    # /opt/exadata_ovm/vm_maker --set vcpu 4 --domain db01_guest01.example.com

6.13 ゲストのディスク領域の増加

KVMゲストのローカル領域は、ローカル・ディスク・イメージを追加することにより、初期デプロイメント後に拡張できます。

6.13.1 新規LVMディスクのゲストへの追加

新しいLVMディスクをゲストに追加すると、ゲストで使用可能なLVMディスク領域の量を増やすことができます。

ファイル・システムまたはスワップLVMパーティションのサイズを拡大するために、ゲストにLVMディスクを追加できます。これはシステムがオンラインの場合に実行できます。

注意:

この手順には、kvmhostで実行するステップとゲストで実行するステップが必要です。

すべてのステップを、rootユーザーとして実行してください。

  1. kvmhostで、/EXAVMIMAGESの空きディスク領域を確認します。
    # df -h /EXAVMIMAGES

    次に、コマンドの出力例を示します。

    Filesystem                           Size  Used Avail Use%  Mounted on
    /dev/mapper/VGExaDb-LVDbExaVMImages  1.5T   39G  1.5T   3%  /EXAVMIMAGES
  2. kvmhostで、新しいディスク・イメージを作成してゲストにアタッチします。

    たとえば、次のコマンドでは、ゲストdm01db01vm01.example.comにディスク・イメージpv2_vgexadb.imgが追加されます。

    # /opt/exadata_ovm/vm_maker --create --disk-image /EXAVMIMAGES/pv2_vgexadb.img
     --attach --domain dm01db01vm01.example.com
    [INFO] Allocating an image for /EXAVMIMAGES/pv2_vgexadb.img, size 50.000000G...
    [INFO] Running 'qemu-img create /EXAVMIMAGES/pv2_vgexadb.img 50.000000G '...
    [INFO] Create label gpt on /EXAVMIMAGES/pv2_vgexadb.img.
    [INFO] Running 'parted -a none -s /EXAVMIMAGES/pv2_vgexadb.img mklabel gpt'...
    [INFO] Running 'losetup -P -f /EXAVMIMAGES/pv2_vgexadb.img'...
    [INFO] Finding loop device...
    [INFO] loop device is /dev/loop0
    [INFO] Finding number of sectors...
    [INFO] 104857600 sectors
    [INFO] Releasing loop device /dev/loop0...
    [INFO] Removing device maps for /dev/loop0...
    [INFO] Running 'kpartx -d -v /dev/loop0'...
    [INFO] Removing loop device /dev/loop0...
    [INFO] ##
    [INFO] ## Finished .
    [INFO] ##
    [INFO] Created image /EXAVMIMAGES/pv2_vgexadb.img
    [INFO] File /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.img is a reflink from 
    /EXAVMIMAGES/pv2_vgexadb.img and added as disk to domain dm01db01vm01.example.com
    [INFO] -------- MANUAL STEPS TO BE COMPLETED FOR MOUNTING THE DISK WITHIN DOMU dm01db01vm01
    .example.com --------
    [INFO] 1. Check a disk with name /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk exists.
    [INFO] - Run the command 'lvdisplay' to verify a disk with name '/dev/VGExaDbDisk.pv2_vgexadb.img/
    LVDBDisk' exists.
    [INFO] 2. Create a directory that will to be used for mounting the new disk.
    [INFO] 3. Add the following line to /etc/fstab: /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk <mount_
    point_from_step_2> <fstype> defaults 1 1
    [INFO] 4. Mount the newly added disk to mount point through the command: mount -a.
  3. kvmhostで、ゲストに使用可能なディスク・イメージをリストします。

    たとえば、ゲストdm01db01vm01.example.comのディスク・イメージをリストするには、次のようにします。

    # /opt/exadata_ovm/vm_maker --list --disk-image --domain dm01db01vm01.example.com
    File /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/System.img
    File /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/grid19.2.0.0.0.img
    File /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/db19.2.0.0.0-3.img
    File /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv1_vgexadb.img
    File /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.img
  4. 新しく追加されたディスクを識別します。

    この例では、pv2_vgexadb.imgが新しく追加されたディスク・イメージの名前です。

    # lvdisplay /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk
      LV Path /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk
      LV Name LVDBDisk
      VG Name VGExaDbDisk.pv2_vgexadb.img
      LV UUID u3RBKF-UmCK-JQxc-iFf5-6WqS-GWAw-3nLjdn
      LV Write Access read/write
      LV Creation host, time dm01db01vm01.example.com, 2019-10-28 04:11:28 -0700
      LV Status available
      # open 0
      LV Size <50.00 GiB
      Current LE 12799
      Segments 1
      Allocation inherit
      Read ahead sectors auto
      - currently set to 256
      Block device 252:14
  5. このディスクを使用して既存のボリューム・グループを拡張するには、追加したディスク用に作成されたLVMおよびボリューム・グループを最初に削除する必要があります
    1. LVMを削除します。

      この例では、以前に追加されたpv2_vgexadb.imgディスク・イメージ用に作成されたLVMを削除します。

      root@dm01db01vm01 ~]# lvremove /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk
      Do you really want to remove active logical volume VGExaDbDisk.pv2_vgexadb.img/LVDBDisk? [y/n]: y
        Logical volume "LVDBDisk" successfully removed
    2. LVMに付属するボリューム・グループを削除します。

      この例では、VGExaDbDisk.pv2_vgexadb.imgボリューム・グループを削除します。

      root@dm01db01vm01 ~]# vgremove VGExaDbDisk.pv2_vgexadb.img
        Volume group "VGExaDbDisk.pv2_vgexadb.img" successfully removed

      この時点で残っているのは、論理ボリュームもボリューム・グループもない物理ボリュームのみです。pvdisplayを実行すると、物理ボリュームは自分自身をNEW Physical volumeとして識別します。

      pvdisplay:
        
          "/dev/sdf1" is a new physical volume of "<50.00 GiB"
        --- NEW Physical volume ---
        PV Name /dev/sdf1
        VG Name
        PV Size <50.00 GiB
        Allocatable NO
        PE Size 0
        Total PE 0
        Free PE 0
        Allocated PE 0
        PV UUID tfb8lM-eHe9-SPch-8UAu-pkHe-dAYx-ru3Sez
  6. ゲストで、物理ボリュームを使用してボリューム・グループを拡張してから、ボリューム・グループの追加領域を確認します。

    次の例では、物理ボリュームはデバイス名sdf1を使用します(ステップ5を参照)。

    # vgextend VGExaDb /dev/sdf1
      Volume group "VGExaDb" successfully extended
    
    # vgdisplay -s
      "VGExaDb" <139.24 GiB [88.00 GiB used / <51.24 GiB free]
      "VGExaDbDisk.pv2_vgexadb.img" 1020.00 MiB [1020.00 MiB used / 0 free]
      "VGExaDbDisk.grid-klone-Linux-x86-64-190000.50.img" <50.00 GiB [<50.00 GiB used / 0 free]
      "VGExaDbDisk.db-klone-Linux-x86-64-190000.50.img" <50.00 GiB [<50.00 GiB used / 0 free]

6.13.2 rootファイル・システムのサイズの増加

この手順では、システム・パーティションおよび/ (ルート)ファイル・システムのサイズを増やす方法について説明します。

これはファイル・システムがオンラインの場合に実行できます。

注意:

2種類のシステム・パーティション、LVDbSys1およびLVDbSys2が使用できます。片方のパーティションがアクティブでマウントされます。もう一方のパーティションは非アクティブで、アップグレード中、バックアップする場所として使用します。この2つのシステム・パーティションは、サイズが等しい必要があります。

VGExaDbボリューム・グループ内に、少なくとも1GBの空き領域が必要です。空き領域は、ソフトウェア保守の際に、dbnodeupdate.shユーティリティで作成したLVMスナップショットで使用します。「Oracle Linuxデータベース・サーバーのスナップショット・ベースのバックアップの作成」の手順に従い、/ (root)および/u01ディレクトリのバックアップをスナップショット・ベースで作成する場合、VGExaDbボリューム・グループに少なくとも6GBの空き領域が必要です。

  1. 現在の環境に関する情報を収集します。
    1. dfコマンドを使用して、ルート・パーティション(/)の空き領域および使用済領域の容量を確認します
      # df -h /
      

      次に、コマンドの出力例を示します。

      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/VGExaDb-LVDbSys1
                             12G  5.1G  6.2G  46% / 
      

      注意:

      アクティブなrootパーティションは、それ以前の保守アクティビティによりLVDbSys1またはLVDbSys2のいずれかに決定されます。

    2. lvsコマンドを使用して、現在の論理ボリューム構成を表示します。
      # lvs -o lv_name,lv_path,vg_name,lv_size
      

      次に、コマンドの出力例を示します。

      LV        Path                   VG      LSize 
      LVDbOra1  /dev/VGExaDb/LVDbOra1  VGExaDb 10.00g
      LVDbSwap1 /dev/VGExaDb/LVDbSwap1 VGExaDb  8.00g
      LVDbSys1  /dev/VGExaDb/LVDbSys1  VGExaDb 12.00g
      LVDbSys2  /dev/VGExaDb/LVDbSys2  VGExaDb 12.00g 
      
  2. ボリューム・グループVGExaDbの使用可能な領域を確認するには、vgdisplayコマンドを使用します。
    # vgdisplay VGExaDb -s
    

    次に、コマンドの出力例を示します。

    "VGExaDb" 53.49 GiB [42.00 GiB used / 11.49 GiB free]
    

    ボリューム・グループは、2つのシステム・パーティションのサイズを増やすことができる空き領域を持ち、アップグレードの際にdbnodeupdate.shユーティリティで作成されるLVMスナップショットで使用するために、少なくとも1GBの空き領域を維持する必要があります。ボリューム・グループに十分な空き領域がない場合、新しいディスクをLVMに追加する必要があります。

  3. LVDbSys1およびLVDbSys2論理ボリュームのサイズを変更するには、lvextendコマンドを使用します。
    # lvextend -L +size /dev/VGExaDb/LVDbSys1
    # lvextend -L +size /dev/VGExaDb/LVDbSys2
    

    前述のコマンドで、sizeは論理ボリュームに追加する領域の容量です。いずれのシステム・パーティションにも、等しい容量の領域を追加します。

    次の例では、拡大する論理ボリュームは10GBです。

    # lvextend -L +10G /dev/VGExaDb/LVDbSys1
    # lvextend -L +10G /dev/VGExaDb/LVDbSys2
    
  4. 論理ボリューム内のファイル・システムのサイズを変更するには、resize2fsコマンドを使用します。
    # resize2fs /dev/VGExaDb/LVDbSys1
    # resize2fs /dev/VGExaDb/LVDbSys2
    
  5. dfコマンドを使用して、アクティブなシステム・パーティションで領域が拡大されたことを確認します。
    # df -h /
    

6.13.3 /u01ファイル・システムのサイズの増加

この手順では、Oracle Linux KVM/u01ファイル・システムのサイズを増やす方法について説明します。

これはファイル・システムがオンラインの場合に実行できます。

注意:

VGExaDbボリューム・グループ内に、少なくとも1GBの空き領域が必要です。空き領域は、ソフトウェア保守の際に、dbnodeupdate.shユーティリティで作成したLVMスナップショットで使用します。「Oracle Linuxデータベース・サーバーのスナップショット・ベースのバックアップの作成」の手順に従い、/ (root)および/u01ディレクトリのバックアップをスナップショット・ベースで作成する場合、VGExaDbボリューム・グループに少なくとも6GBの空き領域が必要です
  1. 現在の環境に関する情報を収集します。
    1. dfコマンドを使用して、/u01パーティションの空き領域および使用済領域の容量を確認します。
      # df -h /u01
      

      次に、コマンドの出力例を示します。

      Filesystem            Size  Used Avail Use% Mounted on
      /dev/mapper/VGExaDb-LVDbOra1
                            9.9G  1.7G  7.8G  18% /u01
      
    2. lvsコマンドを使用して、/u01ファイル・システムで使用される現在の論理ボリューム構成を表示します。
      # lvs -o lv_name,lv_path,vg_name,lv_size /dev/VGExaDb/LVDbOra1
      

      次に、コマンドの出力例を示します。

      LV        Path                  VG       LSize 
      LVDbOra1 /dev/VGExaDb/LVDbOra1  VGExaDb 10.00g
      
  2. ボリューム・グループVGExaDbの使用可能な領域を確認するには、vgdisplayコマンドを使用します。
    # vgdisplay VGExaDb -s
    

    次に、コマンドの出力例を示します。

    "VGExaDb" 53.49 GiB [42.00 GiB used / 11.49 GiB free]
    

    コマンドの出力で空き領域が1GB未満と表示された場合は、論理ボリュームもファイル・システムも拡大できません。アップグレードの際にdbnodeupdate.shユーティリティで作成されるLVMスナップショットのために、VGExaDbボリューム・グループ内に、少なくとも1GBの空き領域が必要です。ボリューム・グループに十分な空き領域がない場合、新しいディスクをLVMに追加する必要があります。

  3. 論理ボリュームのサイズを変更するには、lvextendコマンドを使用します。
    # lvextend -L +sizeG /dev/VGExaDb/LVDbOra1
    

    前述のコマンドで、sizeは論理ボリュームに追加する領域の容量です。

    次の例では、拡大する論理ボリュームは10GBです。

    # lvextend -L +10G /dev/VGExaDb/LVDbOra1
    
  4. xfs_growfsコマンドを使用して、パーティションのサイズを変更します。
    # xfs_growfs /u01
    
  5. dfコマンドを使用して、領域が拡張されたことを確認します。
    # df -h /u01
    

6.13.4 Oracle Grid InfrastructureホームまたはDatabaseホーム・ファイル・システムのサイズの増加

Oracle Linux KVMゲストOracle Grid InfrastructureまたはOracle Databaseホームのファイル・システムのサイズを増やすことができます。

Oracle Grid Infrastructureソフトウェア・ホームおよびOracle Databaseソフトウェア・ホームのために、それぞれのディスク・イメージ・ファイルがkvmhostに作成されます。ディスク・イメージ・ファイルの場所は、/EXAVMIMAGES/GuestImages/DomainName/ディレクトリです。ディスク・イメージ・ファイルは、仮想マシンの起動時に自動的にゲストにアタッチされ、LVMではない別個のファイル・システムとしてゲストにマウントされます。

  1. guestに接続し、dfコマンドを使用してファイル・システムのサイズを確認します。ここで、$ORACLE_HOMEは、Oracle Databaseホームのディレクトリを指す環境変数です(/u01/app/oracle/product/19.0.0.0/dbhome_1など)。
    # df -h $ORACLE_HOME
    

    次に、コマンドの出力例を示します。

    Filesystem  Size  Used Avail Use% Mounted on
    /dev/mapper/VGExaDbDisk.grid--klone--Linux--x86--64--190000.50.img-LVDBDisk 50G 5.9G 45G 12% 
    /u01/app/19.0.0.0/grid
    /dev/mapper/VGExaDbDisk.db--klone--Linux--x86--64--190000.50.img-LVDBDisk 50G 6.5G 44G 13% 
    /u01/app/oracle/product/19.0.0.0/DbHome_3
  2. kvmhostに接続して、ゲストをシャットダウンします。
    # opt/exadata_ovm/vm_maker --stop-domain DomainName
    
  3. kvmhostで、新しいディスク・イメージを作成してゲストにアタッチします。

    たとえば、次のコマンドでは、ゲストdm01db01vm01.example.comにディスク・イメージdb03.imgが追加されます。

    # /opt/exadata_ovm/vm_maker --create --disk-image /EXAVMIMAGES/db03.img --attach 
    --domain dm01db01vm01.example.com
    [INFO] Allocating an image for /EXAVMIMAGES/db03.img, size 50.000000G...
    [INFO] Running 'qemu-img create /EXAVMIMAGES/db03.img 50.000000G '...
    [INFO] Create label gpt on /EXAVMIMAGES/db03.img.
    [INFO] Running 'parted -a none -s /EXAVMIMAGES/db03.img mklabel gpt'...
    [INFO] Running 'losetup -P -f /EXAVMIMAGES/rk02.img'...
    [INFO] Finding loop device...
    [INFO] loop device is /dev/loop0
    [INFO] Finding number of sectors...
    [INFO] 104857600 sectors
    [INFO] Releasing loop device /dev/loop0...
    [INFO] Removing device maps for /dev/loop0...
    [INFO] Running 'kpartx -d -v /dev/loop0'...
    [INFO] Removing loop device /dev/loop0...
    [INFO] ##
    [INFO] ## Finished .
    [INFO] ##
    [INFO] Created image /EXAVMIMAGES/db03.img
    [INFO] File /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/db03.img is a reflink from 
    /EXAVMIMAGES/db03.img and added as disk to domain dm01db01vm01.example.com
    [INFO] -------- MANUAL STEPS TO BE COMPLETED FOR MOUNTING THE DISK WITHIN DOMU dm01db01vm01
    .example.com --------
    [INFO] 1. Check a disk with name /dev/VGExaDbDisk.db03.img/LVDBDisk exists.
    [INFO] - Run the command 'lvdisplay' to verify a disk with name '/dev/VGExaDbDisk.db03.img/
    LVDBDisk' exists.
    [INFO] 2. Create a directory that will to be used for mounting the new disk.
    [INFO] 3. Add the following line to /etc/fstab: /dev/VGExaDbDisk.db03.img/LVDBDisk <mount_
    point_from_step_2> <fstype> defaults 1 1
    [INFO] 4. Mount the newly added disk to mount point through the command: mount -a.
  4. 新しく追加されたディスク・デバイスを識別します。

    この例では、db03.imgが新しく追加されたディスク・イメージの名前です。

    # lvdisplay /dev/VGExaDbDisk.db03.img/LVDBDisk
      LV Path /dev/VGExaDbDisk.db03.img/LVDBDisk
      LV Name LVDBDisk
      VG Name VGExaDbDisk.db03.img
      LV UUID u3RBKF-UmCK-JQxc-iFf5-6WqS-GWAw-3nLjdn
      LV Write Access read/write
      LV Creation host, time dm01db01vm01.example.com, 2019-10-28 04:11:28 -0700
      LV Status available
      # open 0
      LV Size <50.00 GiB
      Current LE 12799
      Segments 1
      Allocation inherit
      Read ahead sectors auto
      - currently set to 256
      Block device 252:14
  5. このディスクを使用して既存のボリューム・グループを拡張するには、追加したディスク用に作成されたLVMおよびボリューム・グループを最初に削除する必要があります
    1. LVMを削除します。

      この例では、以前に追加されたdb03.imgディスク・イメージ用に作成されたLVMを削除します。

      root@dm01db01vm01 ~]# lvremove /dev/VGExaDbDisk.db03.img/LVDBDisk
      Do you really want to remove active logical volume VGExaDbDisk.db03.img/LVDBDisk? [y/n]: y
        Logical volume "LVDBDisk" successfully removed
    2. LVMに付属するボリューム・グループを削除します。

      この例では、VGExaDbDisk.db03.imgボリューム・グループを削除します。

      root@dm01db01vm01 ~]# vgremove VGExaDbDisk.db03.img
        Volume group "VGExaDbDisk.db03.img" successfully removed

      この時点で残っているのは、論理ボリュームもボリューム・グループもない物理ボリュームのみです。pvdisplayを実行すると、物理ボリュームは自分自身をNEW Physical volumeとして識別します。

      pvdisplay:
        
          "/dev/sdf4" is a new physical volume of "<50.00 GiB"
        --- NEW Physical volume ---
        PV Name /dev/sdf4
        VG Name
        PV Size <50.00 GiB
        Allocatable NO
        PE Size 0
        Total PE 0
        Free PE 0
        Allocated PE 0
        PV UUID tfb8lM-eHe9-SPch-8UAu-pkHe-dAYx-ru3Sez
  6. ゲストで、物理ボリュームを使用してボリューム・グループを拡張してから、ボリューム・グループの追加領域を確認します。

    次の例では、物理ボリュームはデバイス名sdf4を使用します(ステップ6を参照)。

    # vgextend VGExaDb /dev/sdf4
      Volume group "VGExaDb" successfully extended
    
    # vgdisplay -s
      "VGExaDb" <139.24 GiB [88.00 GiB used / <51.24 GiB free]
      "VGExaDbDisk.db03.img" 1020.00 MiB [1020.00 MiB used / 0 free]
      "VGExaDbDisk.grid-klone-Linux-x86-64-190000.50.img" <50.00 GiB [<50.00 GiB used / 0 free]
      "VGExaDbDisk.db-klone-Linux-x86-64-190000.50.img" <50.00 GiB [<50.00 GiB used / 0 free]
  7. 論理ボリュームのサイズを変更するには、lvextendコマンドを使用します。
    # lvextend -L +sizeG /dev/VGExaDb/LVDbOra1
    

    前述のコマンドで、sizeは論理ボリュームに追加する領域の容量です。

    次の例では、拡大する論理ボリュームは10GBです。

    # lvextend -L +10G /dev/VGExaDb/LVDbOra1
    
  8. xfs_growfsコマンドを使用して、パーティションのサイズを変更します。
    # xfs_growfs /u01/app/oracle/product/19.0.0.0/DbHome_3
    
  9. ゲストを起動します。
    # /opt/exadata_ovm/vm_maker --start-domain DomainName --console
    
  10. ゲストに接続して、ファイル・システムのサイズが拡大されていることを確認します。
    # df -h $ORACLE_HOME
    

    次に、コマンドの出力例を示します。

    Filesystem                                                
       Size  Used Avail Use% Mounted on
    /dev/mapper/VGExaDbDisk.db--klone--Linux--x86--64--190000.50.img-LVDBDisk 
       60G   6.5G 53G   10%  /u01/app/oracle/product/19.0.0.0/DbHome_3
  11. kvmhostに接続して、バックアップ・イメージを削除します。

    次のようなコマンドを使用します。pre_resize.db19.0.0.imgは、ステップ3で作成したバックアップ・イメージ・ファイルの名前です。

    # cd /EXAVMIMAGES/GuestImages/DomainName
    # rm pre_resize.db19.0.0.img

6.13.5 スワップ領域のサイズの増加

ゲストで構成されたスワップの量は増やすことができます。

  1. ボリューム・グループVGExaDbの使用可能な領域を確認するには、vgdisplayコマンドを使用します。
    # vgdisplay VGExaDb -s
    

    次に、コマンドの出力例を示します。

    "VGExaDb" 53.49 GiB [42.00 GiB used / 11.49 GiB free]
    

    コマンドの出力で空き領域が1GB未満と表示された場合は、論理ボリュームもファイル・システムも拡大できません。アップグレードの際にdbnodeupdate.shユーティリティで作成されるLVMスナップショットのために、VGExaDbボリューム・グループ内に、少なくとも1GBの空き領域が必要です。ボリューム・グループに十分な空き領域がない場合、新しいディスクをLVMに追加する必要があります。

  2. 論理ボリュームを作成してスワップ領域のサイズを大きくするには、次のように、lvcreateコマンドを使用します。

    次の例では、LVDbSwap2という名前の8GBの論理ボリュームが新たに作成されます。

    # lvcreate -L 8G -n LVDbSwap2 VGExaDb
    
  3. SWAP2のような一意のラベルのスワップ・デバイスとして論理ボリュームを新たに設定するには、次のように、mkswapコマンドを使用します。一意のラベルは、/etc/fstabファイルで現在使用されていないデバイスのLABELエントリです。
    # mkswap -L SWAP2 /dev/VGExaDb/LVDbSwap2
    
  4. 新しいスワップ・デバイスを有効にするには、swaponコマンドを使用します。
    # swapon -L SWAP2
    
  5. 新しいスワップ・デバイスが有効であることを確認するには、swaponコマンドを使用します。
    # swapon -s
    

    次に、コマンドの出力例を示します。

    Filename         Type            Size      Used     Priority
    /dev/dm-3        partition       8388604   306108   -1
    /dev/dm-4        partition       8388604   0         -2
    
  6. /etc/fstabファイルを編集して、存在するスワップ・エントリをコピーして新しいスワップ・デバイスを追加し、新しいスワップ・デバイスの作成で使用したラベルへの新しいエントリのLABEL値を変更します。次の例では、新しいスワップ・デバイスが、/etc/fstabファイルにLABEL=SWAP2として追加されます。
    # cat /etc/fstab
    LABEL=DBSYS   /                       ext4    defaults        1 1
    LABEL=BOOT    /boot                   ext4    defaults,nodev        1 1
    tmpfs         /dev/shm                tmpfs   defaults,size=7998m 0
    devpts        /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs         /sys                    sysfs   defaults        0 0
    proc          /proc                   proc    defaults        0 0
    LABEL=SWAP    swap                    swap    defaults        0 0
    LABEL=SWAP2   swap                    swap    defaults        0 0
    LABEL=DBORA   /u01                    ext4    defaults        1 1
    /dev/xvdb     /u01/app/12.1.0.2/grid  ext4    defaults        1 1
    /dev/xvdc       /u01/app/oracle/product/12.1.0.2/dbhome_1       ext4   defaults        1 1
    

6.14 kvmhostでの/EXAVMIMAGESの拡張

kvmhost/EXAVMIMAGESファイル・システムを拡張できます。

デプロイメント時に、データベース・サーバー上の使用可能なディスク領域はすべてkvmhostに割り当てられ、その領域のほとんどがゲスト・ストレージ用の/EXAVMIMAGESに割り当てられます。/EXAVMIMAGESファイル・システムが/dev/VGExaDb/LVDbExaVMImagesに作成されます。この手順は、/EXAVMIMAGESに割り当てる未使用の領域がある場合にのみ使用します。

次の例のdm01db01は、kvmhostの名前です。また、dm01db01vm01ゲストです。

  1. ディスク拡張キットをデータベース・サーバーに追加します。
    キットには4台のハード・ドライブが含まれており、これを空いている4つのスロットに挿入します。フィラー・パネルを取り外し、ドライブを挿入します。ドライブは順不同で挿入できます。
  2. アラート履歴の警告およびクリア・メッセージを参照し、RAIDの再構築が完了したことを確認します。

    完了までに数時間かかることもあります。次の例では約7時間かかっています。クリア・メッセージ(下のメッセージ1_2)がある場合は、再構築が完了しているため、次の手順を実行できます。

    [root@dm01db01 ~]# dbmcli -e list alerthistory
    
             1_1     2016-02-15T14:01:00-08:00       warning         "A disk
     expansion kit was installed. The additional physical drives were automatically
     added to the existing RAID5 configuration, and reconstruction of the
     corresponding virtual drive was automatically started."
    
             1_2     2016-02-15T21:01:01-08:00       clear           "Virtual drive
     reconstruction due to disk expansion was completed."
    
  3. 現在の環境に関する情報を収集します。
    [root@dm01db01 ~]# df -h /EXAVMIMAGES
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sda3             1.6T   44G  1.5T   3% /EXAVMIMAGES
    
    [root@dm01db01 ~]# /opt/exadata_ovm/vm_maker --list --domain domain_name --detail
    
  4. kvmhostからvm_makerを実行して、すべてのゲストを停止します。

    すべてのゲストが停止されると、kvmhostのみがリスト表示されます。

    [root@dm01db01 ~]# /opt/exadata_ovm/vm_maker --stop-domain -all
    All domains terminated
    
    [root@dm01db01 ~]# /opt/exadata_ovm/vm_maker --list --domain
    
  5. partedを実行して、セクターの開始値および終了値を表示します。

    3番目のパーティションの終わりに対してのディスクのサイズを確認します。GPTを修復するリクエストが表示された場合は、Fで応答します。

    root@dm01db01 ~]# parted /dev/sda 
    GNU Parted 2.1Using /dev/sda
    Welcome to GNU Parted! Type 'help' to view a list of commands.
    (parted) unit s 
    (parted) print
    Warning: Not all of the space available to /dev/sda appears to be used, you can
    fix the GPT to use all of the space (an extra 4679680000 blocks) or continue
    with the current setting? Fix/Ignore? F  
    
    Model: LSI MR9361-8i (scsi) 
    Disk /dev/sda: 8189440000s 
    Sector size (logical/physical): 512B/512B 
    Partition Table: gpt 
    
    Number  Start       End           Size         File system  Name     Flags 
    1       64s         1046591s      1046528s     ext3         primary  boot 
    4       1046592s    1048639s      2048s                     primary  bios_grub
    2       1048640s    240132159s    239083520s                primary  lvm 
    
    (parted) q

    前述のパーティション表に、パーティション2がセクター240132159で終了し、ディスク・サイズが8189440000セクターと表示されています。これらの値はステップ7で使用します。

  6. 4番目のパーティションを作成します。
    開始セクターは、ステップ6の3番目のパーティションの終わりに1セクター加算します(240132159+1=240132160)。4番目のパーティションの終了セクターは、ディスクのサイズから34減算します(8189440000-34=8189439966)。
    [root@dm01db01 ~]# parted -s /dev/sda mkpart primary 240132160s 8189439966s 

    このコマンドは出力を生成しません。

  7. 4番目のパーティションのLVMフラグを設定します。
    [root@dm01db01 ~]# parted -s /dev/sda set 3 lvm on
    Warning: WARNING: the kernel failed to re-read the partition table on /dev/sda (Device or
     resource busy).  As a result, it may not reflect all of your changes until after reboot.
  8. 更新されたパーティション表を確認します。
    [root@dm01db01 ~]# parted -s /dev/sda unit s print
    Model: LSI MR9361-8i (scsi)
    Disk /dev/sda: 8189440000s
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt 
    Number  Start        End          Size         File system  Name     Flags
    1       64s         1046591s      1046528s     ext4         primary  boot 
    4       1046592s    1048639s      2048s                     primary  bios_grub
    2       1048640s    240132159s    239083520s                primary  lvm 
    3       240132160s  8189439966s   7949307807s               primary  lvm
    
  9. Exadataサーバーを再起動します。
    [root@dm01db01 ~]# shutdown -r now
  10. 4番目のパーティションの終わりに対してのディスクのサイズを確認します。
    [root@dm01db01 ~]# parted -s /dev/sda unit s print
    Model: LSI MR9361-8i (scsi)
    Disk /dev/sda: 8189440000s
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt 
    Number  Start        End          Size         File system  Name     Flags
    1       64s          1048639s     1048576s     ext4         primary  boot 
    4       1048640s     3509759966s  3508711327s               primary  lvm 
    2       3509759967s  8189439966s  4679680000s               primary  lvm
    3 
  11. 新しく作成した4番目のパーティションでLVM物理ボリューム(PV)を作成します。
    [root@dm01db01 ~]# lvm pvcreate --force /dev/sda3
      Physical volume "/dev/sda3" successfully created
  12. LVMボリューム・グループVGExaDbを、新しく作成した3番目のパーティションまで拡張します。
    [root@dm01db01 ~]# lvm vgextend VGExaDb /dev/sda3
      Volume group "VGExaDb" successfully extended
  13. /EXAVMIMAGESファイル・システムをディスマウントします。
    [root@dm01db01 ~]# umount /EXAVMIMAGES/
  14. /EXAVMIMAGESを含む論理ボリュームを拡張して、残りの空き領域を含めます。
    [root@dm01db01 ~]# lvm lvextend -l +100%FREE /dev/VGExaDb/LVDbExaVMImages
    Size of logical volume VGExaDb/LVDbExaVMImages changed from 1.55 TiB (406549 extents) to 
    3.73 TiB (977798 extents).  
    Logical volume LVDbExaVMImages successfully resized.
  15. /EXAVMIMAGESファイル・システムのサイズを、残りの論理ボリュームにあわせて変更します。
  16. /EXAVMIMAGESファイル・システムをマウントしてから、このファイル・システムのディスク領域の使用状況を表示します。
    [root@dm01db01 ~]# mount -a
    
    [root@dm01db01 ~]# ls -al /EXAVMIMAGES/
    total 4518924
    drwxr-xr-x  3 root root        3896 Jul 18 18:01 .
    drwxr-xr-x 26 root root        4096 Jul 24 14:50 ..
    drwxr-xr-x  2 root root        3896 Jul 18 17:51 lost+found
    -rw-r-----  1 root root 26843545600 Jul 18 18:01 System.first.boot.12.2.1.1.8.180510.1.img
    
    [root@dm01db01 ~]# df -h /EXAVMIMAGES/
    Filesystem                            Size  Used Avail Use% Mounted on
    /dev/mapper/VGExaDb-LVDbExaVMImages   3.8T  9.0G  3.8T   1% /EXAVMIMAGES
    
  17. ゲストを再起動します。

6.15 Oracle Linux KVMでのOracle RACクラスタの作成

この手順では、Oracle Exadata Deployment Assistant (OEDA)構成ツールおよびデプロイ・ツールを使用して、Oracle Linux KVM上にOracle RACクラスタを作成します。

Oracle Linux KVMでOracle RACクラスタを追加する場合の要件は次のとおりです。

  • Oracle Linux KVMシステムはすでに1つ以上のOracle RACクラスタにデプロイされている。

  • システムには、メモリー、CPU、ローカル・ディスク領域、ストレージ・サーバー・ディスク領域などの使用可能なリソースがある。

  • 最初のシステム構成に使用したOEDAデプロイメント・ファイルが、使用可能である。

  1. 新規ゲストを追加するための十分なリソースがkvmhostにあることを確認します。

    Oracle Linux KVMでOracle RACクラスタを作成する場合は、新しいゲストを作成するすべてのkvmhostのリソースを確認します。

  2. 次のコマンドを使用して、ストレージ・サーバーのディスク領域を確認します。
    # dcli -l celladmin -g cell_group "cellcli -e 'list celldisk attributes name, \
     diskType, freeSpace where freeSpace>0'"
    
  3. 最新のOEDAをMy Oracle Supportノート888828.1からダウンロードして、グラフィック・ベースのプログラムが実行可能なシステムに配置します。

    デフォルトでは、Oracle Exadata Database Machineのデータベース・サーバーには、Oracle Databaseを実行するために必要なパッケージのみが含まれていて、OEDA構成ツールを実行できません。

  4. システムのデプロイに使用するOEDAテンプレート・ファイルを取得します。
  5. 次のようにして、OEDA構成ツールを実行します。
    1. 「インポート」をクリックします。
    2. XMLファイルを選択して開き、このファイルを使用して名前CustomerName-NamePrefix.xmlでシステムにデプロイします。
    3. 必要に応じて「次へ」をクリックしてクラスタ定義ページを開き、ページを移動しながらIPアドレスおよびホスト名情報を確認します。初回のデプロイの後、ネットワークに変更がない場合、変更する必要はありません。
    4. クラスタ定義ページで、クラスタ数を増やします。
    5. 新しいクラスタ・タブを選択し、クラスタ情報を編集します。それ以外のクラスタは変更しません。
    6. クラスタに一意のクラスタ名を入力します。
    7. 新しいクラスタについてkvmhostとCELLコンポーネントを選択し、「追加」をクリックします。

      注意:

      最良のパフォーマンスおよび管理の簡略化のために、すべてのセルを選択することをお勧めします。
    8. 必要に応じて「次へ」をクリックし、新しいクラスタのページへ進みます。それ以外のクラスタは変更しません。
    9. 新しいクラスタに情報を入力します。情報には、仮想ゲスト・サイズ、ディスク・グループ詳細およびデータベース名が含まれます。データベース名は、同じストレージ・サーバーを使用するすべてのデータベースに対して一意である必要があります。
    10. 「次へ」をクリックして確認と編集ページを表示し、新しいクラスタの情報を確認します。
    11. 必要に応じて「次へ」をクリックし、生成ページへ進みます。
    12. 「次へ」をクリックして、新規構成ファイルを生成します。
    13. 構成ファイルの保存先ディレクトリを選択します。
    14. 「保存」をクリックします。

      注意:

      Oracle Linux KVMのデフォルトをこのクラスタで変更した場合、既存クラスタの構成の詳細が、新しいテンプレート設定に一致するように書き換えられます。たとえば、vm01をSMALLとしてmemory=8GBでデプロイしていた場合、この新しいVMのためのSMALLテンプレートをmemory=10GBに変更すると、vm01を変更する意図がないとしても、新しいOEDA XMLファイルには、vm01がmemory=10GBと表示されます。
    15. 終了ページの「インストール・テンプレート」をクリックして、新しいクラスタの詳細を確認します。
    16. 「終了」をクリックして構成ツールを終了します。
  6. 新しいクラスタがCustomerName-NamePrefix-ClusterName.xmlという名前で、保存場所フォルダに存在することをXMLファイルで確認します。
  7. Oracle Grid InfrastructureおよびOracle Databaseの選択したリリース用のデプロイメント・ファイルを取得して、そのファイルをOEDAWorkDirディレクトリに配置します。
  8. OEDAデプロイメント・ツールを実行します。このとき、次のコマンドを使用して、-cfオプションで新しいクラスタ用のXMLファイルを指定し、-lオプションでステップのリストを表示します。
    $ ./install.sh -cf    \
    ExadataConfigurations/CustomerName-NamePrefix-ClusterName.xml -l
    

    次のような出力が表示されます。

    Initializing 
    ||||| 
    1. Validate Configuration File 
    2. Update Nodes for Eighth Rack 
    3. Create Virtual Machine 
    4. Create Users 
    5. Setup Cell Connectivity 
    6. Calibrate Cells 
    7. Create Cell Disks 
    8. Create Grid Disks 
    9. Configure Alerting 
    10. Install Cluster Software 
    11. Initialize Cluster Software 
    12. Install Database Software 
    13. Relink Database with RDS 
    14. Create ASM Diskgroups 
    15. Create Databases 
    16. Apply Security Fixes 
    17. Install Exachk 
    18. Create Installation Summary 
    19. Resecure Machine
  9. 次の各ステップは、Oracle Exadata Database Machineの既存のOracle Linux KVM環境内に新しいクラスタを追加する場合はスキップします。
    • (エイス・ラック・システムの場合のみ) 2. Update Nodes for Eighth Rack
    • 6. Calibrate Cells
    • 7. Create Cell Disks
    • 19. Resecure Machine

    注意:

    ステップ番号は、選択したハードウェア構成に基づいて変化します。ご使用のシステムでの正しいステップを識別するには、ステップ名を使用します。

    たとえば、ステップ1を実行するには、次のコマンドを実行します。

    $ ./install.sh -cf \
    ExadataConfigurations/CustomerName-NamePrefix-ClusterName.xml -s 1
    OEDAでステップの一部のみを実行する場合は、範囲を指定します。次に例を示します。
    $ ./install.sh -cf \
    ExadataConfigurations/CustomerName-NamePrefix-ClusterName.xml –r 3–5
  10. 他のすべてのシステムでは、新しいクラスタについてXMLファイルを使用して、アラートの構成を除くすべてのステップを実行します。

    個別のステップを実行するには、次のようなコマンドを使用します(これは最初のステップを実行します)。

    $ ./install.sh -cf \
    ExadataConfigurations/CustomerName-NamePrefix-ClusterName.xml -s 1

6.16 OEDACLIを使用したOracle Linux KVMでのOracle RACクラスタの拡張

Oracle Linux KVM上の既存のOracle RACクラスタは、Oracle Exadata Deployment Assistantコマンドライン・インタフェース(OEDACLI)を使用してゲストを追加することにより拡張できます。

OEDACLIは、目的のクラスタに適した既知のバージョンのOEDA XMLファイルがある場合に適した方法です。

注意:

この手順の実行中、既存のOracle RACクラスタ・ノードとそのデータベース・インスタンスでは、停止時間は発生しません。

この手順のユースケースは次のとおりです。

  • Oracle Exadataラックのデータベース・サーバーのサブセットのみを使用する既存のOracle RACクラスタがあり、現在クラスタによって使用されていないノードが使用候補になった場合。
  • データベース・サーバーを追加することで最近拡張したOracle Exadata Database Machineに既存のOracle RACクラスタがある場合。
  • 完全なノード障害が発生たノードを削除して新しくイメージ化したノードに置き換えた、既存のOracle RACクラスタがある場合。

この項のステップを実行する前に、「クラスタへの新しいデータベース・サーバーの追加」の説明に従って新しいデータベース・サーバーを設定しておく必要があります。これには、次の項目も含まれます。

  • kvmhostが含まれるネットワークに、新しいデータベース・サーバーをインストールして構成します。
  • 最新のOracle Exadata Deployment Assistant (OEDA)をダウンロードします(ダウンロードするファイルのバージョンが2019年7月以降のリリースであることを確認します)。
  • 既存のクラスタ構成を正確に反映したOEDA構成XMLファイルを用意します。このXMLファイルを検証するには、そのファイルからインストール・テンプレートを生成して現在の構成と比較します。OEDACLIコマンドSAVE FILESを参照してください。
  • 現在のシステム構成についてのOEDAインストール・テンプレートのレポートを確認して、既存のノードのノード名とIPアドレスを取得します。新しく追加するノードのために新しいホスト名とIPアドレスが必要になります。次の新しいホスト名とIPアドレスが必要になります。
    • kvmhostおよびゲストの管理ホスト名とIPアドレス(ADMINNETと呼ばれます)。
    • kvmhostおよびゲストのプライベート・ホスト名とIPアドレス(PRIVNETと呼ばれます)。
    • kvmhostIntegrated Lights Out Manager (ILOM)ホスト名とIPアドレス。
    • ゲストのクライアント・ホスト名とIPアドレス(CLIENTNETと呼ばれます)。
    • ゲストの仮想IP (VIP)ホスト名とIPアドレス(VIPNETと呼ばれます)。
    • 新しいノードの物理ラック番号とラック内のでの場所(U番号単位)
  • kvmhostは、既存のデータベース・サーバーで使用されているイメージと同じになるようにイメージ化またはパッチ適用されています。現在のシステム・イメージは、新しいkvmhostノードの/EXAVMIMAGES/ System.first.boot.*.imgファイルのバージョンと一致している必要があります。

    注意:

    この後で参照される~/dom0_groupファイルは、既存のノードと新しく追加するノードのすべてのkvmhostのホスト名が含まれているテキスト・ファイルです。

    すべてのkvmhostのイメージ・バージョンが同じであることを確認します。

    dcli -g ~/dom0_group -l root "imageinfo -ver"
    
    exa01adm01: 19.2.0.0.0.190225
    exa01adm02: 19.2.0.0.0.190225
    exa01adm03: 19.2.0.0.0.190225

    イメージのバージョンに異なるものがある場合は、そのバージョンが一致するようにノードをアップグレードする必要があります。

    すべてのkvmhostSystem.first.bootのバージョンが、前のステップで取得したイメージのバージョンと一致していることを確認します。

    dcli -g ~/dom0_group -l root "ls  -1 /EXAVMIMAGES/System.first.boot*.img" 
    exa01adm01:  /EXAVMIMAGES/System.first.boot.19.2.0.0.0.190225.img
    exa01adm02:  /EXAVMIMAGES/System.first.boot.19.2.0.0.0.190225.img
    exa01adm03:  /EXAVMIMAGES/System.first.boot.19.2.0.0.0.190225.img

    いずれかのノードに、現在のイメージと一致するSystem.first.boot.imgファイルがない場合は、必要なファイルを取得します。My Oracle SupportのドキュメントID 888828.1で、対象のExadataリリース用の補足READMEノートを確認し、"DomU System.img OS image for V.V.0.0.0 VM creation on upgraded dom0s"という説明文に対応するパッチ・ファイルを見つけてください。

  • klone.zipファイル(gi-klone*.zipdb-klone*.zip)を、クラスタに追加する新しくイメージ化されたkvmhostノードの/EXAVMIMAGESの場所に配置します。これらのファイルは、最初にシステムをデプロイしたkvmhost/EXAVMIMAGESディレクトリにあります。

このステップでは、exa01adm03vm01という新しいゲストを含むexa01adm03という新しいkvmhostノードを追加する方法を示します。このステップでは、OEDACLIコマンドを使用して、既存のOracle RACクラスタをゲストに拡張する方法を示します。既存のクラスタには、exa01adm01およびexa01adm02という名前のkvmhostノードと、exa01adm01vm01およびexa01adm02vm01という名前のゲスト・ノードがあります。

  1. CLONE COMPUTEコマンドを使用して、kvmhostの情報をOEDA XMLファイルに追加します。

    次の各例では、OEDA XMLファイルがunzipped_OEDA_location/ExadataConfigurationsにあると仮定しています。

    OEDACLI> LOAD FILE NAME=exa01_original_deployment.xml 
    
    OEDACLI> CLONE COMPUTE SRCNAME  = exa01adm01 TGTNAME = exa01adm03
    SET ADMINNET NAME=exa01adm03,IP=xx.xx.xx.xx
    SET PRIVNET NAME1=exa01adm03-priv1,IP1=  xx.xx.xx.xx, 
    SET PRIVNET NAME2=exa01adm03-priv2,IP2=  xx.xx.xx.xx
    SET ILOMNET NAME=exa01adm03-c,IP=xx.xx.xx.xx
    SET RACK NUM=NN,ULOC=XX 
    
    OEDACLI> SAVE ACTION
    OEDACLI> MERGE ACTIONS FORCE
    OEDACLI> SAVE FILE NAME=exa01_plus_adm03_node.xml

    この時点で、構成内に新しい計算ノードのkvmhostが含まれた新しいXMLファイルが存在します。このファイルは、後続のステップで使用します。

  2. CLONE GUESTコマンドを使用して、新しいゲストの情報をOEDA XMLファイルに追加し、そのゲストをデプロイします。
    OEDACLI> LOAD FILE NAME=exa01_plus_adm03_node.xml 
    
    OEDACLI> CLONE GUEST SRCNAME  = exa01adm01vm01 TGTNAME = exa01adm03vm01
    WHERE STEPNAME=CREATE_GUEST
    SET PARENT NAME = exa01adm03
    SET ADMINNET NAME=exa01adm03vm01,IP=xx.xx.xx.xx
    SET PRIVNET NAME1=exa01db03vm01-priv1,IP1=  xx.xx.xx.xx, 
    SET PRIVNET NAME2=exa01db03vm01-priv2,IP2=  xx.xx.xx.xx
    SET CLIENTNET NAME=exa01client03vm01,IP=xx.xx.xx.xx
    SET VIPNET NAME=exa01client03vm01-vip,IP=xx.xx.xx.xx
    
    
    OEDACLI> SAVE ACTION
    OEDACLI> MERGE ACTIONS
    OEDACLI> DEPLOY ACTIONS

    すべてのステップがOEDACLIで自動的に実行されるようにするには、前述のWHERE STEPNAME=CREATE_GUEST句を省略して、次のステップ3をスキップします。

    この時点で、新しい計算ノードにゲストが作成されています。

  3. OEDACLIを使用して、クラスタを新しいゲストに拡張します。

    注意:

    この例では、引き続き同じXMLファイルexa01_plus_adm03_node.xmlを使用します。次からのステップを進めながら、このファイルの更新を続けます。この手順の最後には、このXMLファイルはクラスタの新しい状態を正確に反映するようになります。
    OEDACLI> CLONE GUEST TGTNAME=exa01adm03vm01 WHERE STEPNAME = CREATE_USERS

    OEDACLI> SAVE ACTION
    OEDACLI> MERGE ACTIONS
    OEDACLI> DEPLOY ACTIONS
    
    OEDACLI> CLONE GUEST TGTNAME=exa01adm03vm01 WHERE STEPNAME = CELL_CONNECTIVITY

    OEDACLI> SAVE ACTION
    OEDACLI> MERGE ACTIONS
    OEDACLI> DEPLOY ACTIONS
    
    OEDACLI> CLONE GUEST TGTNAME=exa01adm03vm01 WHERE STEPNAME = ADD_NODE

    OEDACLI> SAVE ACTION
    OEDACLI> MERGE ACTIONS
    OEDACLI> DEPLOY ACTIONS
    
    OEDACLI> CLONE GUEST TGTNAME=exa01adm03vm01 WHERE STEPNAME = EXTEND_DBHOME

    OEDACLI> SAVE ACTION
    OEDACLI> MERGE ACTIONS
    OEDACLI> DEPLOY ACTIONS
    
    OEDACLI> CLONE GUEST TGTNAME=exa01adm03vm01 WHERE STEPNAME = ADD_INSTANCE

    OEDACLI> SAVE ACTION
    OEDACLI> MERGE ACTIONS
    OEDACLI> DEPLOY ACTIONS

    OEDACLIは、各ステップが完了するたびに、次のようなメッセージを出力します。

    Deploying Action ID : 39 CLONE GUEST TGTNAME=exa01adm03vm01 where STEPNAME = ADD_INSTANCE 
    Deploying CLONE GUEST 
    Cloning Guest 
    Cloning Guest  :  exa01adm03vm01.example.com_id 
    Adding new instance for database [dbm] on exa01adm03vm01.example.com 
    Setting up Huge Pages for Database..[dbm] 
    Adding instance dbm3 on host exa01adm03vm01.example.com 
    Successfully completed adding database instance on the new node [elapsed Time [Elapsed = 
    249561 mS [4.0  minutes] Fri Jun 28 13:35:52 PDT 2019]] 
    Done...
    Done
  4. 構成の現在の状態を保存して、構成情報を生成します。
    OEDACLI> SAVE FILES LOCATION=/tmp/exa01_plus_adm03_config

    前述のコマンドにより、すべての構成ファイルがディレクトリ/tmp/exa01_plus_adm03_configに書き込まれます。これらのファイルのコピーはクラスタへの変更を反映するようになっているため安全な場所に保存してください。

  5. Oracle EXAchkレポートを収集して、クラスタの正常性に問題がないことを確認します。

6.17 ゲストの別のデータベース・サーバーへの移動

ゲストは、別のデータベース・サーバーに移動できます。

ターゲットのOracle Exadata Database Machineデータベース・サーバーは、次の要件を満たしている必要があります。

  • ターゲット・データベース・サーバーに、同一リリースのOracle Exadata System SoftwareおよびOracle Linux KVMがインストールされていることが必要です。

  • ターゲット・データベース・サーバーに、同一のネットワークが表示されている。

  • ターゲットのデータベース・サーバーは、同一のOracle Exadata Database Machineストレージ・サーバーにアクセスできることが必要です。

  • ターゲットのデータベース・サーバーには、ゲストの動作のために十分な空きリソース(メモリー、CPUおよびローカル・ディスク領域)があることが必要です。

    • 仮想CPUをオーバーコミットすると、すべてのドメインに割り当てられた仮想CPUを、システム上の物理CPU数より多く割り当てることができます。CPUのオーバーコミットは、過剰に収容されたリソースへの競合するワークロードが十分理解され、同時に発生する要求が物理能力を超えない場合にのみ、実行する必要があります。

    • メモリーをオーバーコミットすることはできません。

    • ディスク・イメージをターゲット・データベース・サーバーにコピーすると、ディスク・イメージ・ファイルの領域の割当てが増加する場合があります。これは、コピーされたファイルは、reflinkを利用してディスク領域を省略できないためです。

  • ゲストの名前は、ターゲットのデータベース・サーバーで未使用のものにする必要があります。

次の手順に従い、ゲストを同一のOracle Exadata System Software構成内の新しいデータベース・サーバーに移動します。この手順のすべてのステップは、kvmhostで実行します。

  1. ゲストをシャットダウンします。
    # /opt/exadata_ovm/vm_maker --stop-domain GuestName
  2. ゲストのディスク・イメージと構成ファイルをターゲットのデータベース・サーバーにコピーします。

    次の例では、GuestNameゲストの名前に置き換えます。

    # scp -r /EXAVMIMAGES/GuestImages/GuestName/ target:/EXAVMIMAGES/GuestImages
    
  3. ゲストのUUIDを取得します。
    # grep ^uuid /EXAVMIMAGES/GuestImages/GuestName/vm.cfg
    

    ゲストのUUIDは、49ffddce4efe43f5910d0c61c87bba58のようになります。

  4. ゲストのUUIDを使用して、/OVS/Repositoriesからターゲットのデータベース・サーバーにゲストのシンボリック・リンクをコピーします。
    # tar cpvf - /OVS/Repositories/UUID/ | ssh target_db_server "tar xpvf - -C /"
    
  5. ターゲットのデータベース・サーバーで、ゲストを起動します。
    # /opt/exadata_ovm/vm_maker --start-domain GuestName

6.18 タグVLANインタフェースの実装

このトピックでは、Oracle Exadata Database Machine上のOracle Linux KVM環境内のタグ付けされたVLANインタフェースの実装について説明します。

Oracle Exadata Database Machine上のOracle Linux KVMゲストで実行しているOracleデータベースは、Oracle Exadata Deployment Assistant (OEDA)構成ツールで定義されたクライアントEthernetネットワークを介してアクセスされます。kvmhostゲストの両方のクライアント・ネットワーク構成は、初期デプロイ時にOEDAインストール・ツールが最初にゲストを作成するときに自動的に実行されます。

次の図に、デフォルトの結合クライアント・ネットワーク構成を示します。

図6-1 Oracle Virtual EnvironmentのNICレイアウト

図6-1の説明が続きます
「図6-1 Oracle Virtual EnvironmentのNICレイアウト」の説明

ネットワークは、次のように構成されます:

  1. kvmhostでは、OEDAで定義されていてゲスト・クライアント・ネットワークへのアクセスが許可されているethスレーブ・インタフェース(たとえば、eth1とeth2またはeth4とeth5)が、検出、構成および起動されますが、IPは割り当てられません。

  2. kvmhostでは、bondeth0マスター・インタフェースが構成され、起動されますが、IPは割り当てられません。

  3. kvmhostでは、ブリッジ・インタフェースvmbondeth0が構成されますが、IPは割り当てられません。

  4. kvmhostでは、特定のゲストのbondeth0インタフェースにマッピングされる仮想バックエンド・インタフェース(VIF)がゲストごとに1つ構成され、起動されますが、IPは割り当てられません。これらのVIFは、ブリッジ・インタフェースvmbondeth0の上部に構成されます。また、kvmhostのVIFインタフェースとそれに対応するゲストのインタフェースbondeth0との間のマッピングは、vm.cfgというゲスト構成ファイルで定義されます。このファイルは、/EXAVMIMAGES/GuestImages/guest nameにあります。

デフォルトのインストールでは、単一のbondeth0と対応するvmbondeth0ブリッジ・インタフェースは、前述で説明するようにkvmhost内で構成されます。このbondeth0インタフェースは、デフォルトのAccess Virtual Local Area Network (Access VLAN)に基づいています。Access VLANに対して、bondeth0を構築するスレーブ・インタフェースで使用されるスイッチ上のポートが構成されます。

VLANタグ付けの使用

Exadataの仮想デプロイメントで、ゲスト全体でネットワーク分離を有効にするなど、クライアント・ネットワーク上の他のVLANにアクセスする必要がある場合、802.1QベースのVLANタグ付けにより解決できます。次の図に、VLANタグ付けをしたクライアント・ネットワーク構成を示します。

図6-2 VLANタグ付けをしたOracle Virtual EnvironmentのNICレイアウト

図6-2の説明が続きます
「図6-2 VLANタグ付けをしたOracle Virtual EnvironmentのNICレイアウト」の説明

このようなクライアント・ネットワーク上の追加のタグ付けされたVLANインタフェースの構成方法および使用方法の手順は、My Oracle Supportノート2018550.1を参照してください。これらの手順の実行の前後に、Access VLANが継続して稼働および構成されている必要があります。Access VLANが無効にされることはありません。

6.19 RDMAネットワーク・ファブリック・パーティション

RDMAネットワーク・ファブリック・パーティションでは、相互の通信を許可されるRDMAネットワーク・ファブリックのノードまたはメンバーのグループを定義します。

6.19.1 Oracle Linux KVMで実行しているOracle RACクラスタ間のRDMAネットワーク・ファブリック・パーティションについて

セキュリティの見地から、結合システムの重要な要件の1つは、結合システム内の複数の環境間のネットワーク分離です。

Oracle Linux KVM上でOracle Real Application Clusters (Oracle RAC)クラスタを使用して実現された統合では、これは、1つのOracle RACクラスタのネットワーク・トラフィックが別のOracle RACクラスタにアクセスできないというような、異なるOracle RACクラスタどうしの分離を意味します。Ethernetネットワークでは、これは、My Oracle Support DocID 2018550.1で説明するように、VLANタグ付けを使用して完成します。

RDMA over RoCEネットワーク・ファブリック(X8M)の場合は、Access VLANの設定を介したサーバー・レベル分離によって分離が実現されます。Oracle Exadata Database Machineでは、re0インタフェースおよびre1インタフェース上のすべてのRDMA over RoCEネットワーク・ファブリックのプライベート・トラフィックにVLAN ID 3888を使用します。この設定は、ほとんどのRDMA over Converged Ethernet (RoCE)スイッチとホスト構成に適しています。特殊な状況では、サーバー・レベル分離の実装が必要になり、分離が必要なホストに接続されたリーフ・ポートはAccess VLAN値(switchport access vlan 3889など)に変更する必要があります。

注意:

Cisco Nexus C9336C-FX2 Ethernetリーフ・スイッチの変更可能なポート(たとえば、ホスト・ポート)は、RDMAネットワーク・ファブリック配線表X8Mに示されています。さらに、その他の競合がシステムで発生しないように、switchport access vlan IDの値を2744から3967の範囲に制限します。

データベース・サーバーadm01のスイッチ・ポート構成のサンプルを次に示します。

dbm01sw-rocea0# show running-config interface ethernet 1/22
 
!Command: show running-config interface Ethernet1/22
!Running configuration last done at: Wed Oct 30 21:47:37 2019
!Time: Wed Nov 20 23:51:57 2019 

version 7.0(3)I7(6) Bios:version 05.33  

interface Ethernet1/22
   description adm01
   switchport access vlan 3888  
   priority-flow-control mode on  
   spanning-tree port type edge  
   spanning-tree bpduguard enable  
   mtu 2300  
   speed 100000  
   duplex full  
   no negotiate auto  
   service-policy type qos input QOS_MARKING no-stats

6.19.2 プライベート・ネットワークからのデータベース・サーバー・ネットワーク・トラフィックの分離

RDMAネットワーク・ファブリック・スイッチのswitchport access vlan ID設定をデフォルト以外の値に変更し、RDMA over RoCEネットワーク・ファブリックの他のシステムからデータベース・サーバーを分離します

VLAN IDのデフォルト値は、すべてのRDMA over Converged Ethernet (RoCE)プライベート・トラフィックのre0およびre1ネットワーク・インタフェース上で3888です。データベース・サーバーのVLAN IDを3889に変更すると、re0またはre1ネットワーク・インタフェースを使用して他のデータベース・サーバーと通信できなくなります。

これらのステップは、ベア・メタル・サーバーまたはゲスト・ホストを分離する場合にのみ使用します。

  1. どの下位リーフRoCEスイッチ(ホスト名およびポート)がホストのre0インタフェースに接続されているかを確認します。
    [root@dbm01adm02 ~]# /opt/oracle.SupportTools/ibdiagtools/utils/lldp_cap.py re0 |
    egrep 'SWITCH_NAME'\|'SWITCH_PORT' |grep -v DESCRIPTION
    SWITCH_PORT: Ethernet1/21
    SWITCH_NAME: dbm01sw-rocea0
    
  2. 前のステップで見つけたSWITCH_NAMEを使用して、下位リーフ・スイッチにログインします。
    [root@localhost ~]# ssh admin@dbm01sw-rocea00
    User Access Verification
    Password: *******
    
  3. 特定のスイッチ・ポートの構成を確認します。

    次の例では、スイッチは現在スイッチポート・アクセス・モードを実行しています。指定されたインタフェースは、ステップ1SWITCH_PORTの値です。

    dbm01sw-rocea0# show running-config interface ethernet 1/21
    !Running configuration last done at: Wed Nov 13 10:34:58 2019
    !Time: Wed Nov 13 14:55:48 2019
    
    version 7.0(3)I7(6) Bios:version 05.33 
    
    interface Ethernet1/21
      description adm02
      switchport access vlan 3888
      priority-flow-control mode on
      spanning-tree port type edge
      spanning-tree bpduguard enable
      mtu 2300
      speed 100000
      duplex full
      no negotiate auto
      service-policy type qos input QOS_MARKING no-stats  
  4. スイッチ・ポートの構成を変更して、switchport access vlan設定を変更します。

    ステップ1で取得したインタフェース値を使用します。VLAN IDの古い値を削除し、3889などの新しいVLAN ID値を追加します。その後で構成モードを終了します。

    dbm01sw-rocea0# configure terminal 
    Enter configuration commands, one per line. End with CNTL/Z.
    dbm01sw-rocea0(config)# interface ethernet 1/21
    dbm01sw-rocea0(config-if)# no switchport access vlan 3888
    dbm01sw-rocea0(config-if)# switchport access vlan 3889
    dbm01sw-rocea0(config-if)# exit
    dbm01sw-rocea0(config)# exit
    dbm01sw-rocea0# 
  5. スイッチ・インタフェースが新しいVLAN IDを使用していることを確認します。

    前のステップと同じインタフェースを指定します。

    dbm01sw-rocea0# show running-config interface ethernet 1/21
     
    !Command: show running-config interface Ethernet1/21
    !Running configuration last done at: Wed Nov 20 23:53:38 2019
    !Time: Wed Nov 20 23:53:45 2019
     
    version 7.0(3)I7(6) Bios:version 05.33 
     
    interface Ethernet1/21
      description adm02
      switchport access vlan 3889
      priority-flow-control mode on
      spanning-tree port type edge
      spanning-tree bpduguard enable
      mtu 2300
      speed 100000
      duplex full
      no negotiate auto
      service-policy type qos input QOS_MARKING no-stats
  6. 構成を保存します。
    dbm01sw-rocea0# copy running-config startup-config 
    [########################################] 100%
    Copy complete, now saving to disk (please wait)...
    Copy complete.
  7. VLAN ID 3889に変更する必要があるすべてのホストについて、ステップ1から6を繰り返します。
  8. 上位リーフRoCEスイッチ(re1に接続されているRoCEスイッチ)で、ステップ1から7を繰り返します。

6.20 Oracle Linux KVM環境でのOracle EXAchkの使用

Oracle Exadata Database Machineでの仮想化は、Oracle EXAchkバージョン12.1.0.2.2以降でサポートされています。

6.20.1 Oracle Linux KVM環境でのOracle EXAchkの実行

Oracle Exadata Database MachineOracle Linux KVM環境でOracle EXAchk監査チェックの完全なセットを実行するには、Oracle EXAchkをインストールして、複数の場所から実行する必要があります。

  1. 1つのkvmhostからOracle EXAchkを実行します。
  2. Oracle Linux KVMで実行している各Oracle Real Application Clusters (Oracle RAC)クラスタの1つのゲストからOracle EXAchkを実行します。

たとえば、4つのOracle RACクラスタを含む2つのデータベース・サーバー(両方のデータベース・サーバーで合計8つのゲスト、クラスタごとに2つのノード)を搭載しているOracle Exadata Database Machineクオータ・ラックでは、次のようにOracle EXAchkを個別に5回実行する必要があります。

  1. 最初のクラスタの最初のゲストOracle EXAchkを実行します。

  2. 2番目のクラスタの最初のゲストOracle EXAchkを実行します。

  3. 3番目のクラスタの最初のゲストOracle EXAchkを実行します。

  4. 4番目のクラスタの最初のゲストOracle EXAchkを実行します。

  5. 最初のkvmhostOracle EXAchkを実行します。

6.20.2 Oracle EXAchkによって実行される監査チェック

Oracle EXAchkは、kvmhostゲストで異なる監査チェックを実行します。

Oracle EXAchkkvmhostにインストールして実行すると、次のハードウェアおよびオペレーティング・システム・レベルのチェックが実行されます。

  • データベース・サーバー(kvmhost)
  • ストレージ・サーバー
  • RDMAネットワーク・ファブリック
  • RDMAネットワーク・ファブリックのスイッチ

Oracle EXAchkゲストにインストールして実行すると、ゲストのオペレーティング・システムのチェックと、Oracle Grid InfrastructureおよびOracle Databaseのチェックが実行されます。

6.20.3 Oracle Exadata Database Machineに対するOracle EXAchkのコマンドライン・オプション

Oracle EXAchkには、専用のコマンドライン・オプションが不要です。これにより、Oracle Exadata Database MachineOracle Linux KVM環境で実行していることが自動的に検出されます。ただし、サーバーやスイッチのサブセットに対してOracle EXAchkを実行するために、コマンドライン・オプションを使用することができます。

Oracle EXAchkは、kvmhostゲストのどちらで実行されているかを自動的に検出し、適切な監査チェックを実行します。たとえば、最も簡単なケースとして、コマンドライン・オプションなしでOracle EXAchkを実行できます。

./exachk

kvmhostOracle EXAchkを実行すると、RDMAネットワーク・ファブリック・ネットワーク経由でアクセス可能なすべてのデータベース・サーバー、ストレージ・サーバーおよびRDMAネットワーク・ファブリック・スイッチで監査チェックが実行されます。

サーバーまたはスイッチのサブセットでOracle EXAchkを実行するには、次のコマンドライン・オプションを使用します。

オプション

  • -clusternodes: データベース・サーバーのカンマ区切りリストを指定します。

  • -cells: ストレージ・サーバーのカンマ区切りリストを指定します。

  • -ibswitches: RDMAネットワーク・ファブリック・スイッチのカンマ区切りリストを指定します。

例6-1 ノードとスイッチのサブセットに対するOracle EXAchkの実行

たとえば、最初のクオータ・ラックのみが仮想化用に構成されているが、RDMAネットワーク・ファブリックネットワーク経由ですべてのコンポーネントにアクセス可能なOracle Exadata Database Machineフル・ラックの場合、データベース・サーバーdm01adm01から次のようなコマンドを実行できます。

./exachk -clusternodes dm01adm01,dm01adm02
         -cells dm01celadm01,dm01celadm02,dm01celadm03
         -ibswitches dm01swibs0,dm01sw-iba0,dm01sw-ibb0