6 Oracle Linux KVMゲストの管理

Exadata Database Machine X8M-2以降、Oracle Linux KVMは、RoCEネットワーク・ファブリックを使用するシステムの仮想化テクノロジです。

6.1 Oracle Linux KVMおよびExadata Database Machine

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

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

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

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

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

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

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

通常、KVMホストごとに最大12個ゲストがサポートされます。ただし、384GBのRAMを含み、Exadata Secure RDMA Fabric Isolationをサポートするように構成されたサーバーでは、ゲストの上限は8つです。

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

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

6.1.2 Oracle Linux KVMデプロイメントの仕様と制限

このトピックでは、Oracle Linux KVMOracle Exadata Database Machineで使用するためのデプロイメントの仕様と制限について説明します。

表6-1 Oracle Linux KVMデプロイメントの仕様と制限

属性 X8M-2の値 X8M-2エイス・ラックの値 X9M-2の値 X9M-2エイス・ラックの値

各データベース・サーバーのOracle Linux KVMゲストの最大数

384GBのRAMを含み、Exadata Secure RDMA Fabric Isolationをサポートするように構成されたサーバー: 8

それ以外の場合: 12

384GBのRAMを含み、Exadata Secure RDMA Fabric Isolationをサポートするように構成されたサーバー: 8

それ以外の場合: 12

12

12

各データベース・サーバーの合計物理メモリー

デフォルト: 384GB

最大値: 1536GB

デフォルト: 384GB

最大値: 768GB

デフォルト: 512 GB

最大値: 2048 GB

デフォルト: 384GB

最大値: 1024 GB

すべてのOracle Linux KVMゲストの各データベース・サーバー上の使用可能メモリーの合計

デフォルト: 328GB

最大値: 1390GB

デフォルト: 328GB

最大値: 680GB

デフォルト: 440 GB

最大値: 1870 GB

デフォルト: 328GB

最大値: 920 GB

Oracle Linux KVMゲストの最小メモリー制限

16GB

16GB

16GB

16GB

各データベース・サーバーの合計CPUコア(仮想CPU)

48 (96)

24 (48)

64 (128)

32 (64)

すべてのOracle Linux KVMゲストの各データベース・サーバー上のCPUコア(仮想CPU)のオーバープロビジョニング制限

ノート: CPUのオーバープロビジョニングによってパフォーマンスの競合が発生する可能性があります。

92 (184)

46 (92)

124 (248)

62 (124)

Oracle Linux KVMゲストのCPUコア(仮想CPU)制限

最小値: 2 (4)

最大値: 46 (92)

最小値: 2 (4)

最大値: 23 (46)

最小値: 2 (4)

最大値: 62 (124)

最小値: 2 (4)

最大値: 31 (62)

各データベース・サーバーのOracle Linux KVMゲストの合計使用可能ディスク領域

デフォルト: 3.15TB

デフォルト: 3.15TB

デフォルト: 3.15TB

デフォルト: 3.15TB

表6-2 Oracle Linux KVMの使用可能メモリーの制限

データベース・サーバーの物理メモリーの合計 Oracle Linux KVMゲストの使用可能メモリーの合計

384 GB

328 GB

512 GB

440 GB

768 GB

680 GB

1024 GB

920 GB

1536 GB

1390 GB

2048 GB

1870 GB

ノート:

1つのCPUコア= 1つのOCPU = 2つの仮想CPU = 2つのハイパー・スレッド

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

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

注意:

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

KVMホストでの操作がサポートされているかどうか不明な場合は、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仮想ディスクがあります。このようなリソースのグループが格納される場所を記憶域リポジトリといいます。

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

2ソケットのOracle Exadata Database Machineシステムでのみ、ディスク拡張キットを購入してストレージ容量を増やすことができます。追加のディスク領域を使用することで、/EXAVMIMAGESを拡張して、サポートするOracle Linux KVMゲストの数を増やしたり(最大12個まで)、各ゲスト/u01パーティションのサイズを増やすことができます。

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

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

ノート:

このトピックは、2ソケットのx86サーバーにのみ適用されます。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クラスタに変換することは、次のことを示唆します。

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

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

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

  • KVMホストは、各データベース・サーバーの少量のシステム・リソースを使用します。通常、KVMホストは、24 GBとサーバーRAMの6%、および4つの仮想CPUを使用します。Oracle Linux KVMと組み合せて実行するデータベースの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 ゲストの起動

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

  1. KVMホストに接続します。
  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 診断ISOファイルを使用したゲストの起動

診断ISOファイル(diagnostics.iso)を使用してゲストを起動するには、この手順を使用します。

  1. KVMホストに接続します。
  2. 現在のOracle Exadata System Softwareリリースに対応する診断ISOファイル(diagnostics.iso)をダウンロードします。

    必要に応じて、imageinfoコマンドを使用して、現在のOracle Exadata System Softwareリリースを確認します。

    診断ISOファイルを見つけるには、"exadata diagnostic iso"を検索語として使用して、My Oracle Support (MOS)パッチ・リポジトリを検索します。診断ISOファイルは、使用しているOracle Exadata System Softwareリリースに関連する補足READMEでも見つけることができます。各Oracle Exadata System Softwareリリースの補足READMEは、My Oracle Supportのドキュメント888828.1に記載されています。

  3. 診断ISOファイルを使用してゲストを起動するには:
    1. 診断ISOファイルを使用して起動するゲストを構成します。

      vm_maker --boot-from-isoコマンドを実行します。

      # vm_maker --boot-from-iso ISO-file --domain guest-name

      コマンドで次のようにします。

      • ISO-fileには、指定したゲストの起動に使用する診断ISOの名前を指定します。
      • guest-nameには、指定したISOファイルを使用して起動するゲストの名前を指定します。

      次に例を示します。

      # vm_maker --boot-from-iso /root/home/diagnostics.iso --domain dm01vm01
      [INFO] Running 'virsh undefine dm01vm01.example.com'...
      [INFO] Running 'virsh define /var/log/exadatatmp/dm01vm01.example.com.xml.new.357b'...
      [INFO] The domain 'dm01vm01.example.com' is ready for booting.
      [INFO] Run the following command to boot from the diagnostic iso:
      [INFO] 
      [INFO] virsh start dm01vm01.example.com --console
      [INFO] 
      [INFO] If network is needed to be setup on the VM, run 
      [INFO] setup_management.sh from the console after the guest has booted.
      [INFO] 
      [INFO] When finished, run the following commands to restore
      [INFO] the domain to boot from its hard disk:
      [INFO] 
      [INFO] vm_maker --stop-domain dm01vm01.example.com --force
      [INFO] vm_maker --boot-from-hd --domain dm01vm01.example.com
    2. 診断ISOファイルを使用してゲストを起動します。

      前のvm_maker --boot-from-isoコマンドの出力で指定されたvirsh startコマンドを使用します。

      次に例を示します。

      # virsh start dm01vm01.example.com --console

      ゲストが診断ISOファイルを使用して起動し、コンソールが端末セッションに表示されます。

    3. 必要であれば、ゲスト・ネットワークを起動します。

      診断モード中にゲストへのネットワーク・アクセスが必要な場合は、ゲスト・コンソールからsetup_management.shを実行し、プロンプトに従ってネットワークの詳細を指定することで、ネットワーク・インタフェースおよびSSHサーバーを起動できます。

      次に例を示します。

      Welcome to Exadata Shell!
      bash-4.2# setup_management.sh
      Ethernet interface (eth0,1,2,3) with optional VLAN id (ethX.YYYY) [eth0]:
      IP Address of this host: 192.0.2.132
      Netmask of this host: 255.255.255.128
      Default gateway: 192.0.2.129
      [INFO     ] 192.0.2.129 added as default gateway.
      * sshd.service - OpenSSH server daemon
        Loaded: loaded (/usr/lib/systemd/system/sshd.service; disabled; vendor preset: enabled)
        Active: inactive (dead)
        Docs: man:sshd(8)
        man:sshd_config(5)
      [INFO     ] Starting sshd service
  4. 診断モードでゲストの使用が終了したら、ドメインを停止し、プライマリ・ブート・デバイスを使用してブートするように再構成します。

    前のvm_maker --boot-from-isoコマンドの出力で指定されたコマンドを使用します。

    次に例を示します。

    # vm_maker --stop-domain dm01vm01.example.com --force
    [INFO] Running 'virsh destroy dm01vm01.example.com --graceful'...
    Domain dm01vm01.example.com destroyed
    [INFO] Checking for DomU shutdown...
    [INFO] DomU successfully shutdown.
    
    # vm_maker --boot-from-hd --domain dm01vm01.example.com
    [INFO] Running 'virsh undefine dm01vm01.example.com'...
    [INFO] Running 'virsh define /var/log/exadatatmp/dm01vm01.example.com.xml.new.eab9'...
    [INFO] The domain is ready to be restarted.

    vm_maker --start-domainコマンドを使用してゲストを再起動する準備ができました。

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

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

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

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

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

6.7 Oracle Linux KVMゲストの自動起動の管理

デフォルトでは、ゲストは、作成するとき、KVMホストが起動するときに自動的に起動するように構成されます。この機能は必要に応じて有効/無効を切り替えることができます。

6.7.1 ゲストの自動起動の有効化

ゲストは、KVMホストの起動時に自動的に起動するように構成できます。

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

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

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

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

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

  1. KVMホストに接続します。
  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.8 ユーザー・ドメイン内部のユーザー・ドメインのシャットダウン

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

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

6.9 KVMホストからのゲストのシャットダウン

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

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

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

    # /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.10 KVMホストゲストのバックアップ

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

バックアップは、データベース・サーバーの物理データまたは論理データの問題が発生し、データベース・サーバーのオペレーティング・システム・ファイルをリストアすることが必要となった場合に、リストアおよびリカバリするために必要です。

6.10.1 スナップショット・ベースのバックアップを使用したKVMホストのバックアップ

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

次のステップに示す値は例です。実際の状況に応じて、別の値に置き換えることが必要になる場合があります。

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

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

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

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

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

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

  2. LVDoNotRemoveOrUse論理ボリュームを削除します。

    論理ボリューム/dev/VGExaDb/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. Do not proceed with backup." 
      fi
    fi

    LVDoNotRemoveOrUse論理ボリュームが存在しない場合は、残りのステップには進まずに、その理由を特定します。

  3. アクティブなシステム・ボリュームを特定します。
    imageinfoコマンドを使用して、アクティブなシステム・パーティションをホストしているデバイスを調べることができます。
    # imageinfo
    
    Kernel version: 4.14.35-1902.5.1.4.el7uek.x86_64 #2 SMP Wed Oct 9 19:29:16 PDT 2019 x86_64
    Image kernel version: 4.14.35-1902.5.1.4.el7uek
    Image version: 19.3.1.0.0.191018
    Image activated: 2019-11-04 19:18:32 -0800
    Image status: success
    Node type: KVMHOST
    System partition on device: /dev/mapper/VGExaDb-LVDbSys1

    imageinfoの出力では、システム・パーティション・デバイスは、アクティブなルート(/)ファイル・システムをサポートする論理ボリュームの名前で終わります。使用しているシステム・イメージに応じて、論理ボリューム名はLVDbSys1またはLVDbSys2です。同様に、/varファイル・システムの論理ボリュームは、LVDbVar1またはLVDbVar2です。

    また、df -hTコマンドを使用し、ルート(/)および/varファイル・システムに関連付けられている出力を調べることで、アクティブなデバイスを確認することもできます。次に例を示します。

    # df -hT
    Filesystem                          Type      Size  Used Avail Use% Mounted on
    devtmpfs                            devtmpfs  378G     0  378G   0% /dev
    tmpfs                               tmpfs     755G  1.0G  754G   1% /dev/shm
    tmpfs                               tmpfs     378G  4.8M  378G   1% /run
    tmpfs                               tmpfs     378G     0  378G   0% /sys/fs/cgroup
    /dev/mapper/VGExaDb-LVDbSys1        xfs        15G  7.7G  7.4G  52% /
    /dev/sda1                           xfs       510M  112M  398M  22% /boot
    /dev/sda2                           vfat      254M  8.5M  246M   4% /boot/efi
    /dev/mapper/VGExaDb-LVDbHome        xfs       4.0G   33M  4.0G   1% /home
    /dev/mapper/VGExaDb-LVDbVar1        xfs       2.0G  139M  1.9G   7% /var
    /dev/mapper/VGExaDb-LVDbVarLog      xfs        18G  403M   18G   3% /var/log
    /dev/mapper/VGExaDb-LVDbVarLogAudit xfs      1014M  143M  872M  15% /var/log/audit
    /dev/mapper/VGExaDb-LVDbTmp         xfs       3.0G  148M  2.9G   5% /tmp
    /dev/mapper/VGExaDb-LVDbOra1        xfs       100G   32G   69G  32% /u01
    tmpfs                               tmpfs      76G     0   76G   0% /run/user/0

    この手順の残りの例では、前述のimageinfoおよびdfの出力と一致するLVDbSys1LVDbVar1を使用します。ただし、アクティブなイメージでLVDbSys2が使用されている場合は、この後のステップの例を変更して、LVDbSys1のかわりにLVDbSys2を使用し、LVDbVar1のかわりにLVDbVar2を使用してください。

  4. サーバー上の論理ボリュームのスナップショットを取得します。

    前のステップで識別したアクティブなシステム・パーティションに応じて、必ず、LVDbSys1またはLVDbSys2を使用してルート(/)ファイル・システムの論理ボリュームを識別し、同様にLVDbVar1またはLVDbVar2を使用して/varファイル・システムの論理ボリュームを識別してください。

    # lvcreate -L1G -s -c 32K -n root_snap /dev/VGExaDb/LVDbSys1
    # lvcreate -L1G -s -c 32K -n home_snap /dev/VGExaDb/LVDbHome
    # lvcreate -L1G -s -c 32K -n var_snap /dev/VGExaDb/LVDbVar1
    # lvcreate -L1G -s -c 32K -n varlog_snap /dev/VGExaDb/LVDbVarLog
    # lvcreate -L1G -s -c 32K -n audit_snap /dev/VGExaDb/LVDbVarLogAudit
    # lvcreate -L1G -s -c 32K -n tmp_snap /dev/VGExaDb/LVDbTmp
  5. スナップショットにラベルを付けます。
    # xfs_admin -L DBSYS_SNAP /dev/VGExaDb/root_snap
    # xfs_admin -L HOME_SNAP /dev/VGExaDb/home_snap
    # xfs_admin -L VAR_SNAP /dev/VGExaDb/var_snap
    # xfs_admin -L VARLOG_SNAP /dev/VGExaDb/varlog_snap
    # xfs_admin -L AUDIT_SNAP /dev/VGExaDb/audit_snap
    # xfs_admin -L TMP_SNAP /dev/VGExaDb/tmp_snap
  6. スナップショットをマウントします。
    すべてのスナップショットを共通のディレクトリの場所(/root/mntなど)の下にマウントします。
    # mkdir -p /root/mnt
    # mount -t xfs -o nouuid /dev/VGExaDb/root_snap /root/mnt
    # mkdir -p /root/mnt/home
    # mount -t xfs -o nouuid /dev/VGExaDb/home_snap /root/mnt/home
    # mkdir -p /root/mnt/var
    # mount -t xfs -o nouuid /dev/VGExaDb/var_snap /root/mnt/var
    # mkdir -p /root/mnt/var/log
    # mount -t xfs -o nouuid /dev/VGExaDb/varlog_snap /root/mnt/var/log
    # mkdir -p /root/mnt/var/log/audit
    # mount -t xfs -o nouuid /dev/VGExaDb/audit_snap /root/mnt/var/log/audit
    # mkdir -p /root/mnt/tmp
    # mount -t xfs -o nouuid /dev/VGExaDb/tmp_snap /root/mnt/tmp
  7. スナップショットをバックアップします。
    次のコマンドを使用して、準備したNFSバックアップ先にバックアップ・ファイルを圧縮tarファイルとして書き込みます。
    # cd /root/mnt
    # tar --acls --xattrs --xattrs-include=* --format=pax -pjcvf /root/remote_FS/myKVMbackup.tar.bz2 * /boot > /tmp/backup_tar.stdout 2> /tmp/backup_tar.stderr
  8. /tmp/backup_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。
    tarオープン・ソケットの障害に関するエラーおよび他の同様のエラーは無視できます。
  9. すべてのスナップショットをアンマウントし、削除します。
    # cd /
    # umount /root/mnt/tmp
    # umount /root/mnt/var/log/audit
    # umount /root/mnt/var/log
    # umount /root/mnt/var
    # umount /root/mnt/home
    # umount /root/mnt
    # lvremove /dev/VGExaDb/tmp_snap
    # lvremove /dev/VGExaDb/audit_snap
    # lvremove /dev/VGExaDb/varlog_snap
    # lvremove /dev/VGExaDb/var_snap
    # lvremove /dev/VGExaDb/home_snap
    # lvremove /dev/VGExaDb/root_snap
  10. NFSバックアップ先をアンマウントします。
    # umount /root/remote_FS
  11. この手順中に作成したマウント・ポイント・ディレクトリを削除します。
    # rm -r /root/mnt
    # rmdir /root/remote_FS
  12. 論理ボリューム/dev/VGExaDb/LVDoNotRemoveOrUseを再作成します。
    # lvm lvcreate -n LVDoNotRemoveOrUse -L2G VGExaDb -y

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

