将 Persistent Disk 迁移到 SAP HANA 的 Hyperdisk

本文档介绍了如何将 SAP HANA 数据库使用的 Persistent Disk 卷迁移到 Google Cloud Hyperdisk 卷。

与基于 SSD 的 Persistent Disk 类型相比,Hyperdisk(尤其是 Hyperdisk Extreme)可为 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 在支持 HyperdiskSAP 认证 Compute Engine 实例上运行。
  • /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 纵向扩容系统。
    • 操作系统: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 虚拟机实例页面,然后点击计算实例名称。存储部分会显示关联的磁盘信息。

  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:您要为要创建的 Hyperdisk 设置的 IOPS,以托管 /hana/data。您可以根据性能要求设置 IOPS。
    • IOPS_LOG_DISK:您要为要创建的 Hyperdisk 设置的 IOPS,以托管 /hana/log。您可以根据性能要求设置 IOPS。

    如果您要创建 Hyperdisk Balanced (hyperdisk-balanced) 卷,则还可以设置其吞吐量。

    如需了解您需要设置哪些大小下限、IOPS 和吞吐量才能将 Hyperdisk 卷与 SAP HANA 搭配使用,请参阅基于 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. 启动计算实例。