Persistent Disk を SAP HANA 用 Hyperdisk に移行する

このドキュメントでは、SAP HANA データベースで使用されている Persistent Disk ボリュームを Google Cloud Hyperdisk ボリュームに移行する方法について説明します。

Hyperdisk(特に Hyperdisk Extreme)を使用すると、SSD ベースの Persistent Disk タイプよりも SAP HANA のパフォーマンスが向上します。

SAP HANA データベースで使用される Persistent Disk ボリュームを Hyperdisk ボリュームに移行するには、Google Cloud のディスク スナップショットSAP HANA 高速再起動オプションを使用します。

移行に関する考慮事項を確認する

  • 移行データ: SAP HANA 高速再起動オプションがヘルパーとして使用されます。データベース テーブルの読み込みを待つ必要がないため、ディスクのグレーティング中のダウンタイムを短縮できます。ただし、行ストアとバイナリ ラージ オブジェクト(BLOB)データ型の再読み込みに必要な時間を考慮してください。
  • ダウンタイム: 移行プロセスではダウンタイムの最小化が求められますが、実際のダウンタイムは、次のタスクにかかる時間によって変わります。

    • ディスク スナップショットの作成。

      ディスク スナップショットの取得中に発生するダウンタイムを減らすには、予定された移行作業の前にディスクのスナップショットを作成し、移行作業に近い段階でさらにスナップショットを作成します。これにより、スナップショットの差を小さくすることができます。

    • Persistent Disk ボリュームのスナップショットを使用して Hyperdisk ボリュームを作成する。

    • SAP HANA テーブルの SAP HANA メモリへの再読み込み。

  • 既存のディスクに戻す: 移行中に問題が発生した場合は、既存のディスクに戻すことができます。ディスクはこの手順の影響を受けないため、削除するまで使用できます。詳細については、既存のディスクにフォールバックするをご覧ください。

始める前に

SAP HANA データベースで使用されている Persistent Disk ボリュームを Hyperdisk ボリュームに移行する前に、次の条件を満たしていることを確認してください。

  • SAP HANA が、Hyperdisk をサポートする SAP 認定の Compute Engine インスタンスで実行されている。
  • /hana/data ボリュームと /hana/log ボリュームは別々のディスクでホストされます。
  • SAP HANA ストレージの永続化には、Linux の論理ボリューム管理が使用されます。直接ストレージを使用できますが、その場合、/etc/fstab テーブルを使用してデバイスの再マッピングを明示的に行う必要があります。
  • SAP HANA システムで SAP HANA 高速再起動オプションが有効になっている。

    有効にする方法については、SAP HANA 高速再起動の有効化をご覧ください。

  • SAP HANA データベースの有効なバックアップを使用できる。このバックアップは、必要に応じてデータベースを復元するために使用されます。

  • ターゲット Compute Engine インスタンスが高可用性(HA)クラスタの一部である場合は、クラスタがメンテナンス モードになっていることを確認します。

  • SAP HANA データベースがスケールアウト デプロイを使用している場合は、SAP HANA インスタンスごとにこのガイドの手順を繰り返します。

  • SAP HANA データベースが稼働している。

  • tmpfs ファイル システムには、MAIN データ フラグメントの内容が完全に読み込まれている。ファイル システムの使用状況を確認するには、次のコマンドを実行します。

    df -Th

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

    #  df -Th
    Filesystem                        Type      Size  Used Avail Use% Mounted on
    ...
    /dev/mapper/vg_hana_shared-shared xfs       1.0T   56G  968G   6% /hana/shared
    /dev/mapper/vg_hana_data-data     xfs        14T  5.7T  8.2T  41% /hana/data
    /dev/mapper/vg_hana_log-log       xfs       512G  7.2G  505G   2% /hana/log
    /dev/mapper/vg_hana_usrsap-usrsap xfs        32G  276M   32G   1% /usr/sap
    tmpfsDB10                         tmpfs     5.7T  800G  4.9T  14% /hana/tmpfs0/DB1
    tmpfsDB11                         tmpfs     5.7T  796G  4.9T  14% /hana/tmpfs1/DB1
    tmpfsDB12                         tmpfs     5.7T  783G  4.9T  14% /hana/tmpfs2/DB1
    tmpfsDB13                         tmpfs     5.7T  780G  4.9T  14% /hana/tmpfs3/DB1
    tmpfsDB14                         tmpfs     5.7T  816G  4.9T  15% /hana/tmpfs4/DB1
    tmpfsDB15                         tmpfs     5.7T  780G  4.9T  14% /hana/tmpfs5/DB1
    tmpfsDB16                         tmpfs     5.7T  816G  4.9T  15% /hana/tmpfs6/DB1
    tmpfsDB17                         tmpfs     5.7T  780G  4.9T  14% /hana/tmpfs7/DB1
    