次の手順を使用して、Oracle Linux KVMゲストをバックアップできます。

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

表6-3 Oracle Linux KVMゲストのバックアップ方法

方式 説明 管理者 最適な状況
方法1: すべてのKVMゲストのバックアップ

KVMホストから、XFS reflinkを使用して一貫性バックアップを取得し、/EXAVMIMAGES記憶域リポジトリのすべてのゲストをバックアップします。

KVMホスト管理者

計算ノードの障害が発生した後、ゲストがブート可能でないときに、すべてのゲストをリカバリする場合。

方法2: 個々のゲストのバックアップ

KVMホストから、XFS reflinkを使用して一貫性バックアップを取得し、/EXAVMIMAGES記憶域リポジトリのゲストを選択的にバックアップします。

KVMホスト管理者

計算ノードの障害が発生した後、ゲストがブート可能でなくなったが、他のすべてのゲストに影響するわけではないときに、ゲストを選択的にリカバリする場合。

方法3: ゲストの内部的なバックアップ

ゲスト内部で実行されるスナップショット・ベースのバックアップ手順を使用して、ゲストをバックアップします。

ゲスト管理者

障害が発生した後、ゲストがまだブート可能で、rootログインが可能であるときに、ゲストをリカバリする場合。また、この方法では、特定のファイルの選択的なリカバリも可能です。

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

/EXAVMIMAGESの下にある記憶域リポジトリをバックアップすることで、すべてのゲストをバックアップできます。

