將 SAP HANA 的永久磁碟遷移至 Hyperdisk

本文件說明如何將 SAP HANA 資料庫使用的永久磁碟磁碟區遷移至 Google Cloud Hyperdisk 磁碟區。

與以 SSD 為基礎的永久磁碟類型相比,Hyperdisk (尤其是 Hyperdisk Extreme) 可為 SAP HANA 提供更佳的效能

如要將 SAP HANA 資料庫使用的永久磁碟磁碟區遷移至 Hyperdisk 磁碟區,請使用 Google Cloud的磁碟快照SAP HANA 快速重新啟動選項

查看遷移注意事項

  • 遷移資料:SAP HANA 快速重新啟動選項可做為輔助工具。這可減少磁碟切割作業的停機時間,因為您不必等待資料庫表格載入。不過,請務必考量重新載入資料行儲存庫和二進位大型物件 (BLOB) 資料類型所需的時間。
  • 停機時間:雖然遷移程序所需的停機時間極短,但實際的停機時間取決於完成下列任務所需的時間:

    • 建立磁碟快照。

      為減少在擷取磁碟快照時的停機時間,您可以在預定的遷移活動前擷取磁碟快照,然後在活動前後擷取一些額外的快照,這樣快照之間的差異就會比較小。

    • 使用 Persistent Disk 磁碟區的快照建立 Hyperdisk 磁碟區。

    • 將 SAP HANA 資料表重新載入 SAP HANA 記憶體。

  • 還原至現有磁碟:如果遷移期間發生任何問題,您可以還原至現有磁碟,因為這類磁碟不會受到此程序影響,且可供使用,直到您自行刪除為止。詳情請參閱「改用現有磁碟」一文。

事前準備

將 SAP HANA 資料庫使用的永久磁碟磁碟區遷移至 Hyperdisk 磁碟區前,請確認符合下列條件:

  • SAP HANA 會在SAP 認證的 Compute Engine 執行個體上執行,這些執行個體支援 Hyperdisk
  • /hana/data/hana/log 磁碟區會在不同的磁碟上代管。
  • 使用 Linux 邏輯磁碟區管理功能,為 SAP HANA 儲存空間提供持久性。雖然可以使用直接儲存空間,但必須透過 /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 快速重新啟動選項,並將 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 文件「啟動及停止 SAP HANA 系統」。

  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 instances」頁面,然後按一下運算執行個體名稱。「儲存空間」部分會顯示相關磁碟資訊。

  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) 磁碟區,也可以設定其處理量。

    如要瞭解在使用 Hyperdisk 磁碟區搭配 SAP HANA 時,需要設定的最低大小、IOPS 和傳輸量,請參閱 以 SSD 為基礎的永久磁碟和 Hyperdisk 磁碟區的最低大小,並查看與您所用 Compute Engine 機器類型相對應的資料列。

    如要進一步瞭解如何透過快照還原磁碟,請參閱「從快照還原」。

  6. 從代管 SAP HANA 資料庫的 Compute Engine 執行個體中,卸除代管 /hana/data/hana/log 磁碟的永久磁碟磁碟區:

    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 磁碟區所屬永久磁碟磁碟區的名稱
    • LOG_DISK:您要卸載的 /hana/log 磁碟區所屬永久磁碟磁碟區的名稱
    • 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:部署超磁碟的 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 系統」。

改用現有磁碟

如果磁碟遷移作業失敗,您可以改回使用現有的永久磁碟磁碟區,因為這些磁碟區包含遷移程序開始前的原始資料。

如要將 SAP HANA 資料庫還原至原始狀態,請執行下列步驟:

  1. 停止託管 SAP HANA 資料庫的 Compute Engine 執行個體。
  2. 卸除您建立的 Hyperdisk 磁碟區。
  3. 將現有的永久磁碟磁碟區重新連結至運算執行個體。
  4. 啟動運算執行個體。