与基于 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 在支持 Hyperdisk 的 SAP 认证 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 卷,请执行以下步骤:
运行
HDB stop
命令停止 SAP HANA 数据库:HDB stop
或者,您也可以运行
sapcontrol
命令:sapcontrol -nr INSTANCE_NUMBER -function StopSystem HDB
将
INSTANCE_NUMBER
替换为您的 SAP HANA 系统的实例编号。如需了解详情,请参阅 SAP 文档启动和停止 SAP HANA 系统。
从文件系统中卸载
/hana/data
和/hana/log
卷:umount /hana/data umount /hana/log
使用以下任一方法确定托管
/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 虚拟机实例页面,然后点击计算实例名称。存储部分会显示关联的磁盘信息。
创建托管
/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 项目的 IDSOURCE_DISK_ZONE
:磁盘部署到的 Compute Engine 可用区
如需详细了解如何创建快照,请参阅创建和管理磁盘快照。
使用您创建的磁盘快照,为
/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 项目的 IDHYPERDISK_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 机器类型对应的行。
如需详细了解如何使用快照恢复磁盘,请参阅使用快照进行恢复。
从托管 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 可用区
将您创建的 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 可用区
如需装载 Hyperdisk 卷,请以
root
或具有sudo
访问权限的用户身份执行以下步骤:移除所有设备映射定义,以避免 LVM 设备映射冲突:
dmsetup remove_all
扫描所有磁盘以查找卷组、重新构建缓存并创建缺失的卷(包括 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
激活卷组:
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
扫描逻辑卷:
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
装载磁盘:
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
验证新卷:
验证文件系统利用率:
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
使用以下命令之一启动 SAP HANA 数据库:
运行
HDB start
命令:HDB start
运行
sapcontrol
命令:sapcontrol -nr INSTANCE_NUMBER -function StartSystem HDB
将
INSTANCE_NUMBER
替换为您的 SAP HANA 数据库的实例编号。如需了解详情,请参阅启动和停止 SAP HANA 系统。
回退到现有磁盘
如果磁盘迁移失败,您可以回退到使用现有的 Persistent Disk 卷,因为它们包含迁移过程开始前存在的数据。
如需将 SAP HANA 数据库恢复到原始状态,请执行以下步骤:
- 停止托管 SAP HANA 数据库的 Compute Engine 实例。
- 分离您创建的 Hyperdisk 卷。
- 将现有的 Persistent Disk 卷重新挂接到计算实例。
- 启动计算实例。