バックアップ先は、書込み可能なNFSの場所など、KVMホスト・サーバーとは別の場所で、バックアップを保持できる十分な大きさにする必要があります。バックアップに必要な領域は、システムにデプロイされるゲストの数に比例します。各ゲストのバックアップに必要な領域は、約200GBです。

  1. ゲスト・イメージを準備します。

    次のスクリプトを使用して、/EXAVMIMAGES/Backupの下で、ゲスト・イメージのバックアップを準備します。

    #!/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
    mkdir -p /EXAVMIMAGES/Backup/XML
    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"
    
    cp /etc/libvirt/qemu/*.xml /EXAVMIMAGES/Backup/XML
    
    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. ゲスト・イメージのバックアップを作成します。

    /EXAVMIMAGES/Backupの下のすべてのreflinkファイルをリモートの場所にバックアップします。KVMホストが恒久的に破損したり紛失した場合は、バックアップを使用してリストアできます。

    次に例を示します。

    # mkdir -p /remote_FS
    # mount -t nfs -o rw,intr,soft,proto=tcp,nolock ip_address:/nfs_location/ /remote_FS
    # cd /EXAVMIMAGES/Backup
    # tar --acls --xattrs --xattrs-include=* --format=pax -pjcvf /remote_FS/exavmimages.tar.bz2 * > /tmp/exavmimages_tar.stdout 2> /tmp/exavmimages_tar.stderr

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

    バックアップの完了後に、tarコマンドから、重大なエラーがないかを確認します。前述の例では、tarコマンドは、/tmp/exavmimages_tar.stderrのファイルにエラーを書き込みます。

  3. /EXAVMIMAGES/Backupディレクトリとその内容を削除します。

    次に例を示します。

    # cd /
    # rm -rf /EXAVMIMAGES/Backup
  4. NFSバックアップの場所をアンマウントして、マウント・ポイント・ディレクトリを削除します。

    次に例を示します。

    # umount /remote_FS
    # rmdir /remote_FS
6.10.2.2 方法2: 個々のゲストのバックアップ

/EXAVMIMAGESの下にある特定のフォルダをバックアップすることで、個々のゲストをバックアップできます。

バックアップ先は、書込み可能なNFSの場所など、KVMホスト・サーバーとは別の場所で、バックアップを保持できる十分な大きさにする必要があります。個々のゲストのバックアップに必要な領域は、約200GBです。

  1. ゲスト・イメージを準備します。

    次のスクリプトを使用して、/EXAVMIMAGES/Backupの下で、ゲスト・イメージのバックアップを準備します。

    #!/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
    
    mkdir -p /EXAVMIMAGES/Backup/XML
    
    mkdirEndTime=$(date +%s)
    mkdirTime=$(expr ${mkdirEndTime} - ${mkdirStartTime})
    echo "Backup Directory creation time :" ${mkdirTime}" seconds"
    
    cp /etc/libvirt/qemu/${KVMGuestName}.xml /EXAVMIMAGES/Backup/XML
    
    ## 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. ゲスト・イメージのバックアップを作成します。

    /EXAVMIMAGES/Backupの下のreflinkファイルをリモートの場所にバックアップします。KVMホストが恒久的に破損したり紛失した場合は、バックアップを使用して特定のゲストをリストアできます。

    次に例を示します。

    # mkdir -p /remote_FS
    # mount -t nfs -o rw,intr,soft,proto=tcp,nolock ip_address:/nfs_location/ /remote_FS
    # cd /EXAVMIMAGES/Backup
    # tar --acls --xattrs --xattrs-include=* --format=pax -pjcvf /remote_FS/exavmimage.tar.bz2 * > /tmp/exavmimage_tar.stdout 2> /tmp/exavmimage_tar.stderr

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

    この例では、バックアップ・ファイルの名前はexavmimage.tar.bz2です。別の名前を選択して、バックアップするゲストを指定することもできます。

    バックアップの完了後に、tarコマンドから、重大なエラーがないかを確認します。前述の例では、tarコマンドによって、/tmp/exavmimage_tar.stderrのファイルにエラーが書き込まれます。

  3. /EXAVMIMAGES/Backupディレクトリとその内容を削除します。

    次に例を示します。

    # cd /
    # rm -rf /EXAVMIMAGES/Backup
  4. NFSバックアップの場所をアンマウントして、マウント・ポイント・ディレクトリを削除します。

    次に例を示します。

    # umount /remote_FS
    # rmdir /remote_FS
6.10.2.3 方法3: ゲストの内部的なバックアップ

ゲスト内部からゲストのスナップショット・ベースのバックアップを取得できます。

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

ノート:

このバックアップ方法は、ゲストの内部で実行され、論理ボリュームのスナップショットを使用します。他のバックアップ方法と比較すると、この方法で提供されるリカバリ・オプションは制限されています。これは、このバックアップは、ゲストがブート可能であり、かつrootユーザー・ログインが可能な場合にのみ有用であるためです。

この手順では、ゲスト内の現在アクティブなすべてのファイル・システムの内容をバックアップします。開始する前に、バックアップするすべてのファイル・システムがマウントされていることを確認します。

次のステップに示す値は例です。実際の状況に応じて、別の値に置き換えることが必要になる場合があります。

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

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

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

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

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

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

  2. LVDoNotRemoveOrUse論理ボリュームを削除します。

    論理ボリューム/dev/VGExaDb/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. Do not proceed with backup." 
      fi
    fi

    LVDoNotRemoveOrUse論理ボリュームが存在しない場合は、残りのステップには進まずに、その理由を特定します。

  3. 現在アクティブなファイル・システムおよび論理ボリュームに関する情報を収集します。

    この手順では、ゲストから情報を収集して、後で、論理ボリュームのスナップショットおよびバックアップ・ファイルを作成するコマンドで使用する必要があります。

    次のコマンドを実行します。

    # df -hT | grep VGExa

    コマンド出力内のすべてのエントリについて、次の情報を確認し、後で使用する値の表を作成します。

    • ボリューム・グループ(VG)名および論理ボリューム(LV)名は、次のようにファイル・システム名に含まれています。

      /dev/mapper/VG-name-LV-name

      たとえば、/dev/mapper/VGExaDb-LVDbHomeでは、VG名はVGExaDbで、LV名はLVDbHomeです。

    • バックアップ・ラベルは、ファイル・システムとそのバックアップ・ファイルを識別する文字列です。ルート(/)ファイル・システムの場合はrootを使用します。それ以外の場合は、マウント・ポイント内のディレクトリを連結した文字列を使用できます。たとえば、/var/log/auditの場合はvarlogauditを使用できます。
    • 12文字以下のショート・ラベルを定義します。そのショート・ラベルを使用して、スナップショット・ファイル・システムにラベルを付けます。

    次に例を示します。

    # df -hT | grep VGExa
    /dev/mapper/VGExaDb-LVDbSys1                              xfs   15G  4.2G   11G  28% /
    /dev/mapper/VGExaDb-LVDbHome                              xfs  4.0G   45M  4.0G   2% /home
    /dev/mapper/VGExaDb-LVDbVar1                              xfs  2.0G   90M  2.0G   5% /var
    /dev/mapper/VGExaDb-LVDbVarLog                            xfs   18G  135M   18G   1% /var/log
    /dev/mapper/VGExaDb-LVDbVarLogAudit                       xfs 1014M   89M  926M   9% /var/log/audit
    /dev/mapper/VGExaDb-LVDbTmp                               xfs  3.0G   33M  3.0G   2% /tmp
    /dev/mapper/VGExaDb-LVDbKdump                             xfs   20G   33M   20G   1% /crashfiles
    /dev/mapper/VGExaDbDisk.u01.5.img-LVDBDisk                xfs  5.0G   33M  5.0G   1% /u01
    /dev/mapper/VGExaDbDisk.u02.10.img-LVDBDisk               xfs   10G   33M   10G   1% /u02
    /dev/mapper/VGExaDbDisk.u03.15.img-LVDBDisk               xfs   15G   33M   15G   1% /u03
    /dev/mapper/VGExaDbDisk.grid19.7.0.0.200414.img-LVDBDisk  xfs   20G  6.0G   15G  30% /u01/app/19.0.0.0/grid

    前述の出力から、論理ボリュームのスナップショットおよびバックアップ・ファイルを作成するコマンドで後で使用する、次の情報表を導出できます。

    ファイル・システム VG名 LV名 バックアップ・ラベル ショート・ラベル

    /dev/mapper/VGExaDb-LVDbSys1

    VGExaDb

    LVDbSys1

    root

    root_snap

    /dev/mapper/VGExaDb-LVDbHome

    VGExaDb

    LVDbHome

    home

    home_snap

    /dev/mapper/VGExaDb-LVDbVar1

    VGExaDb

    LVDbVar1

    var

    var_snap

    /dev/mapper/VGExaDb-LVDbVarLog

    VGExaDb

    LVDbVarLog

    varlog

    varlog_snap

    /dev/mapper/VGExaDb-LVDbVarLogAudit

    VGExaDb

    LVDbVarLogAudit

    varlogaudit

    audit_snap

    /dev/mapper/VGExaDb-LVDbTmp

    VGExaDb

    LVDbTmp

    tmp

    tmp_snap

    /dev/mapper/VGExaDb-LVDbKdump

    VGExaDb

    LVDbKdump

    crashfiles

    crash_snap

    /dev/mapper/VGExaDbDisk.u01.5.img-LVDBDisk

    VGExaDbDisk.u01.5.img

    LVDBDisk

    u01

    u01_snap

    /dev/mapper/VGExaDbDisk.u02.10.img-LVDBDisk

    VGExaDbDisk.u02.10.img

    LVDBDisk

    u02

    u02_snap

    /dev/mapper/VGExaDbDisk.u03.15.img-LVDBDisk

    VGExaDbDisk.u03.15.img

    LVDBDisk

    u03

    u03_snap

    /dev/mapper/VGExaDbDisk.grid19.7.0.0.200414.img-LVDBDisk

    VGExaDbDisk.grid19.7.0.0.200414.img

    LVDBDisk

    u01app19000grid

    grid_snap

    ノート:

    • ゲストから収集した情報がこの例とは大きく異なる場合があります。必要な情報をゲストから直接収集し、現在の情報のみを使用するようにしてください。

    • 現在アクティブなシステム・ボリュームに応じて、ルート(/)ファイル・システムの論理ボリュームはLVDbSys1またはLVDbSys2となります。同様に、/varファイル・システムの論理ボリュームは、LVDbVar1またはLVDbVar2です。
  4. ファイル・システムのスナップショットとバックアップ・ファイルを作成します。

    前のステップで収集した、ゲストの情報の表を使用します。

    各コマンドでの適切な値に置き換えて、表の行ごとに次を実行します。

    1. スナップショットを作成します。
      # lvcreate -L1G -s -n LV-Name_snap /dev/VG-Name/LV-Name
    2. スナップショットにラベルを付けます。
      # xfs_admin -L Short-Label /dev/VG-Name/LV-Name_snap
    3. スナップショットをマウントします。
      # mkdir -p /root/mnt/Backup-Label
      # mount -o nouuid /dev/VG-Name/LV-Name_snap /root/mnt/Backup-Label
    4. バックアップのディレクトリに変更します。
      # cd /root/mnt/Backup-Label
    5. バックアップ・ファイルを作成します。
      • ルート(/)ファイル・システムの場合のみ、次のコマンドを使用して、バックアップ・ファイルに/bootの内容を含めます。

        # tar --acls --xattrs --xattrs-include=* --format=pax -pjcvf /root/remote_FS/rootfs-boot.tar.bz2 * /boot > /tmp/backup_tar.stdout 2> /tmp/backup_tar.stderr
      • それ以外の場合は、次のコマンド・テンプレートを使用します。

        # tar --acls --xattrs --xattrs-include=* --format=pax -pjcvf /root/remote_FS/Backup-Label.tar.bz2 * > /tmp/backup_tar.stdout 2> /tmp/backup_tar.stderr
    6. /tmp/backup_tar.stderrファイルをチェックして、重大なエラーがないかを確認します。

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

    7. スナップショットをアンマウントして削除します。
      # cd /
      # umount /root/mnt/Backup-Label
      # /bin/rmdir /root/mnt/Backup-Label
      # lvremove -f /dev/VG-Name/LV-Name_snap
  5. NFS共有をアンマウントします。
    # umount /root/remote_FS
  6. 論理ボリューム/dev/VGExaDb/LVDoNotRemoveOrUseを再作成します。
    # lvm lvcreate -n LVDoNotRemoveOrUse -L2G VGExaDb -y

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

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

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

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

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

  1. ゲストが使用するメモリーの量を減らす場合は、最初にゲストでOracle Databaseのメモリーの使用量とオペレーティング・システムのヒュージ・ページの構成設定を確認して調整する必要があります。
    1. データベースのSGAサイズを確認し、そのサイズを必要に応じて縮小します。

      ゲストで実行しているメモリー要件を最初に縮小しておかないと、ゲストは再起動に失敗することがあります。これは、Oracle Linuxオペレーティング・システムの起動時に、ヒュージ・ページ用に大量のメモリーを確保しようとするためです。詳細は、My Oracle SupportのドキュメントID 361468.1を参照してください。

    2. オペレーティング・システム構成を確認して、ヒュージ・ページのメモリー割当てを必要に応じて減らします。
    3. オペレーティング・システムのカーネル構成ファイル(/etc/sysctl.conf)でヒュージ・ページの設定を変更する場合は、initramfsファイルを再生成することでシステム構成の変更を反映します。

      既存のinitramfsファイルをバックアップしてから、dracutコマンドを使用してファイルを再生成する必要があります。次に例を示します。

      # ls -l /boot/initramfs-$(uname -r).img
      -rw------- 1 root root 55845440 Jan  8 10:34 /boot/initramfs-4.14.35-2047.508.3.3.el7uek.x86_64.img
      
      # cp /boot/initramfs-$(uname -r).img backup_directory
      
      # dracut --force
  2. KVMホストに接続します。

    この手順の残りの部分は、KVMホスト内で実行します。

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

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

    ノート:

    ゲストに空きメモリーを割り当てるときには、メタデータとコントロール構造を格納するために、約1%から2%の空きメモリーを確保しておいてください。
  4. ゲストのメモリー割当てを変更して、ゲストを再起動します。

    たとえば、db01_guest01.example.comを変更して、32GBのメモリー割当てを設定するには、次のコマンドを使用します。

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

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

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

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

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

仮想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.14 ゲストのディスク領域の増加

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

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

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

ファイル・システムまたはスワップ領域のサイズを拡大するために、ゲストにLVMディスクを追加できます。この手順の実行中も、システムはオンラインのままです。

ノート:

この手順では、KVMホストゲストの両方でアクションを実行します。

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

  1. KVMホストで、/EXAVMIMAGESに十分な空きディスク領域があることを確認します。次に例を示します。
    # df -h /EXAVMIMAGES
    Filesystem                           Size  Used Avail Use%  Mounted on
    /dev/mapper/VGExaDb-LVDbExaVMImages  1.5T   39G  1.5T   3%  /EXAVMIMAGES
  2. KVMホストで、新しいディスク・イメージを作成してゲストにアタッチします。

    たとえば、次のコマンドはゲスト固有のpv2_vgexadb.imgというディスク・イメージを、ゲストdm01db01vm01.example.comに追加します。

    # /opt/exadata_ovm/vm_maker --create --disk-image /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.img --attach --domain dm01db01vm01.example.com
    [INFO] Allocating an image for /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.img, size 52.000000G...
    [INFO] Running 'qemu-img create /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.img 52.000000G '...
    [INFO] Create label gpt on /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.img.
    [INFO]  Running 'parted -a none -s /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.img mklabel gpt'...
    [INFO] Running 'losetup -P -f /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.img'...
    [INFO] Finding loop device...
    [INFO]   loop device is /dev/loop0
    [INFO] Finding number of sectors...
    [INFO]   109051904 sectors
    [INFO] Finding sector size...
    [INFO]   512 bytes per sector
    [INFO] Creating filesystem on /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk...
    [INFO]  Running 'mkfs -t xfs   -b size=4096 -f /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk '...
    [INFO] Checking that we have a file system on /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk...
    [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/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.img
    [INFO] Running 'vgscan --cache'...
    [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] -  Check for the existence of a disk named: /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk. Use the 'lvdisplay' command and check the output.
    [INFO] 2. Create a mount directory for 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 new disk. Use the 'mount -a' command.
    [INFO] Note: when detaching and re-attaching the same disk multiple times, run the following command after detaching and before attaching in the guest domain:
    [INFO] 'lvm vgchange VGExaDbDisk.pv2_vgexadb.img -a -n' when re-attaching the same disk.

    この時点では、出力の最後に説明されている手動のステップを実行しないでください。ただし、手動のステップ番号1で示される論理ボリューム・パスをノートにとります。一般的に、論理ボリューム・パスの形式は/dev/VolumeGroupName/LogicalVolumeNameです。この例では、論理ボリューム・パスは/dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDiskです。

  3. KVMホストで、ゲストの使用可能なディスク・イメージをリストし、新規ディスク・イメージが作成されたことを確認します。

    前述のステップの例では、ディスク・イメージ・ファイルは/EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/pv2_vgexadb.imgとして識別されます。このイメージが、ゲストのディスク・イメージのリストに表示されるようになります。次に例を示します。

    # /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. ゲストで、新しく追加されたディスクを特定します。

    前述の論理ボリューム・パスとともにlvdisplayコマンドを使用します。

    # lvdisplay /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk
      --- Logical volume ---
      LV Path                /dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDisk
      LV Name                LVDBDisk
      VG Name                VGExaDbDisk.pv2_vgexadb.img
      LV UUID                ePC0Qe-PfOX-oCoP-Pd5n-2nDj-z0KU-c9IygG
      LV Write Access        read/write
      LV Creation host, time dm01db01vm01.example.com, 2022-01-10 03:06:18 -0800
      LV Status              available
      # open                 0
      LV Size                50.00 GiB
      Current LE             12800
      Segments               1
      Allocation             inherit
      Read ahead sectors     auto
      - currently set to     256
      Block device           252:11
  5. ゲストで、追加したディスク用に作成された論理ボリュームおよびボリューム・グループを削除します。
    新たに作成したディスクを使用して既存のボリューム・グループを拡張するには、このステップを実行する必要があります。
    1. 論理ボリュームを削除します。

      この例では、論理ボリューム・パスは/dev/VGExaDbDisk.pv2_vgexadb.img/LVDBDiskです。

      # 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. 論理ボリュームに付属するボリューム・グループを削除します。

      この例では、ボリューム・グループ名はVGExaDbDisk.pv2_vgexadb.imgです。

      # vgremove VGExaDbDisk.pv2_vgexadb.img
        Volume group "VGExaDbDisk.pv2_vgexadb.img" successfully removed
    この時点で残っているのは、論理ボリュームもボリューム・グループもない物理ボリュームのみです。
  6. ゲストで、新しく追加されたディスクの物理ボリューム・デバイスを特定します。

    pvdisplayコマンドを使用して、新しい物理ボリュームを見つけます。

    次の例は、新しい物理ボリュームを強調するために出力が切り捨てられています。

    # 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-ez3Sru
    ...
  7. ゲストで、新しい物理ボリュームを使用して、既存のボリューム・グループを拡張できます。

    次の例では、新しい物理ボリューム(/dev/sdf1)が、ボリューム・グループVGExaDbを拡張するために使用されます。このvgdisplayの出力は、VGExaDbを強調するために切り捨てられています。

    # vgdisplay -s
    ...
      "VGExaDb" 88.00 GiB [88.00 GiB used / 0 free]
    ...
    
    # vgextend VGExaDb /dev/sdf1
      Volume group "VGExaDb" successfully extended
    
    # vgdisplay -s
    ...
      "VGExaDb" <139.24 GiB [88.00 GiB used / <51.24 GiB free]
    ...

この手順によりボリューム・グループに追加される追加の領域を使用して、様々なファイル・システムのサイズを増やすには、次のトピックを参照してください。

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

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

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

ノート:

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

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

このタスクでは、追加のディスク領域を使用できることを想定しています。そうでない場合は、この手順を開始する前に新規LVMディスクのゲストへの追加のタスクを完了します。
  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. xfs_growfsコマンドを使用して、パーティションのサイズを変更します。
    # xfs_growfs /
  5. dfコマンドを使用して、アクティブなシステム・パーティションで領域が拡大されたことを確認します。
    # df -h /

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

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

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

ノート:

VGExaDbボリューム・グループ内に、少なくとも1GBの空き領域が必要です。空き領域は、ソフトウェア保守の際に、dbnodeupdate.shユーティリティで作成したLVMスナップショットで使用します。「Oracle Linuxデータベース・サーバーのスナップショット・ベースのバックアップの作成」の手順に従い、/ (root)および/u01ディレクトリのバックアップをスナップショット・ベースで作成する場合、VGExaDbボリューム・グループに少なくとも6GBの空き領域が必要です
このタスクでは、追加のディスク領域を使用できることを想定しています。そうでない場合は、この手順を開始する前に新規LVMディスクのゲストへの追加のタスクを完了します。
  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.14.4 Oracle Grid InfrastructureホームまたはDatabaseホーム・ファイル・システムのサイズの増加

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

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

このタスクでは、追加のディスク領域を使用できることを想定しています。

  1. ゲストに接続し、ファイル・システム・サイズを確認するには、dfコマンドを使用します。次に例を示します。
    # df -h
    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. KVMホストに接続して、ゲストをシャットダウンします。
    この例では、ゲスト名はdm01db01vm01.example.comです。
    # /opt/exadata_ovm/vm_maker --stop-domain dm01db01vm01.example.com
    
  3. KVMホストで、新しいディスク・イメージを作成してゲストにアタッチします。

    たとえば、次のコマンドでは、ゲスト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.

    出力に記載された手動のステップは実行しないでください。ただし、手動のステップ番号1で示される論理ボリューム・パスをノートにとります。

    一般的に、論理ボリューム・パスの形式は/dev/VolumeGroupName/LogicalVolumeNameです。

    この例では、論理ボリューム・パスは/dev/VGExaDbDisk.db03.img/LVDBDiskです。

  4. ゲストを再起動します。
    次に例を示します。
    # /opt/exadata_ovm/vm_maker --start-domain dm01db01vm01.example.com --console
  5. ゲストで、新しく追加されたディスク・デバイスを確認します。

    前述の論理ボリューム・パスとともにlvdisplayコマンドを使用します。

    # 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
  6. ゲストで、追加したディスク用に作成された論理ボリュームおよびボリューム・グループを削除します。
    新たに作成したディスクを使用して既存のボリューム・グループを拡張するには、このステップを実行する必要があります。
    1. 論理ボリュームを削除します。

      この例では、論理ボリューム・パスは/dev/VGExaDbDisk.db03.img/LVDBDiskです。

      # 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. 論理ボリュームに付属するボリューム・グループを削除します。

      この例では、ボリューム・グループ名はVGExaDbDisk.db03.imgです。

      # vgremove VGExaDbDisk.db03.img
        Volume group "VGExaDbDisk.db03.img" successfully removed
    この時点で残っているのは、論理ボリュームもボリューム・グループもない物理ボリュームのみです。
  7. ゲストで、新しく追加されたディスクの物理ボリューム・デバイスを特定します。

    物理ボリュームは、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
    ...
  8. ゲストで、拡張するファイル・システムのボリューム・グループを特定します。
    vgdisplayコマンドを使用します。ボリューム・グループ名には、Oracle Grid Infrastructureの場合はgridOracle Databaseの場合はdbが含まれます。次に例を示します。
    # vgdisplay -s
    ...
      "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]
    ...
  9. ゲストで、ボリューム・グループを拡張して、ボリューム・グループ内の追加領域を確認します。
    vgextendコマンドを使用して、以前に特定したボリューム・グループ名および物理ボリューム・デバイスを指定します。次に例を示します。
    # vgextend VGExaDbDisk.db-klone-Linux-x86-64-190000.50.img /dev/sdf4
      Volume group "VGExaDbDisk.db-klone-Linux-x86-64-190000.50.img" successfully extended
    vgdisplayコマンドは、現在ボリューム・グループに空き領域が存在することを確認する場合に使用します。次に例を示します。
    # vgdisplay -s
    ...
      "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" <101.24 GiB [<50.00 GiB used / <51.24 GiB free]
    ...
  10. ゲストで、次のlvextendコマンドを使用して、論理ボリュームのサイズを変更します。
    # lvextend -L +sizeG LogicalVolumePath

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

    # lvextend -L +10G /dev/VGExaDbDisk.db-klone-Linux-x86-64-190000.50.img/LVDBDisk
  11. ゲストで、xfs_growfsコマンドを使用してファイル・システム・パーティションのサイズを変更します。
    # xfs_growfs /u01/app/oracle/product/19.0.0.0/DbHome_3
  12. ゲストで、ファイル・システムのサイズが増加したことを確認します。次に例を示します。
    # df -h
    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
    ...
  13. KVMホストに接続して、バックアップ・イメージを削除します。

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

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

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

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

  1. KVMホストで、新しいディスク・イメージを作成してゲストにアタッチします。

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

    # /opt/exadata_ovm/vm_maker --create --disk-image /EXAVMIMAGES/swap2.img
     --attach --domain dm01db01vm01.example.com
    [INFO] Allocating an image for /EXAVMIMAGES/swap2.img, size 50.000000G...
    [INFO] Running 'qemu-img create /EXAVMIMAGES/swap2.img 50.000000G '...
    [INFO] Create label gpt on /EXAVMIMAGES/swap2.img.
    [INFO] Running 'parted -a none -s /EXAVMIMAGES/swap2.img mklabel gpt'...
    [INFO] Running 'losetup -P -f /EXAVMIMAGES/swap2.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/swap2.img
    [INFO] File /EXAVMIMAGES/GuestImages/dm01db01vm01.example.com/swap2.img is a reflink from 
    /EXAVMIMAGES/swap2.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.swap2.img/LVDBDisk exists.
    [INFO] - Run the command 'lvdisplay' to verify a disk with name '/dev/VGExaDbDisk.swap2.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.swap2.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.

    出力に記載された手動のステップは実行しないでください。ただし、手動のステップ番号1で示される論理ボリューム・パスをノートにとります。

    一般的に、論理ボリューム・パスの形式は/dev/VolumeGroupName/LogicalVolumeNameです。

    この例では、論理ボリューム・パスは/dev/VGExaDbDisk.swap2.img/LVDBDiskです。

  2. ゲストで、新しい論理ボリュームをスワップ・デバイスとして構成します。

    mkswapコマンドを使用し、/etc/fstabファイルで現在使用されていない一意のラベルで新しい論理ボリュームを構成します。

    次の例では、スワップ・デバイス・ラベルはSWAP2、論理ボリューム・パスは/dev/VGExaDbDisk.swap2.img/LVDBDiskです。

    # mkswap -L SWAP2 /dev/VGExaDbDisk.swap2.img/LVDBDisk
  3. ゲストで、新しいスワップ・デバイスを有効にします。

    -Lオプションを指定してswaponコマンドを使用し、新しく作成したスワップ・デバイスのラベルを指定します。

    次に例を示します。

    # swapon -L SWAP2
  4. ゲストで、swapon -sコマンドを使用して、新しいスワップ・デバイスが有効になっていることを確認します。

    次に例を示します。

    # swapon -s
    Filename                   Type            Size      Used     Priority
    /dev/dm-3                  partition       8388604   306108   -1
    /dev/VGExaDb/LVDbSwap2     partition       8388604   0        -2
    
  5. ゲストで、/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.15 KVMホストでの/EXAVMIMAGESの拡張

KVMホストの使用可能な領域を使用して/EXAVMIMAGESを拡張するには、この手順を使用します。

Exadataデータベース・サーバーでは、ローカル・ディスク記憶域はボリューム・マネージャによって管理され、使用可能なすべての記憶領域が単一のボリューム・グループに割り当てられます。また、ボリューム・グループには、様々なファイル・システムをサポートする多数の論理ボリュームが含まれています。KVMホストでは、ほとんどの領域がゲスト記憶域に使用される/EXAVMIMAGESに割り当てられます。

通常、必要に応じてファイル・システムを容易に拡張できるように、ボリューム・グループには適度な空き領域が確保されます。ディスク拡張キットをデータベース・サーバーに追加することで、追加の領域も使用できます。キットは4台のハード・ドライブで構成されます。これらのドライブはデータベース・サーバーの未使用のスロットに取り付けられます。

ノート:

ディスク拡張キットは、2ソケットのOracle Exadata Database Machineシステムでのみサポートされています。

ディスク拡張キットをインストールした場合は、この手順を続行する前に、「データベース・サーバーX8M-2以前へのディスク拡張キットの追加」で説明されている手順を完了していることを確認してください。

  1. ボリューム・グループを調べて、使用可能な空き領域を確認します。
    # vgs
       VG      #PV #LV #SN Attr   VSize VFree
       VGExaDb   1  11   0 wz--n- 3.27t <1.73t
  2. /EXAVMIMAGESの現在の領域割当てを確認します。
    # df /EXAVMIMAGES
    Filesystem                                1K-blocks      Used  Available Use% Mounted on 
    /dev/mapper/VGExaDb-LVDbExaVMImages      1572096000 250734224 1321361776  16% /EXAVMIMAGES
  3. /EXAVMIMAGESに関連づけられている論理ボリュームを拡張します。
    lvextendコマンドを使用して、論理ボリュームに領域を追加します。

    次の例では、使用可能な空き領域がすべて論理ボリュームに追加されます。

    # lvextend -l +100%FREE /dev/VGExaDb/LVDbExaVMImages
       Size of logical volume VGExaDb/LVDbExaVMImages changed from 1.46 TiB (384000 extents) to 3.19 TiB (837430 extents).
       Logical volume VGExaDb/LVDbExaVMImages successfully resized.

    将来使用するために空き領域を保持する必要がある場合は、使用可能な空き領域のサブセットを使用できます。たとえば、次のコマンドは使用可能な空き領域の90%を使用します。

    # lvextend -l +90%FREE /dev/VGExaDb/LVDbExaVMImages

    または、追加する領域の量を指定できます。たとえば、次のコマンドは論理ボリュームを500 GB拡大します。

    # lvextend -l +500G /dev/VGExaDb/LVDbExaVMImages
  4. /EXAVMIMAGESに関連づけられているファイル・システムを拡張します。
    xfs_growfsコマンドを使用して、ファイル・システムを拡張された論理ボリュームに拡張します。
    # xfs_growfs /EXAVMIMAGES 
    meta-data=/dev/mapper/VGExaDb-LVDbExaVMImages isize=512 agcount=32, agsize=12288000 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=1        finobt=0 spinodes=0 rmapbt=0
          =                       reflink=1    data
          =                       bsize=4096   blocks=393216000, imaxpct=5         
          =                       sunit=256    swidth=256 blks naming  
          =version 2              bsize=4096   ascii-ci=0 ftype=1 log     
          =internal               bsize=4096   blocks=192000, version=2
          =                       sectsz=512   sunit=8 blks, lazy-count=1 realtime
          =none                   extsz=4096   blocks=0, rtextents=0 data blocks changed from 393216000 to 857528320
  5. /EXAVMIMAGESの拡張を確認します。
    # df /EXAVMIMAGES
    Filesystem                                1K-blocks      Used  Available Use% Mounted on 
    /dev/mapper/VGExaDb-LVDbExaVMImages      3429345280 261835784 3167509496   8% /EXAVMIMAGE

6.16 Oracle Linux KVMクラスタの追加

Oracle Exadata Deployment Assistant (OEDA)を使用して、既存のExadata Database Machineに新しいOracle Linux KVMクラスタを作成できます。

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

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

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

    ノート:

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

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

    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

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

    すべてのKVMホストSystem.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)を、クラスタに追加する新しくイメージ化されたKVMホスト・ノードの/EXAVMIMAGESの場所に配置します。これらのファイルは、最初にシステムをデプロイしたKVMホスト・ノードの/EXAVMIMAGESディレクトリにあります。

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

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

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

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

    この時点で、構成内に新しい計算ノードのKVMホストが含まれた新しい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
    OEDACLI> SET PARENT NAME=exa01adm03
    OEDACLI> SET ADMINNET NAME=exa01adm03vm01,IP=xx.xx.xx.xx
    OEDACLI> SET PRIVNET NAME1=exa01db03vm01-priv1,IP1=xx.xx.xx.xx,NAME2=exa01db03vm01-priv2,IP2=xx.xx.xx.xx
    OEDACLI> SET CLIENTNET NAME=exa01client03vm01,IP=xx.xx.xx.xx
    OEDACLI> SET VIPNET NAME=exa01client03vm01-vip,IP=xx.xx.xx.xx
    
    OEDACLI> SAVE ACTION
    OEDACLI> MERGE ACTIONS
    OEDACLI> DEPLOY ACTIONS

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

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

    ノート:

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

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

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

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

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

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

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

    Deploying Action ID : 39 CLONE GUEST SRCNAME=exa01adm01vm01 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.18 ゲストの別のデータベース・サーバーへの移動

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

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

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

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

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

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

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

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

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

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

次の手順に従い、ゲストを同一のOracle Exadata System Software構成内の新しいデータベース・サーバーに移動します。

  1. KVMホストで、移動するゲストを停止します。
    # vm_maker --stop-domain GuestName
  2. ゲストのディスク・イメージと構成ファイルをターゲットのデータベース・サーバーにコピーします。

    次の例では、GuestNameゲストの名前で置き換え、targetをターゲットKVMホストのホスト名で置き換えます。

    # scp -r /EXAVMIMAGES/GuestImages/GuestName/ target:/EXAVMIMAGES/GuestImages
  3. ゲストのXML定義をターゲット・データベース・サーバーにコピーします。
    # scp /etc/libvirt/qemu/GuestName.xml target:/EXAVMIMAGES/GuestImages
  4. ターゲットKVMホストで、ドメインを定義します。
    # virsh define /EXAVMIMAGES/GuestImages/GuestName.xml
  5. Oracle Exadata System Softwareリリース20.1以降を使用している場合は、次のvm_makerコマンドをターゲットKVMホストで実行し、ゲストの移行を完了します。
    # vm_maker --update-mac GuestName

    ノート:

    • vm_maker --update-macコマンドは、Oracle Exadata System Softwareリリース20.1.4 (2020年11月)で初めて導入されました。以前の20.1リリースを使用している場合、このコマンドを取得するには更新を実行する必要があります。

    • このステップは、20.1より前のリリースのOracle Exadata System Softwareを使用しているシステムでは必要ありません。

  6. ターゲットKVMホストで、移行したゲストを起動します。
    # vm_maker --start-domain GuestName

6.19 KVMデプロイメントのリカバリ

KVMホストはバックアップからリカバリでき、ゲストはスナップショット・バックアップからリカバリできます。

重大な障害が発生してOracle KVMホストが損傷した場合や、サーバー・ハードウェアを新しいハードウェアに交換した場合は、スナップショット・ベースのバックアップからKVMホストをリカバリできます。

たとえば、すべてのハード・ディスクを交換すると、システムの元のソフトウェアはトレースできません。これは、ソフトウェアの完全なシステムの交換と似ています。

この項で説明するリカバリ手順には、Exadataストレージ・サーバーやOracle Databaseのデータのバックアップまたはリカバリは含まれていません。バックアップとリカバリ手順は定期的にテストすることをお薦めします。

6.19.1 KVMホストのスナップショット・ベースのリカバリの概要

KVMホストのリカバリは、一連のタスクで構成されています。

リカバリ手順では、仮想CD-ROMとしてdiagnostics.isoイメージを使用し、Integrated Lights Out Manager (ILOM)を使用してレスキュー・モードでKVMホストを再起動します。大まかなステップは次のとおりです。

  1. 次のものを再作成します。
    • ブート・パーティション
    • 物理ボリューム
    • ボリューム・グループ
    • 論理ボリューム
    • ファイル・システム
    • スワップ・パーティション
  2. スワップ・パーティションをアクティブ化します
  3. /bootパーティションがアクティブなブート・パーティションであることを確認します
  4. データをリストアします
  5. GRUBを再構成します
  6. サーバーを再起動します

6.19.2 KVMシステムのリカバリ・シナリオ

KVMシステム・デプロイメントをリカバリする方法。

次の例は、KVMシステムのリカバリに適用されます。

6.19.2.1 KVMホストとゲストのバックアップからのリカバリ

この手順では、KVMホストのバックアップとKVMホストのゲストのバックアップから、KVMホストとそのすべてのゲストをリカバリします。

重大な障害が発生して管理ドメインが損傷した場合や、サーバー・ハードウェアを新しいハードウェアに交換した場合は、次のステップを使用して、スナップショット・ベースのバックアップからKVMホストをリカバリできます。

NFSサーバーを準備して、スナップショット・ベースのバックアップを使用したKVMホストのバックアップで作成したバックアップ・アーカイブをホストします

IPアドレスを使用して、NFSサーバーにアクセスできる必要があります。たとえば、ディレクトリ/Backupにバックアップ・アーカイブが含まれる、IPアドレスnfs_ipを持つNFSサーバーなどです。

6.19.2.1.1 Exadata X9M-2でのKVMホストのリカバリ

この手順では、Exadata Database Machine X9M-2データベース・サーバーのKVMホストをリカバリする方法について説明します。

  1. サーバーをブートして、システムBIOSメニューを使用してディスク・コントローラのステータスを確認します。必要に応じて、ディスク・コントローラを構成して、ディスクを設定します。
  2. サーバーを診断モードで起動します。
    Oracle Exadata System Softwareユーザーズ・ガイド診断ISOファイルを使用したサーバーの起動を参照してください。
  3. 診断シェルにrootユーザーとしてログインします。
    プロンプトが表示されたら、診断シェルに入ります。

    次に例を示します。

    Choose from following by typing letter in '()':
    (e)nter interactive diagnostics shell. Must use credentials 
    from Oracle support to login (reboot or power cycle to exit
    the shell),
    (r)estore system from NFS backup archive, 
    Type e to enter the diagnostics shell and log in as the root user.
    プロンプトが表示されたら、rootユーザーとしてシステムにログインします。rootユーザーのパスワードの入力を求められ、それが不明である場合は、Oracleサポート・サービスに連絡してください。
  4. マウントされている場合は、/mnt/cellをアンマウントします
    # umount /mnt/cell
  5. サーバー上のmdデバイスを確認します。

    サーバーに、次の例に示すデバイスが含まれていることを確認します。サーバーが大きく異なる場合は、続行せず、Oracle Supportに連絡してください。

    # ls -al /dev/md*
    brw-rw---- 1 root disk   9, 126 Jul 15 06:59 /dev/md126
    brw-rw---- 1 root disk 259,   4 Jul 15 06:59 /dev/md126p1
    brw-rw---- 1 root disk 259,   5 Jul 15 06:59 /dev/md126p2
    brw-rw---- 1 root disk   9, 127 Jul 15 06:28 /dev/md127
    brw-rw---- 1 root disk   9,  25 Jul 15 06:28 /dev/md25
    
    /dev/md:
    total 0
    drwxr-xr-x  2 root root  140 Jul 15 06:59 .
    drwxr-xr-x 18 root root 3400 Jul 15 06:59 ..
    lrwxrwxrwx  1 root root    8 Jul 15 06:59 24_0 -> ../md126
    lrwxrwxrwx  1 root root   10 Jul 15 06:59 24_0p1 -> ../md126p1
    lrwxrwxrwx  1 root root   10 Jul 15 06:59 24_0p2 -> ../md126p2
    lrwxrwxrwx  1 root root    7 Jul 15 06:28 25 -> ../md25
    lrwxrwxrwx  1 root root    8 Jul 15 06:28 imsm0 -> ../md127
  6. 障害の発生後に論理ボリューム、ボリューム・グループおよび物理ボリュームが存在する場合は、それらを削除します。
    # lvm vgremove VGExaDb --force
    # lvm pvremove /dev/md25 --force
  7. 既存のパーティションを削除し、すべてのパーティションが削除されたことを確認します。
    1. 次のコマンドを使用して、既存のパーティションを削除します。
      # for v_partition in $(parted -s /dev/md126 print|awk '/^ / {print $1}')
      do
        parted -s /dev/md126 rm ${v_partition}
      done
    2. 次のコマンドを実行して確認します。
      # parted  -s /dev/md126 unit s print

      コマンド出力には、パーティションが表示されなくなります。

  8. ブート・パーティションを作成します。
    1. partdコマンドを使用して対話型セッションを開始します。
      # parted /dev/md126
    2. ディスク・ラベルを割り当てます。
      (parted) mklabel gpt
    3. ユニット・サイズをセクターとして設定します。
      (parted) unit s
    4. 既存のパーティションを表示して、パーティション表を確認します。
      (parted) print
    5. 前のステップでリストされたパーティションを削除します。
      (parted) rm part#
    6. 新しい最初のパーティションを作成します。
      (parted) mkpart primary 64s 15114206s
    7. 新しいパーティションをブート可能にします。
      (parted) set 1 boot on
  9. 2番目のプライマリ(起動)パーティションを作成します。
    1. UEFIブート・パーティションとして2番目のプライマリ・パーティションをfat32で作成します。
      (parted) mkpart primary fat32 15114207s 15638494s 
      (parted) set 2 boot on
    2. ディスクに情報を書き込んで、終了します。
      (parted) quit
  10. 物理ボリュームおよびボリューム・グループを作成します。
    # lvm pvcreate /dev/md25
    # lvm vgcreate VGExaDb /dev/md25

    物理ボリュームまたはボリューム・グループがすでに存在する場合は、次のように、削除してから再作成します。

    # lvm vgremove VGExaDb
    # lvm pvremove /dev/md25
    # lvm pvcreate /dev/md25
    # lvm vgcreate VGExaDb /dev/md25
  11. LVMパーティションを作成し、ファイル・システムを作成してマウントします。
    1. 論理ボリュームを作成します。
      # lvm lvcreate -n LVDbSys1 -L15G VGExaDb -y
      # lvm lvcreate -n LVDbSwap1 -L16G VGExaDb -y
      # lvm lvcreate -n LVDbSys2 -L15G VGExaDb -y
      # lvm lvcreate -n LVDbHome -L4G VGExaDb -y
      # lvm lvcreate -n LVDbVar1 -L2G VGExaDb -y
      # lvm lvcreate -n LVDbVar2 -L2G VGExaDb -y
      # lvm lvcreate -n LVDbVarLog -L18G VGExaDb -y
      # lvm lvcreate -n LVDbVarLogAudit -L1G VGExaDb -y
      # lvm lvcreate -n LVDbTmp -L3G VGExaDb -y
      # lvm lvcreate -n LVDoNotRemoveOrUse -L2G VGExaDb -y
      # lvm lvcreate -n LVDbExaVMImages -L1500G VGExaDb -y
      # lvextend -l +98%FREE /dev/VGExaDb/LVDbExaVMImages
    2. ファイル・システムを作成します。
      # mkfs.xfs -f /dev/VGExaDb/LVDbSys1
      # mkfs.xfs -f /dev/VGExaDb/LVDbSys2
      # mkfs.xfs -f /dev/VGExaDb/LVDbHome
      # mkfs.xfs -f /dev/VGExaDb/LVDbVar1
      # mkfs.xfs -f /dev/VGExaDb/LVDbVar2
      # mkfs.xfs -f /dev/VGExaDb/LVDbVarLog
      # mkfs.xfs -f /dev/VGExaDb/LVDbVarLogAudit
      # mkfs.xfs -f /dev/VGExaDb/LVDbTmp
      # mkfs.xfs -m crc=1 -m reflink=1 -f /dev/VGExaDb/LVDbExaVMImages
      # mkfs.xfs -f /dev/md126p1
      # mkfs.vfat -v -c -F 32 -s 2 /dev/md126p2
    3. ファイル・システムにラベルを付けます。
      # xfs_admin -L DBSYS /dev/VGExaDb/LVDbSys1
      # xfs_admin -L HOME /dev/VGExaDb/LVDbHome
      # xfs_admin -L VAR /dev/VGExaDb/LVDbVar1
      # xfs_admin -L DIAG /dev/VGExaDb/LVDbVarLog
      # xfs_admin -L AUDIT /dev/VGExaDb/LVDbVarLogAudit
      # xfs_admin -L TMP /dev/VGExaDb/LVDbTmp
      # xfs_admin -L EXAVMIMAGES /dev/VGExaDb/LVDbExaVMImages
      # xfs_admin -L BOOT /dev/md126p1
      # dosfslabel /dev/md126p2 ESP
    4. すべてのパーティションのマウント・ポイントを作成して、各パーティションをマウントします。

      たとえば、/mntがリカバリ操作の最上位ディレクトリとして使用されるとすると、次のコマンドを使用してディレクトリを作成し、パーティションをマウントできます。

      # mount -t xfs /dev/VGExaDb/LVDbSys1 /mnt
      # mkdir -p /mnt/home
      # mount -t xfs /dev/VGExaDb/LVDbHome /mnt/home
      # mkdir -p /mnt/var
      # mount -t xfs /dev/VGExaDb/LVDbVar1 /mnt/var
      # mkdir -p /mnt/var/log
      # mount -t xfs /dev/VGExaDb/LVDbVarLog /mnt/var/log
      # mkdir -p /mnt/var/log/audit
      # mount -t xfs /dev/VGExaDb/LVDbVarLogAudit /mnt/var/log/audit
      # mkdir -p /mnt/tmp
      # mount -t xfs /dev/VGExaDb/LVDbTmp /mnt/tmp
      # mkdir -p /mnt/EXAVMIMAGES
      # mount -t xfs /dev/VGExaDb/LVDbExaVMImages /mnt/EXAVMIMAGES
      # mkdir -p /mnt/boot
      # mount -t xfs /dev/md126p1 /mnt/boot
      # mkdir -p /mnt/boot/efi
      # mount -t vfat /dev/md126p2 /mnt/boot/efi
  12. システム・スワップ領域を作成します。

    次に例を示します。

    # mkswap -L SWAP /dev/VGExaDb/LVDbSwap1
  13. インタフェースを起動します。
    # ip address add ip_address_for_eth0/netmask_for_eth0 dev eth0
    # ip link set up eth0
    # ip route add default via gateway_address dev eth0
  14. バックアップを含むNFSサーバーをマウントします。

    次の例は、IPアドレスがnfs_ipであるNFSサーバーの/exportディレクトリにバックアップがあることを前提としています。

    # mkdir -p /root/mnt
    # mount -t nfs -o ro,intr,soft,proto=tcp,nolock nfs_ip:/export /root/mnt
  15. バックアップからファイルをリストアします。

    スナップショットベースのバックアップを使用したKVMホストのバックアップの手順を使用してバックアップが作成されている場合、次のコマンドを使用してファイルをリストアできます。

    # tar --acls --xattrs --xattrs-include=* --format=pax -pjxvf /root/mnt/myKVMbackup.tar.bz2 -C /mnt
  16. kdumpサービス用のディレクトリを作成します
    # mkdir /mnt/EXAVMIMAGES/crashfiles
  17. リストアしたfstabファイル(/mnt/etc/fstab)をチェックして、/EXAVMIMAGESを参照する行をすべてコメント・アウトします。
  18. リストアされたファイル・システムをアンマウントします。

    次に例を示します。

    # umount /mnt/tmp
    # umount /mnt/var/log/audit
    # umount /mnt/var/log
    # umount /mnt/var
    # umount /mnt/home
    # umount /mnt/EXAVMIMAGES
    # umount /mnt/boot/efi
    # umount /mnt/boot
    # umount /mnt
  19. 起動デバイスを確認し、起動順序を設定します。
    1. 使用可能なブート・デバイスを確認し、Redhat Boot Manager (\EFI\REDHAT\SHIMX64.EFI)に関連付けられたブート・デバイスを特定します。

      次に例を示します。

      # efibootmgr -v
      BootCurrent: 0019
      Timeout: 1 seconds
      BootOrder:
      0019,0000,0002,0010,0009,0017,000A,000B,0018,0005,0006,0007,0008,0013,0014,0015,0016,0003,0011,0004,0012,001A
      Boot0000* RedHat Boot Manager HD(2,GPT,eec54dfd-8928-4874-833d-5b0b9e914b99,0xe69fdf,0x80000)/File(\EFI\REDHAT\SHIMX64.EFI)
      Boot0002* NET0:PXE IPv4 Intel(R) I210 Gigabit  Network Connection /Pci(0x1c,0x4)/Pci(0x0,0x0)/MAC(0010e0fc6e94,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0003* PCIE5:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:22:38:0A /Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(b8cef622380a,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0004* PCIE5:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:22:38:0B /Pci(0x2,0x0)/Pci(0x0,0x1)/MAC(b8cef622380b,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0005* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter /Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(3cfdfe915070,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0006* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter /Pci(0x2,0x0)/Pci(0x0,0x1)/MAC(3cfdfe915071,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0007* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter /Pci(0x2,0x0)/Pci(0x0,0x2)/MAC(3cfdfe915072,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0008* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter /Pci(0x2,0x0)/Pci(0x0,0x3)/MAC(3cfdfe915073,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0009* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9C /Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(b8cef644519c,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot000A* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9D /Pci(0x2,0x0)/Pci(0x0,0x1)/MAC(b8cef644519d,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot000B* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9D /Pci(0x2,0x0)/Pci(0x0,0x1)/MAC(b8cef644519d,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0010* NET0:PXE IPv4 Intel(R) I210 Gigabit  Network Connection /Pci(0x1c,0x4)/Pci(0x0,0x0)/MAC(0010e0fc6e94,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0011* PCIE5:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:22:38:0A /Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(b8cef622380a,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0012* PCIE5:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:22:38:0B /Pci(0x2,0x0)/Pci(0x0,0x1)/MAC(b8cef622380b,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0013* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter /Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(3cfdfe915070,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0014* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter /Pci(0x2,0x0)/Pci(0x0,0x1)/MAC(3cfdfe915071,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0015* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter /Pci(0x2,0x0)/Pci(0x0,0x2)/MAC(3cfdfe915072,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0016* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter /Pci(0x2,0x0)/Pci(0x0,0x3)/MAC(3cfdfe915073,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0017* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9C /Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(b8cef644519c,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0018* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9D /Pci(0x2,0x0)/Pci(0x0,0x1)/MAC(b8cef644519d,1)/IPv4(0.0.0.00.0.0.0,0,0)..BO
      Boot0019* USB:SP:SUN Remote ISO CDROM1.01 /Pci(0x14,0x0)/USB(7,0)/USB(3,0)/CDROM(1,0x28,0x3100)..BO
      Boot001A* Oracle Linux (grubx64.efi) HD(2,GPT,eec54dfd-8928-4874-833d-5b0b9e914b99,0xe69fdf,0x80000)/File(\EFI\REDHAT\GRUBX64.EFI)..BO
      MirroredPercentageAbove4G: 0.00
      MirrorMemoryBelow4GB: false
    2. Redhat Boot Manager (\EFI\REDHAT\SHIMX64.EFI)に関連付けられたデバイスを、ブート順序の最初になるように構成します。

      この例では、Redhat Boot Managerがブートデバイス0000に関連付けられています。

      # efibootmgr -o 0000
      BootCurrent: 0019
      Timeout: 1 seconds
      BootOrder: 0000
      Boot0000* RedHat Boot Manager
      Boot0002* NET0:PXE IPv4 Intel(R) I210 Gigabit  Network Connection
      Boot0003* PCIE5:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:22:38:0A
      Boot0004* PCIE5:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:22:38:0B
      Boot0005* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter
      Boot0006* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter
      Boot0007* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter
      Boot0008* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter
      Boot0009* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9C
      Boot000A* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9D
      Boot000B* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9D
      Boot0010* NET0:PXE IPv4 Intel(R) I210 Gigabit  Network Connection
      Boot0011* PCIE5:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:22:38:0A
      Boot0012* PCIE5:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:22:38:0B
      Boot0013* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter
      Boot0014* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter
      Boot0015* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter
      Boot0016* PCIE3:PXE IPv4 Oracle Quad Port 10GBase-T Adapter
      Boot0017* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9C
      Boot0018* PCIE1:PXE IPv4 Mellanox Network Adapter - B8:CE:F6:44:51:9D
      Boot0019* USB:SP:SUN Remote ISO CDROM1.01
      Boot001A* Oracle Linux (grubx64.efi)
      MirroredPercentageAbove4G: 0.00
      MirrorMemoryBelow4GB: false
  20. システムを再起動します。
    # reboot
  21. diagnostics.isoファイルを切り離します。
    Oracle Exadata System Softwareユーザーズ・ガイド診断ISOファイルを使用したサーバーの起動を参照してください。
  22. rootユーザーとして、サーバーに再ログインします。
  23. imageinfoコマンドを実行して、イメージのステータスがsuccessであることを確認します。

    次に例を示します。

    # imageinfo
    
    Kernel version: 4.14.35-2047.502.5.el7uek.x86_64 #2 SMP Wed Apr 14 15:08:41
    PDT 2021 x86_64
    Uptrack kernel version: 4.14.35-2047.503.1.el7uek.x86_64 #2 SMP Fri Apr 23
    15:20:41 PDT 2021 x86_64
    Image kernel version: 4.14.35-2047.502.5.el7uek
    Image version: 21.2.1.0.0.210608
    Image activated: 2021-07-12 14:58:03 +0900
    Image status: success
    Node type: COMPUTE
    System partition on device: /dev/mapper/VGExaDb-LVDbSys1
KVMホストがリカバリされました。
6.19.2.1.2 Exadata X8M-2でのKVMホストのリカバリ

この手順では、Exadata Database Machine X8M-2データベース・サーバーのKVMホストをリカバリする方法について説明します。

  1. サーバーを診断モードで起動します。
    Oracle Exadata System Softwareユーザーズ・ガイド診断ISOファイルを使用したサーバーの起動を参照してください。
  2. 診断シェルにrootユーザーとしてログインします。
    プロンプトが表示されたら、診断シェルに入ります。

    次に例を示します。

    Choose from following by typing letter in '()':
    (e)nter interactive diagnostics shell. Must use credentials 
    from Oracle support to login (reboot or power cycle to exit
    the shell),
    (r)estore system from NFS backup archive, 
    Type e to enter the diagnostics shell and log in as the root user.
    プロンプトが表示されたら、rootユーザーとしてシステムにログインします。rootユーザーのパスワードの入力を求められ、それが不明である場合は、Oracleサポート・サービスに連絡してください。
  3. 必要に応じて、/opt/MegaRAID/storcli/storcli64を使用して、ディスク・コントローラを構成してディスクを設定します。
  4. 障害の発生後に論理ボリューム、ボリューム・グループおよび物理ボリュームが存在する場合は、それらを削除します。
    # lvm vgremove VGExaDb --force
    # lvm pvremove /dev/sda3 --force
  5. 既存のパーティションを削除し、すべてのパーティションが削除されたことを確認します。次のスクリプトを使用できます。
    # for v_partition in $(parted -s /dev/sda print|awk '/^ / {print $1}')
    do
      parted -s /dev/sda rm ${v_partition}
    done
     
    # parted  -s /dev/sda unit s print
    Model: AVAGO MR9[ 2783.921605]  sda:361-16i (scsi)
    Disk /dev/sda: 3509760000s
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags:  
    
    Number  Start   End  Size  File system Name  Flags
  6. 3つのパーティションを/dev/sdaに作成します
    1. ディスク/dev/sdaの終了セクターを残りのKVMホストから取得し、変数に保存します。
      # end_sector_logical=$(parted -s /dev/sda unit s print|perl -ne '/^Disk\s+\S+:\s+(\d+)s/
                and print $1')
      # end_sector=$( expr $end_sector_logical - 34 )
      # echo $end_sector
      次のコマンドの開始および終了セクターの値は、残存しているKVMホストから取得されたものです。これらの値は時間とともに変化することがあるため、この手順を実行するとき、これらの値をKVMホストから確認することをお薦めします。たとえば、Oracle Exadata Database Machine X8M-2データベース・サーバーの場合は、次のように表示されます。
      # parted -s /dev/sda  unit s print
      Model:  AVAGO MR9361-16i (scsi)
      Disk  /dev/sda: 7025387520s
      Sector  size (logical/physical): 512B/512B
      Partition  Table: gpt
      Disk  Flags:  
      Number   Start     End         Size         File system   Name     Flags  
      1        64s       1048639s    1048576s     xfs           primary  boot  
      2        1048640s  1572927s    524288s      fat32         primary  boot  
      3        1572928s  7025387486s 7023814559s                primary  lvm
    2. ブート・パーティション/dev/sda1を作成します。
      # parted -s /dev/sda  mklabel gpt mkpart primary 64s 1048639s set 1 boot on
    3. efiブート・パーティション/dev/sda2を作成します。
      # parted -s /dev/sda  mkpart primary fat32 1048640s 1572927s set 2 boot on
    4. 論理ボリューム/dev/sda3を保持するパーティションを作成します。
      # parted -s /dev/sda mkpart primary 1572928s ${end_sector}s set 3 lvm on
    5. すべてのパーティションが作成されたことを確認します。
      # parted -s /dev/sda unit s print
      Model: AVAGO MR9[2991.834796]  sda: sda1 sda2 sda3
      361-16i(scsi)
      Disk /dev/sda:3509760000s
      Sector size(logical/physical): 512B/512B
      Partition Table:gpt
      Disk Flags:
      Number  Start    End            Size          File system    Name    Flags 
      1       64s      1048639s       1048576s      xfs            primary boot 
      2       1048640s 1572927s       524288s       fat32          primary boot   
      3       1572928s 3509759966s    3508187039s                  primary lvm
  7. 論理ボリュームおよびファイル・システムを作成します。
    1. 物理ボリュームおよびボリューム・グループを作成します。
      # lvm pvcreate /dev/sda3
      # lvm vgcreate VGExaDb /dev/sda3
    2. 最初のシステム・パーティションを含むファイル・システムの論理ボリュームを作成してラベル付けし、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbSys1 -L15G VGExaDb -y
      # mkfs.xfs -L DBSYS /dev/VGExaDb/LVDbSys1 -f
    3. スワップ・ディレクトリの論理ボリュームを作成して、ラベルを付けます。
      # lvm lvcreate -n LVDbSwap1 -L16G VGExaDb -y
      # mkswap -L SWAP /dev/VGExaDb/LVDbSwap1
    4. 2つ目のシステム・パーティションの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbSys2 -L15G VGExaDb -y
      # mkfs.xfs /dev/VGExaDb/LVDbSys2
    5. HOMEパーティションの論理ボリュームを作成してラベル付けし、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbHome -L4G VGExaDb -y
      # mkfs.xfs -L HOME /dev/VGExaDb/LVDbHome
    6. tmpパーティションの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbTmp -L3G VGExaDb -y
      # mkfs.xfs -L TMP /dev/VGExaDb/LVDbTmp -f
    7. 最初のvarパーティションの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbVar1 -L2G VGExaDb -y
      # mkfs.xfs -L VAR /dev/VGExaDb/LVDbVar1 -f
    8. 2つ目のvarパーティションの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbVar2 -L2G VGExaDb -y
      # mkfs.xfs /dev/VGExaDb/LVDbVar2 -f
    9. LVDbVarLogパーティションの論理ボリュームを作成してラベル付けし、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbVarLog -L18G VGExaDb -y
      # mkfs.xfs -L DIAG /dev/VGExaDb/LVDbVarLog -f
    10. LVDbVarLogAuditパーティションの論理ボリュームを作成してラベル付けし、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbVarLogAudit -L1G VGExaDb -y
      # mkfs.xfs -L AUDIT /dev/VGExaDb/LVDbVarLogAudit -f
    11. LVDoNotRemoveOrUse論理ボリュームを作成します。
      # lvm lvcreate -n LVDoNotRemoveOrUse -L2G VGExaDb -y
    12. ゲスト記憶域リポジトリの論理ボリュームを作成し、その論理ボリュームにxfsファイル・システムを構築します。
      # lvm lvcreate -n LVDbExaVMImages -L1500G VGExaDb -y
      # mkfs.xfs -m crc=1 -m reflink=1 -L EXAVMIMAGES /dev/VGExaDb/LVDbExaVMImages -f
    13. /dev/sda1パーティションにファイル・システムを作成し、ラベルを付けます。
      # mkfs.xfs -L BOOT /dev/sda1 -f
    14. /dev/sda2パーティションにファイル・システムを作成し、ラベルを付けます。
      # mkfs.vfat -v -c -F 32 -s 2 /dev/sda2
      # dosfslabel /dev/sda2 ESP
  8. すべてのパーティションのマウント・ポイントを作成して、各パーティションをマウントします。
    たとえば、/mntが最上位ディレクトリとして使用されると、マウントされるパーティションのリストは次のようになります。
    /dev/VGExaDb/LVDbSys1 on /mnt
    /dev/sda1 on /mnt/boot
    /dev/sda2 on /mnt/boot/efi
    /dev/VGExaDb/LVDbHome on /mnt/home
    /dev/VGExaDb/LVDbTmp on /mnt/tmp
    /dev/VGExaDb/LVDbVar1 on /mnt/var
    /dev/VGExaDb/LVDbVarLog on /mnt/var/log
    /dev/VGExaDb/LVDbVarLogAudit on /mnt/var/log/audit
    /dev/VGExaDb/LVDbExaVMImages on /mnt/EXAVMIMAGES
    次の例では、システム・パーティションをマウントし、ブート・パーティション用に2つのマウント・ポイントを作成します
    # mount /dev/VGExaDb/LVDbSys1 /mnt -t xfs
    # mkdir /mnt/boot
    # mount /dev/sda1 /mnt/boot -t xfs
    # mkdir /mnt/boot/efi
    # mount /dev/sda2 /mnt/boot/efi -t vfat
    # mkdir /mnt/home
    # mount /dev/VGExaDb/LVDbHome /mnt/home -t xfs
    # mkdir /mnt/tmp
    # mount /dev/VGExaDb/LVDbTmp /mnt/tmp -t xfs
    # mkdir /mnt/var
    # mount /dev/VGExaDb/LVDbVar1 /mnt/var -t xfs
    # mkdir /mnt/var/log
    # mount /dev/VGExaDb/LVDbVarLog /mnt/var/log -t xfs
    # mkdir /mnt/var/log/audit
    # mount /dev/VGExaDb/LVDbVarLogAudit /mnt/var/log/audit -t xfs
    # mkdir /mnt/EXAVMIMAGES
    # mount /dev/VGExaDb/LVDbExaVMImages /mnt/EXAVMIMAGES -t xfs
  9. eth0でネットワークを起動し、(DHCPを使用していない場合は)ホストのIPアドレスおよびネットマスクを割り当てます。DHCPを使用している場合は、ホストのIPアドレスを手動で構成します。
    # ip link set eth0 up
    # ip address add ip_address_for_eth0/netmask_for_eth0 dev eth0
    # ip route add default via gateway_ip_address dev eth0
  10. バックアップを保持するNFSサーバーをマウントします。
    # mkdir -p /root/mnt
    # mount -t nfs -o ro,intr,soft,proto=tcp,nolock nfs_ip:/location_of_backup  /root/mnt
  11. バックアップからファイルをリストアします。

    スナップショットベースのバックアップを使用したKVMホストのバックアップの手順を使用してバックアップが作成されている場合、次のコマンドを使用してファイルをリストアできます。

    # tar --acls --xattrs --xattrs-include=* --format=pax -pjxvf /root/mnt/myKVMbackup.tar.bz2 -C /mnt
  12. kdumpサービス用のディレクトリを作成します
    # mkdir /mnt/EXAVMIMAGES/crashfiles
  13. efibootmgrを使用して起動デバイスを設定します。
    1. Oracle Linuxの起動デバイスを無効にして削除します。
      エントリExadataLinux_1が表示された場合、このエントリを削除して再作成します。次に例を示します。
      # efibootmgr
      BootCurrent:  0000
      Timeout:  1 seconds
      BootOrder: 0000,0001,000A,000B,0007,0008,0004,0005
      Boot0000*  ExadataLinux_1
      Boot0001*  NET0:PXE IP4 Intel(R) I210 Gigabit Network Connection
      Boot0004*  PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter
      Boot0005*  PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet  Adapter
      Boot0007*  NET1:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot0008*  NET2:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot000A   PCIE2:PXE IP4 Mellanox Network Adapter - 50:6B:4B:CB:EF:F2
      Boot000B   PCIE2:PXE IP4 Mellanox Network Adapter - 50:6B:4B:CB:EF:F3
      MirroredPercentageAbove4G:  0.00
      MirrorMemoryBelow4GB:  false    
      この例では、ExadataLinux_1 (Boot000)は無効になり削除されます。次のコマンドを使用して、起動デバイスを無効にして削除します。

      古いExadataLinux_1を無効にします。

      # efibootmgr -b 0000 -A
      古いExadataLinux_1を削除します。
      # efibootmgr -b 0000 -B
    2. ExadataLinux_1の起動エントリを再作成してから、起動順序エントリを表示します。
      # efibootmgr -c -d /dev/sda  -p 2 -l '\EFI\REDHAT\SHIM.EFI' -L 'ExadataLinux_1'
      # efibootmgr
      BootCurrent:  0000
      Timeout:  1 seconds
      BootOrder: 0000,0001,0007,0008,0004,0005,000B,000C
      Boot0000*  ExadataLinux_1
      Boot0001*  NET0:PXE IP4 Intel(R) I210 Gigabit Network Connection
      Boot0004*  PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet  Adapter
      Boot0005*  PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet  Adapter
      Boot0007*  NET1:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot0008*  NET2:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot000B*  PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:46
      Boot000C*  PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:47
      MirroredPercentageAbove4G: 0.00
      MirrorMemoryBelow4GB: false
    3. efibootmgrコマンドの出力で、ExadataLinux_1の起動順序番号をノートにとり、次のコマンドでその値を使用します。
      # efibootmgr -b entry number -A
      # efibootmgr -b entry number -a
      たとえば、ステップ13.bで表示された前の出力では、ExadataLinux_1は(Boot0000)としてリストされていました。したがって、次のコマンドを使用します。
      # efibootmgr -b 0000 -A
      # efibootmgr -b 0000 -a
    4. 正しい起動順序を設定します。最初の起動デバイスとしてExadataLinux_1を設定します。
      残りのデバイスの起動順序は同じに保つ必要があります
      # efibootmgr -o 0000,0001,0004,0005,0007,0008,000B,000C
    5. 起動順序を確認します。
      起動順序は次のようになります。
      # efibootmgr
      BootCurrent: 0000
      Timeout: 1 seconds
      BootOrder: 0000,0001,0004,0005,0007,0008,000B,000C
      Boot0000* ExadataLinux_1
      Boot0001* NET0:PXE IP4 Intel(R) I210 Gigabit Network Connection
      Boot0004* PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter
      Boot0005* PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter
      Boot0007* NET1:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot0008* NET2:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller
      Boot000B* PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:46
      Boot000C* PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:47
      MirroredPercentageAbove4G: 0.00
      MirrorMemoryBelow4GB: false 
    6. ubiosconfigコマンドを使用して、起動順序を確認します。
      # ubiosconfig export all -x /tmp/ubiosconfig.xml
      ExadataLinux_1のエントリがboot_orderの最初の子要素であることを確認します。
      # cat /tmp/ubiosconfig.xml
      <boot_order>
       <boot_device>
        <description>ExadataLinux_1</description>
        <instance>1</instance> </boot_device>
       <boot_device>
        <description>NET0:PXE IP4 Intel(R) I210 Gigabit Network Connection</description>
        <instance>1</instance>
       </boot_device>
       <boot_device>
        <description>PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter</description>
        <instance>1</instance> 
       </boot_device>
       <boot_device>
        <description>PCIE1:PXE IP4 Oracle dual 25Gb Ethernet Adapter or dual 10Gb Ethernet Adapter</description>
        <instance>2</instance> 
       </boot_device>
       <boot_device>
        <description>NET1:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller</description>
        <instance>1</instance>
       </boot_device>
       <boot_device>
        <description>NET2:PXE IP4 Oracle Dual Port 10Gb/25Gb SFP28 Ethernet Controller</description>
        <instance>1</instance> 
       </boot_device>
       <boot_device>
        <description>PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:46</description>
        <instance>1</instance>
       </boot_device>
       <boot_device> <description>PCIE2:PXE IP4 Mellanox Network Adapter - EC:0D:9A:CC:1E:47</description>
        <instance>1</instance> </boot_device> </boot_order>
    7. リストアしたfstabファイルを確認し、/EXAVMIMAGESへの参照をコメント・アウトします。

      /mnt/etcに移動します。

      # cd /mnt/etc

      /mount/etc/fstabファイルで、/EXAVMIMAGESを参照する行をすべてコメント・アウトします。

KVMホストがリカバリされました。
6.19.2.1.3 KVMホストの再起動

KVMホストを起動し、管理者操作を続行します。

KVMホストのパーティションがサーバーにリストアされたため、起動順序ではExadataLinux_1が最初のデバイスになっています。
  1. diagnostics.isoファイルを切り離します。
    ILOM Webインタフェース・コンソールを使用してCDROMイメージを接続したと仮定して、「Disconnect」ボタンをクリックします。
  2. リストアされた/dev/sda1パーティションをアンマウントし、/dev/sda1/bootに再マウントできるようにします。
    # cd /
    # umount /mnt/boot/efi
    # umount /mnt/boot
    # umount /mnt/home
    # umount /mnt/var/log/audit
    # umount /mnt/var/log/
    # umount /mnt/var
    # umount /mnt/EXAVMIMAGES/
    # umount /mnt
    # umount /root/mnt
  3. システムを再起動します。
    # reboot
    現在の/bootパーティションがサーバーの起動に使用されます。
6.19.2.1.4 KVMゲストのリカバリと再起動

KVMホストからすべてのKVMゲストをリカバリします。

この手順は、方法1: すべてのKVMゲストのバックアップで説明されている推奨バックアップ手順を補完するものです。これは、リカバリ後にKVMホストが動作可能であることと、すべてのゲストがリカバリされることが前提となっています。

  1. ゲスト記憶域リポジトリ(/EXAVMIMAGES)バックアップを保持するバックアップNFSサーバーをマウントし、/EXAVMIMAGESファイル・システムをリストアします。
    # mkdir -p /root/mnt
    # mount -t nfs -o ro,intr,soft,proto=tcp,nolock nfs_ip:/location_of_backup /root/mnt
  2. /EXAVMIMAGESファイル・システムをマウントします。
    # mount -t xfs /dev/VGExaDb/LVDbExaVMImages /EXAVMIMAGES
  3. /EXAVMIMAGESファイル・システムをリストアします。

    たとえば、すべてのゲストをリストアするには、次のコマンドを使用します。

    # tar --acls --xattrs --xattrs-include=* --format=pax -Spxvf /root/mnt/exavmimages.tar.bz2 -C /
  4. 各ゲストのXML構成ファイルを確認します。

    KVMホストのリカバリ中に、各ゲストのXML構成ファイルが/etc/libvirt/qemu/guestname.XMLにリストアされます。また、前のステップでは、各ゲストのXMLファイルのコピーが/XML/guestname.XMLにリストアされます。

    各ゲストのXML構成ファイルを比較します。次に例を示します。

    # diff /etc/libvirt/qemu/guestname.xml /XML/guestname.xml

    ほとんどの場合、それらのXML構成ファイルは同じになります。ただし、差異がある場合は、両方のファイルを調べ、最新の構成を/etc/libvirt/qemu/guestname.xmlにコピーする必要があります。

  5. リストアされた各ゲストをKVMハイパーバイザで定義します。
    # virsh define /etc/libvirt/qemu/guestname.xml
  6. リストアされた各ゲストに対して自動起動を有効にします。
    # /opt/exadata_ovm/vm_maker --autostart guestname --disable
    # /opt/exadata_ovm/vm_maker --autostart guestname --enable
  7. NFSバックアップをアンマウントします。
    # umount /root/mnt
  8. fstabファイル内の/EXAVMIMAGESへのすべての参照をリストアします。

    /etc/fstabファイルで、/EXAVMIMAGESを参照するすべての行のコメントを削除します。

  9. 各ゲストを起動します
    # /opt/exadata_ovm/vm_maker --start-domain guestname
この時点で、すべてのゲストがOracle Grid InfrastructureとOracle Databaseインスタンスとともに稼働します。
6.19.2.2 KVMホストの再イメージ化とゲストのバックアップからのリストア

この手順では、管理ドメインを再イメージ化し、KVMゲストのバックアップからすべてのユーザー・ドメインを再構築します。

次の手順は、修復不可能な損傷がKVMホストで発生したときに、KVMホストのバックアップは存在しないが、すべてのゲストを含む記憶域リポジトリ(/EXAVMIMAGESファイル・システム)のバックアップが利用可能な場合に使用できます。

  1. Oracle Exadata Database Serverの再イメージ化の手順を使用して、ラック内のその他のホストで使用されているイメージでKVMホストを再イメージ化します。
  2. Oracle Exadata Database Machineエイス・ラックでリカバリを実行する場合は、「Oracle Exadata Database Machineエイス・ラックのOracle Linuxデータベース・サーバーのリカバリ後の構成」の手順を実行します。
  3. 結合インタフェースと結合ネットワーク・ブリッジを作成します。

    次のコマンドでは、ネットワーク・ブリッジの名前としてvmbondeth0を使用しています。

    # /opt/exadata_ovm/vm_maker --add-bonded-bridge vmbondeth0 --first-slave eth1 --second-slave eth2
  4. ゲストのバックアップを含むバックアップNFSサーバーをマウントします

    この手順では、バックアップNFSサーバーは/remote_FSにマウントされています。

    # mkdir -p /remote_FS
    # mount -t nfs -o ro,intr,soft,proto=tcp,nolock nfs_ip:/location_of_backup /remote_FS
  5. /EXAVMIMAGESファイル・システムをリストアします。
    # tar --acls --xattrs --xattrs-include=* --format=pax -Spxvf /remote_FS/backup-of-exavmimages.tar -C /

    ノート:

    リストア後の、/EXAVMINAGESの下のゲスト・イメージ・ファイルは、別々の通常のファイルです。したがって、/EXAVMINAGES内の領域使用量は、元の領域使用量と比べて、リストア処理後に増加していることがあります。これは、ファイルをreflinkしたことに関連する節約によって恩恵を受けている可能性があります。

  6. KVMハイパーバイザのゲスト固有ファイルをリストアします
    # /usr/bin/cp /XML/*.xml /etc/libvirt/qemu/

    ノート:

    このステップでは、/XMLにリストアされたファイルがバックアップ手順の間にバックアップの場所にコピーされていることを前提としています。

  7. KVMハイパーバイザで各ゲストを定義します。
    # virsh define /etc/libvirt/qemu/guestname.xml
  8. リストアされた各ゲストに対して自動起動を有効にします。
    # /opt/exadata_ovm/vm_maker --autostart guestname --disable
    # /opt/exadata_ovm/vm_maker --autostart guestname --enable
  9. 各ゲストを起動します
    # /opt/exadata_ovm/vm_maker --start-domain guestname
    この時点で、すべてのゲストがOracle Grid Infrastructureとデータベース・インスタンスとともに起動します。
6.19.2.3 1つのKVMゲストのリカバリと再起動

KVMホストから、特定のゲストをリカバリできます。

この手順は、方法2: 個々のゲストのバックアップで説明されているバックアップ手順を補完するものです。これは、KVMホストが動作可能であることと、リカバリされるゲストがKVMホストに存在しないことが前提となっています。

  1. ゲストのバックアップを保持するバックアップNFSサーバーをマウントします。
    # mkdir -p /root/mnt
    # mount -t nfs -o ro,intr,soft,proto=tcp,nolock nfs_ip:/location_of_backup /root/mnt
  2. ゲスト・イメージ・ファイルをリストアします。

    たとえば、次のコマンドを使用して、exavmimage.tar.bz2というゲスト・バックアップ・ファイルの内容を抽出します。

    # tar --acls --xattrs --xattrs-include=* --format=pax -Spxvf /root/mnt/exavmimage.tar.bz2 -C /
  3. ゲストのXML構成ファイルをリストアします。
    # cp /XML/guestname.xml /etc/libvirt/qemu
  4. KVMハイパーバイザでそのゲストを定義します。
    # virsh define /etc/libvirt/qemu/guestname.xml
  5. リストアされたゲストに対して自動起動を有効にします。
    # /opt/exadata_ovm/vm_maker --autostart guestname --disable
    # /opt/exadata_ovm/vm_maker --autostart guestname --enable
  6. NFSバックアップをアンマウントします。
    # umount /root/mnt
  7. そのゲストを起動します
    # /opt/exadata_ovm/vm_maker --start-domain guestname
6.19.2.4 スナップショット・バックアップからのゲストのリストアおよびリカバリ

この手順は、ゲスト内から取得したゲストのスナップショット・ベースのバックアップを使用して、消失または損傷したKVMゲストのファイルをリストアするために使用できます。

方法3: ゲストの内部的なバックアップの項で説明されているゲスト内から作成されたスナップショット・ベースのバックアップを使用して、KVMゲストの紛失または破損したファイルをリストアするには、この手順を使用します。
rootユーザーとしてKVMゲストにログインします。
  1. バックアップNFSサーバーをマウントし、損傷または紛失が発生したファイルをリストアします。
    # mkdir -p /root/mnt
    # mount -t nfs -o ro,intr,soft,proto=tcp,nolock nfs_ip:/location_of_backup /root/mnt
  2. 損傷または紛失が発生したファイルをバックアップからステージング領域に抽出します。
    1. 抽出されたファイルが保持されるように、ステージング領域を準備します。バックアップ論理ボリュームLVDbSys2は、次で使用できます。
      # mkdir /backup-LVM 
      # mount /dev/mapper/VGExaDb-LVDbSys2 /backup-LVM
      # mkdir /backup-LVM/tmp_restore 
    2. 必要なファイルを抽出します。
      # tar --acls --xattrs --xattrs-include=* --format=pax -pjxvf /root/mnt/tar_file_name -C /backup-LVM/tmp_restore absolute_path_of_file_to_be_restored
  3. 必要に応じて、損傷または紛失が発生したファイルを一時ステージング領域からリストアします。
  4. 必要に応じてKVMゲストを再起動します。

6.20 ゲストの削除

Oracle Linux KVMゲストを削除するには、OEDACLIまたはvm_makerユーティリティを使用します。

6.20.1 OEDACLIを使用したOracle RACクラスタからのゲストの削除

OEDACLIを使用してクラスタからゲストを削除できます。

次の手順で、クラスタからゲストが削除されます。ゲストがクラスタの一部ではない場合、クラスタに関連するコマンドをスキップできます。

  1. XML構成ファイル(たとえば、es.xml)をOEDACLIにロードします。
    ./oedacli -c full_path_to_XML_file
  2. 次のOEDACLIコマンドを使用して、クラスタ・ノードからデータベース・インスタンスを削除します。
    DELETE GUEST WHERE srcname=guest_FQDN stepname=ADD_INSTANCE
    SAVE ACTION
    MERGE ACTIONS
    DEPLOY ACTIONS
  3. 次のOEDACLIコマンドを使用して、クラスタからOracle Databaseホームを削除します。
    DELETE GUEST WHERE srcname=guest_FQDN stepname=EXTEND_DBHOME
    SAVE ACTION
    MERGE ACTIONS
    DEPLOY ACTIONS
  4. 次のOEDACLIコマンドを使用して、クラスタからゲスト・ノードを削除します。
    DELETE GUEST WHERE srcname=guest_FQDN stepname=ADD_NODE
    SAVE ACTION
    MERGE ACTIONS
    DEPLOY ACTIONS
  5. 次のOEDACLIコマンドを使用して、ストレージ・サーバーへの接続を削除し、ゲスト上のユーザーを削除します。
    DELETE GUEST WHERE srcname=guest_FQDN stepname=CELL_CONNECTIVITY
    SAVE ACTION
    DELETE GUEST WHERE srcname=guest_FQDN stepname=CREATE_USERS
    SAVE ACTION
    MERGE ACTIONS
    DEPLOY ACTIONS
  6. 次のOEDACLIコマンドを使用して、ゲストを削除します。
    DELETE GUEST WHERE srcname=guest_FQDN stepname=CREATE_GUEST
    SAVE ACTION
    MERGE ACTIONS
    DEPLOY ACTIONS
  7. 更新された構成情報を保存します。
    更新された構成情報が保存されるディレクトリへのフルパスを指定します。
    SAVE FILES LOCATION=output_directory
  8. KVMホスト上の既存のゲストのリストを表示します。
    # /opt/exadata_ovm/vm_maker --list-domains

    直前に削除したゲストはリストされません。

6.20.2 vm_makerを使用したゲストの削除

vm_makerユーティリティを使用してゲストを削除できます。

次の手順で、クラスタからゲストが削除されます。ゲストがクラスタの一部ではない場合、Oracle Clusterwareに関連するコマンドをスキップできます。

  1. クラスタで定数障害グループを使用している場合は、最初にこれらを削除する必要があります。
    1. 既存のquorumデバイスをリストします。
      ~]# /opt/oracle.SupportTools/quorumdiskmgr --list --target
    2. quorumデバイスを削除します。
      ~]# /opt/oracle.SupportTools/quorumdiskmgr --delete --target
  2. ゲストのデータベース・インスタンスをクラスタ・ノードから削除します。
    手順は、Oracle RACデータベースからのインスタンスの削除を参照してください。
  3. クラスタからゲスト・ノードを削除します。
  4. vm_makerを使用してゲストを削除します。
    # /opt/exadata_ovm/vm_maker --remove-domain guest_name
  5. KVMホスト上の既存のゲストのリストを表示します。
    # /opt/exadata_ovm/vm_maker --list-domains

    直前に削除したゲストはリストされません。

6.21 Oracle Linux KVMと組み合せたクライアント・ネットワークのVLANタグ付けの使用

このトピックでは、Oracle Linux KVMと組み合せたクライアント・ネットワークのタグ付けされたVLANインタフェースの実装について説明します。

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

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

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

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

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

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

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

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

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

デフォルトのインストールでは、単一のbondeth0と対応するvmbondeth0ブリッジ・インタフェースは、前述で説明するようにKVMホスト内で構成されます。このbondeth0インタフェースはデフォルトの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レイアウト」の説明

ノート:

2020年3月のOEDAリリース以降、ブリッジ名の形式はvmbethXY.VLANIDになりました。ここで、XYはスレーブ・インタフェースに関連付けられた数値識別子で、VLANIDはVLAN IDです。

これにより、以前に一部の状況で発生していた潜在的なネーミング競合が回避されます。

たとえば、新しいネーミング・スキームでは、前の図のブリッジの名前はvmbeth45.3005vmbeth45.3006およびvmbeth45.3007になります。

タグ付けされたVLANインタフェースをOracle Linux KVMと組み合せて手動で構成する手順は、My Oracle Supportのノート2710712.1を参照してください。

6.22 Oracle Linux KVMと組み合せたExadata Secure RDMA Fabric Isolationの使用

このトピックでは、Oracle Linux KVMと組み合せたExadata Secure RDMA Fabric Isolationの実装について説明します。

Secure Fabricにより、Exadata Database Machineの複数テナント間のセキュアな統合および厳密な分離が可能になります。各テナントは、Oracle Linux KVMで実行されるデータベース・サーバーVMを使用した、専用の仮想マシン(VM)クラスタに存在します。

Secure Fabricを使用すると、各データベース・クラスタで、Oracle RACのノード間メッセージングをサポートするデータベース・サーバー間のクラスタ・ネットワーキングに、専用のネットワーク・パーティションおよびVLAN IDが使用されます。このパーティションでは、すべてのデータベース・サーバーが完全なメンバーです。これらは、パーティション内では自由に通信できますが、他のパーティションのデータベース・サーバーとは通信できません。

別のVLAN IDを持つ別のパーティションでは、ストレージ・ネットワーク・パーティションがサポートされます。ストレージ・サーバーはストレージ・ネットワーク・パーティション内の完全なメンバーで、それぞれのデータベース・サーバーVMは制限されたメンバーでもあります。ストレージ・ネットワーク・パーティションを使用すると、次のようになります。

  • 各データベース・サーバーは、すべてのストレージ・サーバーと通信できます。
  • 各ストレージ・サーバーは、サポートしているすべてのデータベース・サーバーと通信できます。
  • ストレージ・サーバーは、セルからセルへの操作を実行するために、相互に直接通信できます。

図6-3 Secure Fabricネットワーク・パーティション

図6-3の説明が続きます
「図6-3 Secure Fabricネットワーク・パーティション」の説明

クラスタ・ネットワーク・パーティションおよびストレージ・ネットワーク・パーティションをサポートするために、各データベース・サーバーVMは4つの仮想インタフェースでplumbされます。

  • clre0およびclre1は、クラスタ・ネットワーク・パーティションをサポートします。
  • stre0およびstre1は、ストレージ・ネットワーク・パーティションをサポートします。

    対応するstre0およびstre1のインタフェースも、各ストレージ・サーバーでplumbされます。

各サーバーで、RoCEネットワーク・インタフェース・カードは、VLANタグの強制を実行するハイパーバイザのスイッチのように機能します。このことはKVMホスト・レベルで行われるため、データベース・サーバーVMでのソフトウェアの悪用または構成ミスによって、クラスタの分離がバイパスされることはありません。

このリリースでは、Oracle Exadata Deployment Assistant (OEDA)を使用する初期システム・デプロイメントの一部としてSecure Fabricを有効にすることのみ可能です。既存のシステムでのSecure Fabricは、システムをワイプしてOEDAを使用してそれを再デプロイしないと、有効化できません。有効にすると、Secure Fabricは、同じRoCEネットワーク・ファブリックを共有するすべてのサーバーおよびクラスタに適用されます。

6.23 Oracle Linux KVMゲストへの結合ネットワーク・インタフェースの追加

この手順を使用して、既存のOracle Linux KVMゲストに結合ネットワーク・インタフェースを追加します。

たとえば、この手順を使用して、Oracle Linux KVMゲストにバックアップ・ネットワークを追加できます。

Oracle Linux KVMゲストに結合ネットワーク・インタフェースを追加する手順は、次のとおりです。

  1. KVMホストで、結合ネットワーク・ブリッジを作成します。

    次のvm_maker --add-bonded-bridgeコマンドを使用します。

    # vm_maker --add-bonded-bridge bond-name  --first-slave ethX --second-slave ethY

    コマンドで次のようにします。

    • bond-nameには、結合ネットワーク・インタフェースの名前を指定します。推奨されるネーミング規則では、結合されるネットワーク・インタフェースを識別する番号と文字列vmbethを連結したものを使用します。たとえば、eth5eth6を結合する場合、推奨される結合名はvmbeth56です。
    • ethXおよびethYには、結合されるKVMホスト・ネットワーク・インタフェースを指定します。
  2. KVMホストで、結合ネットワーク・ブリッジをゲストに関連付けます。

    次のvm_maker --allocate-bridgeコマンドを使用します。

    # vm_maker --allocate-bridge bond-name --domain guest-name

    コマンドで次のようにします。

    • bond-nameには、前のステップで作成した結合ネットワーク・ブリッジの名前を指定します。
    • guest-nameには、結合ネットワーク・インタフェースを追加するゲストの名前を指定します。

    vm_maker --allocate-bridgeコマンドの出力には、この手順を完了するために実行する必要がある一連の追加の手動ステップが含まれています。

  3. 前のvm_maker --allocate-bridgeコマンドの出力に示されている追加の手動ステップを実行します。

    最初の手動ステップでは、ゲスト内で使用する一意のネットワーク・インタフェース名を選択する必要があります。このゲスト・インタフェースはKVMホスト上のブリッジ・ネットワーク・インタフェースにマップされます。このインタフェース名にはネーミング規則を使用することも、KVMホストからインタフェース名を引き継ぐこともできます。どちらを選択した場合でも、手動ステップ2のNAME="guest-interface"エントリが適切に調整されていることを確認します。

    次に、手動ステップの例を示します。

    ノート:

    手順は環境に固有です。したがって、vm_maker --allocate-bridgeコマンドの出力に示されている追加の手動ステップを実行してください。次の例のコマンドはコピーしないでください。

    [INFO] Please perform the following manual steps:
    [INFO] 1. Determine a unique network interface name within the domain to which
    [INFO]    you are attaching this interface. Typically bonded
    [INFO]    interfaces are named bondeth<number>, for example 'bondeth1', and
    [INFO]    non-bonded interfaces are named eth<number>, for example 'eth2'.
    [INFO]    The name must be unique within the domain. In the example below
    [INFO]    the name 'bondeth0' has been chosen.
    [INFO] 2. Add the following line to the file
    [INFO]    '/etc/udev/rules.d/70-persistent-net.rules' within the domain:
    [INFO]    SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", KERNELS=="0000:00:PCI-slot-number.0", ATTR{type}=="1", NAME="guest-interface"
    [INFO] You MUST execute steps 4 and 5! You CANNOT simply reboot from within
    [INFO] the domain.
    [INFO] 4. vm_maker --stop-domain guest-name
    [INFO] 5. vm_maker --start-domain guest-name
    [INFO] 6. Login to the domain and run the following command:
    [INFO]    /opt/oracle.cellos/ipconf.pl -nocodes
    [INFO]    This command will ask you for configuration information for this
    [INFO]    new interface.
    [INFO] NOTE: if you have more than one interface to add to this domain,
    [INFO] please execute the instructions above, and then call this command again.
    [INFO] The domain must be stopped and started between invocations of this
    [INFO] command.

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

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

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

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

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

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

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

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

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

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

  5. 最初のKVMホストOracle EXAchkを実行します。

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

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

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

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

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

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

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

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

./exachk

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

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

オプション

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

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

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

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

./exachk -clusternodes dm01adm01,dm01adm02
         -cells dm01celadm01,dm01celadm02,dm01celadm03