Persistent Disk ボリュームを Hyperdisk ボリュームに移行する

このセクションでは、/hana/data ボリュームと /hana/log ボリュームを Persistent Disk ボリュームから Hyperdisk ボリュームに移行する方法について説明します。

ここでは、次の構成例の移行プロセスについて説明します。

  • マシンタイプ: m2-ultramem-416(12 TB メモリ、416 vCPU)
  • Google Cloud のドキュメント(Terraform: SAP HANA スケールアップ デプロイガイド)を使用してデプロイされた SAP HANA スケールアップ システム。
    • OS: SLES for SAP 15 SP1
    • SAP HANA: HANA 2 SPS06、パッチ 63
    • デフォルトのディスクタイプ: SSD 永続ディスク(pd-ssd
    • /hana/data ボリュームと /hana/log ボリュームは別々のディスクにマウントされ、LVM と XFS を使用してビルドされます。
    • SAP HANA Fast Restart オプションが有効になり、6 TB のデータがデータベースに読み込まれます。方法については、SAP HANA 高速再起動の有効化をご覧ください。

Persistent Disk ボリュームを Hyperdisk ボリュームに移行するには、次の操作を行います。

  1. HDB stop コマンドを実行して、SAP HANA データベースを停止します。

    HDB stop
    

    または、sapcontrol コマンドを実行します。

    sapcontrol -nr INSTANCE_NUMBER -function StopSystem HDB
    

    INSTANCE_NUMBER は、SAP HANA システムのインスタンス番号に置き換えます。

    詳細については、SAP ドキュメントの Starting and Stopping SAP HANA Systems をご覧ください。

  2. ファイル システムから /hana/data ボリュームと /hana/log ボリュームのマウントを解除します。

    umount /hana/data
    umount /hana/log
    
  3. 次のいずれかの方法で、/hana/data ボリュームと /hana/log ボリュームをホストするディスクの名前を確認します。

    • ls コマンドを実行します。

      ls -l /dev/disk/by-id/
      

      出力には、次の例に示すように、ディスク名とデバイスのマッピングが表示されます。

      ...
      lrwxrwxrwx 1 root root  9 May 18 20:14 google-hana-vm-data00001 -> ../../sdb
      lrwxrwxrwx 1 root root  9 May 18 20:14 google-hana-vm-log00001 -> ../../sdc
      ...
      
    • gcloud compute instances describe コマンドを実行します。

      gcloud compute instances describe INSTANCE_NAME
          --zone=ZONE
      

      次のように置き換えます。

      • INSTANCE_NAME: コンピューティング インスタンスの名前。
      • ZONE: コンピューティング インスタンスのゾーン。

      出力には、アタッチされているディスクなど、コンピューティング インスタンスの詳細が表示されます。次に例を示します。

      gcloud compute instances describe hana-vm --zone europe-west4-a
      ...
      disks:
      - autoDelete: false
      deviceName: hana-vm-shared00001
      diskSizeGb: '1024'
      - autoDelete: false
      deviceName: hana-vm-usrsap00001
      diskSizeGb: '32'
      - autoDelete: false
      deviceName: hana-vm-data00001
      diskSizeGb: '14093'
      - autoDelete: false
      deviceName: hana-vm-log00001
      diskSizeGb: '512'
      
    • Google Cloud コンソールで、Compute Engine の [VM インスタンス] ページに移動し、コンピューティング インスタンス名をクリックします。[ストレージ] セクションに、関連するディスク情報が表示されます。

  4. /hana/data ボリュームと /hana/log ボリュームをホストするディスクのスナップショットを作成します。

    gcloud compute snapshots create DATA_DISK-snapshot \
      --project=PROJECT_ID \
      --source-disk-zone=SOURCE_DISK_ZONE  \
      --source-disk=DATA_DISK \
    gcloud compute snapshots create LOG_DISK-snapshot \
      --project=PROJECT_ID \
      --source-disk-zone=SOURCE_DISK_ZONE \
      --source-disk=LOG_DISK
    

    次のように置き換えます。

    • DATA_DISK: /hana/data ボリュームをホストするディスクの名前。データディスクのスナップショットの接頭辞として設定されます。
    • LOG_DISK: /hana/log ボリュームをホストするディスクの名前。ログディスクのスナップショットの接頭辞として設定されます。
    • PROJECT_ID: ディスクがデプロイされている Google Cloud プロジェクトの ID
    • SOURCE_DISK_ZONE: ディスクがデプロイされる Compute Engine ゾーン

    スナップショットの作成の詳細については、ディスク スナップショットの作成と管理をご覧ください。

  5. 作成したディスク スナップショットを使用して、/hana/data ボリュームと /hana/log ボリュームの Hyperdisk ボリュームを作成します。

    gcloud compute disks create DATA_DISK-hd \
         --project=PROJECT_ID \
         --zone=ZONE \
         --type=HYPERDISK_TYPE \
         --provisioned-iops=IOPS_DATA_DISK \
         --source-snapshot=DATA_DISK-snapshot \
     gcloud compute disks create LOG_DISK-hd \
         --project=PROJECT_ID \
         --zone=ZONE \
         --type=HYPERDISK_TYPE \
         --provisioned-iops=IOPS_LOG_DISK \
         --source-snapshot=LOG_DISK-snapshot
    

    次のように置き換えます。

    • DATA_DISK: /hana/data ボリュームをホストする Persistent Disk ボリュームの名前。これは、作成する Hyperdisk ボリュームの名前の接頭辞として設定されます。
    • LOG_DISK: /hana/log ボリュームをホストする Persistent Disk ボリュームの名前。これは、作成する Hyperdisk ボリュームの名前の接頭辞として設定されます。
    • PROJECT_ID: Google Cloud プロジェクトの ID
    • HYPERDISK_TYPE: 作成する Hyperdisk のタイプ(hyperdisk-extreme など)。
    • ZONE: Hyperdisk ボリュームをデプロイする必要がある Compute Engine ゾーン
    • IOPS_DATA_DISK: /hana/data をホストするために作成する Hyperdisk に設定する IOPS。IOPS は、パフォーマンス要件に従って設定します。
    • IOPS_LOG_DISK: /hana/log をホストするために作成する Hyperdisk に設定する IOPS。IOPS は、パフォーマンス要件に従って設定します。

    Hyperdisk Balanced(hyperdisk-balanced)ボリュームを作成する場合は、スループットを設定することもできます。

    SAP HANA で Hyperdisk ボリュームを使用する場合に設定する必要がある最小サイズ、IOPS、スループットについては、SSD ベースの Persistent Disk と Hyperdisk ボリュームの最小サイズで、Compute Engine マシンタイプに対応する行をご覧ください。

    スナップショットからディスクを復元する方法については、スナップショットから復元するをご覧ください。

  6. SAP HANA データベースをホストする Compute Engine インスタンスから、/hana/data ボリュームと /hana/log ボリュームをホストしている Persistent Disk ボリュームを切断します。

    gcloud compute instances detach-disk INSTANCE_NAME \
      --disk=DATA_DISK \
      --zone=ZONE
    gcloud compute instances detach-disk INSTANCE_NAME \
      --disk=LOG_DISK \
      --zone=ZONE
    

    次のように置き換えます。

    • INSTANCE_NAME: Compute Engine インスタンスの名前
    • DATA_DISK: 切断する /hana/data ボリュームをホストする Persistent Disk ボリュームの名前
    • LOG_DISK: 切断する /hana/log ボリュームをホストする Persistent Disk ボリュームの名前
    • ZONE: ディスクがデプロイされる Compute Engine ゾーン
  7. 作成した Hyperdisk ボリュームを、SAP HANA データベースをホストする Compute Engine インスタンスにアタッチします。

    gcloud compute instances attach-disk INSTANCE_NAME \
        --disk=DATA_DISK-hd \
        --zone=ZONE
    gcloud compute instances attach-disk INSTANCE_NAME \
       --disk=LOG_DISK-hd \
        --zone=ZONE
    

    次のように置き換えます。

    • INSTANCE_NAME: Compute Engine インスタンスの名前
    • DATA_DISK: /hana/data ボリュームのホストに使用する Hyperdisk ボリュームの名前
    • LOG_DISK: /hana/log ボリュームのホストに使用する Hyperdisk ボリュームの名前
    • ZONE: Hyperdisk がデプロイされている Compute Engine ゾーン
  8. Hyperdisk ボリュームをマウントするには、root または sudo アクセス権を持つユーザーとして次の操作を行います。

    1. LVM デバイスのマッピングの競合を避けるため、すべてのデバイス マッピングの定義を削除します。

      dmsetup remove_all
      
    2. ボリューム グループがないかすべてのディスクをスキャンし、キャッシュを再構築して、不足しているボリューム(LVM を含む)を作成します。

      vgscan -v --mknodes
      

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

      Scanning all devices to initialize lvmetad.
      Reading volume groups from cache.
      Found volume group "vg_hana_data" using metadata type lvm2
      Found volume group "vg_hana_shared" using metadata type lvm2
      Found volume group "vg_hana_log" using metadata type lvm2
      Found volume group "vg_hana_usrsap" using metadata type lvm2
      
    3. ボリューム グループを有効にします。

      vgchange -ay
      

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

      1 logical volume(s) in volume group "vg_hana_data" now active
      1 logical volume(s) in volume group "vg_hana_shared" now active
      1 logical volume(s) in volume group "vg_hana_log" now active
      1 logical volume(s) in volume group "vg_hana_usrsap" now active
      
    4. 論理ボリュームをスキャンします。

      lvscan
      

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

      ACTIVE            '/dev/vg_hana_data/data' [13.76 TiB] inherit
      ACTIVE            '/dev/vg_hana_shared/shared' [1024.00 GiB] inherit
      ACTIVE            '/dev/vg_hana_log/log' [512.00 GiB] inherit
      ACTIVE            '/dev/vg_hana_usrsap/usrsap' [32.00 GiB] inherit
      
    5. ディスクをマウントします。

      mount -av
      

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

      /                        : ignored
      /boot/efi                : already mounted
      /hana/shared             : already mounted
      /hana/data               : already mounted
      /hana/log                : already mounted
      /usr/sap                 : already mounted
      swap                     : ignored
      /hana/tmpfs0/DB1         : already mounted
      /hana/tmpfs1/DB1         : already mounted
      /hana/tmpfs2/DB1         : already mounted
      /hana/tmpfs3/DB1         : already mounted
      /hana/tmpfs4/DB1         : already mounted
      /hana/tmpfs5/DB1         : already mounted
      /hana/tmpfs6/DB1         : already mounted
      /hana/tmpfs7/DB1         : already mounted
      
  9. 新しいボリュームを確認します。

    • ファイル システムの使用状況を確認します。

      df -Th
      

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

      Filesystem                        Type      Size  Used Avail Use% Mounted on
      ...
      /dev/mapper/vg_hana_shared-shared xfs       1.0T   56G  968G   6% /hana/shared
      /dev/mapper/vg_hana_usrsap-usrsap xfs        32G  277M   32G   1% /usr/sap
      tmpfsDB10                         tmpfs     5.7T  784G  4.9T  14% /hana/tmpfs0/DB1
      tmpfsDB11                         tmpfs     5.7T  783G  4.9T  14% /hana/tmpfs1/DB1
      tmpfsDB12                         tmpfs     5.7T  783G  4.9T  14% /hana/tmpfs2/DB1
      tmpfsDB13                         tmpfs     5.7T  782G  4.9T  14% /hana/tmpfs3/DB1
      tmpfsDB14                         tmpfs     5.7T  783G  4.9T  14% /hana/tmpfs4/DB1
      tmpfsDB15                         tmpfs     5.7T  783G  4.9T  14% /hana/tmpfs5/DB1
      tmpfsDB16                         tmpfs     5.7T  783G  4.9T  14% /hana/tmpfs6/DB1
      tmpfsDB17                         tmpfs     5.7T  782G  4.9T  14% /hana/tmpfs7/DB1
      /dev/mapper/vg_hana_log-log       xfs       512G  7.2G  505G   2% /hana/log
      /dev/mapper/vg_hana_data-data     xfs        14T  5.7T  8.2T  41% /hana/data
      
    • デバイスが新しいボリュームにリンクされていることを確認します。

      lsblk
      

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

      NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      ...
      sdd                       8:48   0    1T  0 disk
      └─vg_hana_shared-shared 254:0    0 1024G  0 lvm  /hana/shared
      sde                       8:64   0   32G  0 disk
      └─vg_hana_usrsap-usrsap 254:3    0   32G  0 lvm  /usr/sap
      sdf                       8:80   0 13.8T  0 disk
      └─vg_hana_data-data     254:1    0 13.8T  0 lvm  /hana/data
      sdg                       8:96   0  512G  0 disk
      └─vg_hana_log-log       254:2    0  512G  0 lvm  /hana/log
      
  10. 次のいずれかのコマンドを使用して、SAP HANA データベースを起動します。

    • HDB start コマンドを実行します。

      HDB start
      
    • sapcontrol コマンドを実行します。

      sapcontrol -nr INSTANCE_NUMBER -function StartSystem HDB
      

      INSTANCE_NUMBER は、SAP HANA データベースのインスタンス番号に置き換えます。

      詳細については、SAP HANA システムの起動と停止をご覧ください。

既存のディスクにフォールバックする

ディスクの移行に失敗した場合は、移行手順の開始前のデータが存在するため、既存の Persistent Disk ボリュームを使用できます。

SAP HANA データベースを元の状態に復元する手順は次のとおりです。

  1. SAP HANA データベースをホストする Compute Engine インスタンスを停止します。
  2. 作成した Hyperdisk ボリュームを切断します。
  3. 既存の Persistent Disk ボリュームをコンピューティング インスタンスに再アタッチします。
  4. コンピューティング インスタンスを起動します。