Google Cloud 上的 SAP HANA 部署作業會使用統一磁碟版面配置或分割磁碟版面配置。在統一磁碟版面配置中,單一磁碟會用於代管所有 SAP HANA 檔案系統。在分割磁碟版面配置中,每個 SAP HANA 檔案系統都會託管在不同的磁碟上。如要瞭解這些磁碟配置,請參閱「支援的磁碟配置」。
Google Cloud 建議您使用分割磁碟版面配置,原因如下:
- 這可讓您針對檔案系統進行獨立的磁碟效能調整,特別是針對
/hana/data
和/hana/log
,以及在使用 Hyperdisk 時。 - 可簡化維護作業。
為說明遷移程序,本指南假設有一個範例系統,並將 SAP HANA 檔案系統從單一永久磁碟磁區遷移至每個檔案系統的一個 Hyperdisk 磁區。您也可以使用這個程序,將 SAP HANA 檔案系統遷移至個別的永久磁碟磁碟區。
查看遷移注意事項
- 資料遷移時間:針對 SAP HANA HA 系統,您可以取消註冊次要節點、刪除其租用戶資料庫,然後回收記錄,以縮短資料遷移時間。本指南所述的程序採用了這種做法。
- 停機時間:對於 SAP HANA HA 系統,您必須先遷移次要資料庫,並將其設為新的主資料庫,然後再遷移先前的資料庫。這有助於盡量縮短停機時間。
- 還原至現有磁碟:如果遷移期間發生任何問題,您可以還原至現有磁碟,因為這類磁碟不會受到此程序影響,且可供使用,直到您自行刪除為止。詳情請參閱「改用現有磁碟」一文。
事前準備
將單一磁碟上代管的 SAP HANA 檔案系統遷移至每個檔案系統一個磁碟之前,請確認符合下列條件:
- SAP HANA 會在SAP 認證的 Compute Engine 執行個體上執行,這些執行個體支援 Hyperdisk。
- 您必須備份有效的 SAP HANA 資料庫。如有需要,您可以使用這項備份來還原資料庫。
- 如果目標 Compute Engine 執行個體屬於高可用性 (HA) 叢集,請確認叢集處於維護模式。
- 如果 SAP HANA 資料庫使用向外擴充部署,請針對每個 SAP HANA 執行個體重複執行本指南中的程序。
- SAP HANA 資料庫已啟用並運作。針對 HA 系統,請確認資料庫的主要和次要執行個體之間的複製功能處於啟用狀態。
- 如要縮短資料複製時間,請從要遷移的 SAP HANA 磁碟區移除所有不必要的備份或媒體。
執行下列指令,驗證要遷移的 SAP HANA 檔案系統是否已在單一磁碟上代管:
lsblk
輸出結果會與下列範例相似。您的輸出內容可能與本範例不同,這取決於您為 SAP HANA 檔案系統使用的命名慣例,或是您的運算執行個體是否支援非揮發性記憶體快取 (NVMe) 磁碟介面。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 30G 0 disk ├─sda1 8:1 0 2M 0 part ├─sda2 8:2 0 20M 0 part /boot/efi └─sda3 8:3 0 30G 0 part / sdb 8:16 0 2.3T 0 disk ├─vg_hana-shared 254:0 0 850G 0 lvm /hana/shared ├─vg_hana-sap 254:1 0 32G 0 lvm /usr/sap ├─vg_hana-log 254:2 0 425G 0 lvm /hana/log └─vg_hana-data 254:3 0 1T 0 lvm /hana/data sdc 8:32 0 1.7T 0 disk └─vg_hanabackup-backup 254:4 0 1.7T 0 lvm /hanabackup
SAP 系統範例
為說明遷移程序,本指南會執行以下操作:
- 假設有一個 SAP HANA 向上擴充高可用性 (HA) 部署示例,其中單一永久磁碟磁碟區會代管
/hana/data
、/hana/log
、/hana/shared
和/usr/sap
檔案系統。 - 將檔案系統遷移至個別的 Hyperdisk 磁碟區,其設定與 Terraform:SAP HANA 擴充高可用性叢集設定指南中部署的 SAP HANA 擴充 HA 系統相似。
下圖顯示範例系統在遷移檔案系統前後的架構:
範例 SAP 系統的設定詳細資料如下:
- 機器類型:
n2-highmem-128
- OS:SLES for SAP 15 SP5
- SAP HANA:HANA 2 SPS07,修訂版 78
- 系統使用的磁碟類型:SSD 永久磁碟 (
pd-ssd
) /hana/data
、/hana/log
、/hana/shared
和/usr/sap
磁區會掛接至相同磁碟,並在 SAP HANA 的持久性設定中進行設定。以下是 SAP HANA 系統 (SIDABC
) 的/hana/data
和/hana/log
磁碟區持續性設定範例:[persistence] basepath_datavolumes = /hana/data/ABC basepath_logvolumes = /hana/log/ABC
將檔案系統遷移至個別 Hyperdisk 磁碟區
如要將 SAP HANA 向上擴充 HA 部署的檔案系統,從單一永久磁碟磁碟區遷移至每個檔案系統的一個 Hyperdisk 磁碟區,請執行下列步驟:
為次要執行個體做好遷移準備
將 HA 叢集設為維護模式:
crm maintenance on
驗證 HANA 系統複製 (HSR) 是否已啟用:
/usr/sap/ABC/HDB00/exe/python_support> python systemReplicationStatus.py
輸出結果會與下列範例相似:
/usr/sap/ABC/HDB00/exe/python_support> python systemReplicationStatus.py |Database |Host |Port |Service Name |Volume ID |Site ID |Site Name |Secondary |Secondary |Secondary |Secondary |Secondary |Replication |Replication |Replication |Secondary | | | | | | | | |Host |Port |Site ID |Site Name |Active Status |Mode |Status |Status Details |Fully Synced | |-------- |----------- |----- |------------ |--------- |------- |--------- |--------- |--------- |--------- |----------- |------------- |----------- |----------- |-------------- |------------ | |SYSTEMDB |example-vm1 |30001 |nameserver | 1 | 1 |example-vm1 |example-vm2 | 30001 | 2 |example-vm2 |YES |SYNCMEM |ACTIVE | | True | |ABC |example-vm1 |30007 |xsengine | 2 | 1 |example-vm1 |example-vm2 | 30007 | 2 |example-vm2 |YES |SYNCMEM |ACTIVE | | True | |ABC |example-vm1 |30003 |indexserver | 3 | 1 |example-vm1 |example-vm2 | 30003 | 2 |example-vm2 |YES |SYNCMEM |ACTIVE | | True | status system replication site "2": ACTIVE overall system replication status: ACTIVE Local System Replication State ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mode: PRIMARY site id: 1 site name: example-vm1
取消註冊 SAP HANA 資料庫的次要執行個體:
hdbnsutil -sr_unregister
輸出內容顯示資料庫的次要例項已成功取消註冊:
abcadm@example-vm2:/usr/sap/ABC/HDB00> hdbnsutil -sr_unregister unregistering site ... done. Performing Final Memory Release with 10 threads. Finished Final Memory Release successfully.
在 SAP HANA 系統的次要執行個體中,刪除所有租用戶資料庫並回收記錄:
停止用戶群資料庫:
hdbsql -n localhost:3INSTANCE_NUMBER13 -u SYSTEM -p "SYSTEM_DB_PASSWORD" -j "ALTER SYSTEM STOP DATABASE TENANT_DB_SID"
更改下列內容:
INSTANCE_NUMBER
:租用戶資料庫的例項編號SYSTEM_DB_PASSWORD
:系統資料庫的密碼TENANT_DB_SID
:租用戶資料庫的 SID,其中字母為大寫
刪除已停止的租用戶資料庫:
hdbsql -n localhost:3INSTANCE_NUMBER13 -u SYSTEM -p "SYSTEM_DB_PASSWORD" -j "DROP DATABASE TENANT_DB_SID"
回收記錄:
hdbsql -n localhost:3INSTANCE_NUMBER13 -u SYSTEM -p "SYSTEM_DB_PASSWORD" -j "ALTER SYSTEM RECLAIM LOG"
針對 SAP HANA 系統次要執行個體中的所有租用戶資料庫,重複執行上述步驟。
以下是成功回應的範例:
0 rows affected (overall time 9032.460 msec; server time 9032.273 msec)
停止 SAP HANA 系統的次要執行個體:
sapcontrol -nr INSTANCE_NUMBER -function Stop
遷移次要執行個體
為每個 SAP HANA 檔案系統建立磁碟。針對這個程序假設的範例系統,請建立 4 個磁碟,分別用於
/hana/data
、/hana/log
、/hana/shared
和/usr/sap
。如要設定每個檔案系統的磁碟大小,您可以使用系統
lsblk
指令輸出內容中的大小資訊。如要瞭解建議的磁碟大小、IOPS 和吞吐量,以滿足 SAP HANA 效能需求,請參閱「以 SSD 為基礎的永久磁碟和 Hyperdisk 磁碟區的最低大小」。
gcloud compute disks create USR_SAP_DISK_NAME \ --project=PROJECT_ID \ --type=USR_SAP_DISK_TYPE \ --size=USR_SAP_DISK_SIZE \ --zone=ZONE \ --provisioned-iops=USR_SAP_DISK_IOPS gcloud compute disks create SHARED_DISK_NAME \ --project=PROJECT_ID \ --type=SHARED_DISK_TYPE \ --size=SHARED_DISK_SIZE \ --zone=ZONE \ --provisioned-iops=SHARED_DISK_IOPS gcloud compute disks create DATA_DISK_NAME \ --project=PROJECT_ID \ --type=DATA_DISK_TYPE \ --size=DATA_DISK_SIZE \ --zone=ZONE \ --provisioned-iops=DATA_DISK_IOPS gcloud compute disks create LOG_DISK_NAME \ --project=PROJECT_ID \ --type=LOG_DISK_TYPE \ --size=LOG_DISK_SIZE \ --zone=ZONE \ --provisioned-iops=LOG_DISK_IOPS
更改下列內容:
USR_SAP_DISK_NAME
:您要為代管/usr/sap
磁區的磁碟設定的名稱PROJECT_ID
: Google Cloud 專案的專案 IDUSR_SAP_DISK_TYPE
:您要部署的 Hyperdisk 類型,用於代管/usr/sap
磁碟區,例如hyperdisk-extreme
。USR_SAP_DISK_SIZE
:您要為代管/usr/sap
磁碟區的磁碟設定的大小ZONE
:您要部署新磁碟的 Compute Engine 區域USR_SAP_DISK_IOPS
:您要為要用來代管/hana/data
的 Hyperdisk 設定的 IOPS。您可以根據效能需求設定 IOPS。SHARED_DISK_NAME
:您要為代管/hana/shared
磁區的磁碟設定的名稱SHARED_DISK_TYPE
:您要部署的 Hyperdisk 類型,用於代管/hana/shared
磁碟區,例如hyperdisk-extreme
。SHARED_DISK_SIZE
:您要為代管/hana/shared
磁碟區的磁碟設定的大小SHARED_DISK_IOPS
:您要為代管/hana/shared
磁碟區的磁碟設定的 IOPSDATA_DISK_NAME
:您要為代管/hana/data
磁區的磁碟設定的名稱DATA_DISK_TYPE
:您要部署的 Hyperdisk 類型,用於代管/hana/data
磁碟區,例如hyperdisk-extreme
DATA_DISK_SIZE
:您要為代管/hana/data
磁碟區的磁碟設定的大小DATA_DISK_IOPS
:您要為代管/hana/data
磁碟區的磁碟設定的 IOPSLOG_DISK_NAME
:您要為代管/hana/log
磁區的磁碟設定的名稱LOG_DISK_TYPE
:您要部署的 Hyperdisk 類型,用於代管/hana/log
磁碟區,例如hyperdisk-extreme
LOG_DISK_SIZE
:您要為代管/hana/log
磁碟區的磁碟設定的大小LOG_DISK_IOPS
:您要為代管/hana/log
磁碟區的磁碟設定的 IOPS
將您建立的磁碟附加至代管 SAP HANA 資料庫次要執行個體的 Compute Engine 執行個體:
gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \ --disk=USR_SAP_DISK_NAME \ --zone=ZONE gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \ --disk=SHARED_DISK_NAME \ --zone=ZONE gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \ --disk=DATA_DISK_NAME \ --zone=ZONE gcloud compute instances attach-disk SECONDARY_INSTANCE_NAME \ --disk=LOG_DISK_NAME \ --zone=ZONE
將
SECONDARY_INSTANCE_NAME
替換為代管 SAP HANA 資料庫次要執行個體的 Compute Engine 名稱。如要使用邏輯磁區管理 (LVM),請完成下列步驟:
為您建立及連接的新磁碟建立實體磁碟區:
pvcreate USR_SAP_PV_NAME pvcreate SHARED_PV_NAME pvcreate DATA_PV_NAME pvcreate LOG_PV_NAME
更改下列內容:
USR_SAP_PV_NAME
:您建立用於代管/usr/sap
磁碟區的磁碟實際裝置路徑SHARED_PV_NAME
:您建立用於代管/hana/shared
磁碟區的磁碟實際裝置路徑DATA_PV_NAME
:您建立用於代管/hana/data
磁碟區的磁碟實際裝置路徑LOG_PV_NAME
:您建立用於代管/hana/log
磁碟區的磁碟實際裝置路徑
建立磁碟區群組:
vgcreate vg_hana_usrsap USR_SAP_PV_NAME vgcreate vg_hana_shared SHARED_PV_NAME vgcreate vg_hana_data DATA_PV_NAME vgcreate vg_hana_log LOG_PV_NAME
建立邏輯磁碟區:
lvcreate -l 100%FREE -n usrsap vg_hana_usrsap lvcreate -l 100%FREE -n shared vg_hana_shared lvcreate -l 100%FREE -n data vg_hana_data lvcreate -l 100%FREE -n log vg_hana_log
建立檔案系統:
mkfs -t xfs /dev/vg_hana_usrsap/usrsap mkfs -t xfs /dev/vg_hana_shared/shared mkfs -t xfs /dev/vg_hana_data/data mkfs -t xfs /dev/vg_hana_log/log
為 SAP HANA 檔案系統建立臨時目錄:
mkdir -p /tmp/usr/sap mkdir -p /tmp/hana/shared mkdir -p /tmp/hana/data mkdir -p /tmp/hana/log
使用臨時目錄掛載新建立的磁碟區:
mount -o logbsize=256k /dev/vg_hana_usrsap/usrsap /tmp/usr/sap mount -o logbsize=256k /dev/vg_hana_shared/shared /tmp/hana/shared mount -o logbsize=256k /dev/vg_hana_data/data /tmp/hana/data mount -o logbsize=256k /dev/vg_hana_log/log /tmp/hana/log
將資料從來源 Persistent Disk 磁碟區傳輸至您建立的磁碟。您可以使用
rsync
、LVM 快照或任何其他方法。以下範例使用rsync
公用程式進行資料傳輸:rsync -avz --progress /usr/sap/ /tmp/usr/sap/ rsync -avz --progress /hana/shared/ /tmp/hana/shared/ rsync -avz --progress /hana/data/ /tmp/hana/data/ rsync -avz --progress /hana/log/ /tmp/hana/log/
卸載 SAP HANA 檔案系統的舊邏輯磁碟區:
umount /usr/sap umount /hana/shared umount /hana/data umount /hana/log
卸載您為 SAP HANA 檔案系統建立的暫時磁碟區:
umount /tmp/usr/sap umount /tmp/hana/shared umount /tmp/hana/data umount /tmp/hana/log
從主機代管 SAP HANA 資料庫的次要執行個體,中斷主機代管 SAP HANA 檔案系統的永久磁碟磁區:
gcloud compute instances detach-disk SECONDARY_INSTANCE_NAME --disk=SOURCE_DISK_NAME \ --zone=ZONE
將
SOURCE_DISK_NAME
替換為您要從運算執行個體中卸載的 SAP HANA 檔案系統所代管的永久磁碟磁區名稱。以根目錄使用者或具有
sudo
存取權的使用者身分更新/etc/fstab
項目。以下是更新項目的範例:/dev/vg_hana_shared/shared /hana/shared xfs defaults,nofail,logbsize=256k 0 2 /dev/vg_hana_usrsap/sap /usr/sap xfs defaults,nofail,logbsize=256k 0 2 /dev/vg_hana_data/data /hana/data xfs defaults,nofail,logbsize=256k 0 2 /dev/vg_hana_log/log /hana/log xfs defaults,nofail,logbsize=256k 0 2
掛接新建立的邏輯磁碟區:
mount -a
確認檔案系統使用的空間:
df -h
輸出結果會與下列內容相似:
# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 8.0K 4.0M 1% /dev tmpfs 638G 35M 638G 1% /dev/shm tmpfs 171G 458M 170G 1% /run tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup /dev/sdb3 30G 6.4G 24G 22% / /dev/sdb2 20M 3.0M 17M 15% /boot/efi /dev/mapper/vg_hanabackup-backup 1.7T 13G 1.7T 1% /hanabackup tmpfs 86G 0 86G 0% /run/user/0 /dev/mapper/vg_hana_usrsap-usrsap 32G 277M 32G 1% /usr/sap /dev/mapper/vg_hana_shared-shared 850G 54G 797G 7% /hana/shared /dev/mapper/vg_hana_data-data 1.1T 5.4G 1.1T 1% /hana/data /dev/mapper/vg_hana_log-log 475G 710M 475G 1% /hana/log
升級次要執行個體
以
SID_LCadm
使用者身分,將 SAP HANA 資料庫的次要執行個體註冊至 SAP HANA 系統複製:hdbnsutil -sr_register --remoteHost=PRIMARY_INSTANCE_NAME \ --remoteInstance=PRIMARY_INSTANCE_NUMBER \ --replicationMode=syncmem --operationMode=logreplay \ --name=SECONDARY_INSTANCE_NAME
更改下列內容:
PRIMARY_INSTANCE_NAME
:代管 SAP HANA 系統主要執行個體的 Compute Engine 執行個體名稱PRIMARY_INSTANCE_NUMBER
:SAP HANA 系統主要執行個體的執行個體編號SECONDARY_INSTANCE_NAME
:代管 SAP HANA 系統次要執行個體的 Compute Engine 執行個體名稱
啟動 SAP HANA 資料庫的次要執行個體:
HDB start
或者,您也可以使用
sapcontrol
指令啟動次要執行個體:sapcontrol -nr INSTANCE_NUMBER -function StartSystem
在 SAP HANA 資料庫的主要執行個體上,以
SID_LCadm
使用者身分確認 SAP HANA 系統複製功能是否處於啟用狀態:python $DIR_INSTANCE/exe/python_support/systemReplicationStatus.py
確認系統複製功能已啟用後,請將 SAP HANA 資料庫的次要執行個體設為新的主要執行個體:
crm resource move msl_SAPHana_SID_HDBINSTANCE_NUMBER SECONDARY_INSTANCE_NAME
輸出結果會與下列範例相似:
INFO: Move constraint created for msl_SAPHana_ABC_HDB00 to example-vm2 INFO: Use `crm resource clear msl_SAPHana_ABC_HDB00` to remove this constraint
檢查高可用性叢集的狀態:
crm status
輸出結果會與下列範例相似:
example-vm1:~ # crm status Status of pacemakerd: 'Pacemaker is running' (last updated 2025-02-04 10:08:16Z) Cluster Summary: * Stack: corosync * Current DC: example-vm1 (version 2.1.5+20221208.a3f44794f-150500.6.20.1-2.1.5+20221208.a3f44794f) - partition with quorum * Last updated: Tue Feb 4 10:08:16 2025 * Last change: Tue Feb 4 10:07:47 2025 by root via crm_attribute on example-vm2 * 2 nodes configured * 8 resource instances configured Node List: * Online: [ example-vm1 example-vm2 ] Full List of Resources: * STONITH-example-vm1 (stonith:fence_gce): Started example-vm2 * STONITH-example-vm2 (stonith:fence_gce): Started example-vm1 * Resource Group: g-primary: * rsc_vip_int-primary (ocf::heartbeat:IPaddr2): Started example-vm2 * rsc_vip_hc-primary (ocf::heartbeat:anything): Started example-vm2 * Clone Set: cln_SAPHanaTopology_ABC_HDB00 [rsc_SAPHanaTopology_ABC_HDB00]: * Started: [ example-vm1 example-vm2 ] * Clone Set: msl_SAPHana_ABC_HDB00 [rsc_SAPHana_ABC_HDB00] (promotable): * Masters: [ example-vm2 ] * Slaves: [ example-vm1 ]
請以根目錄使用者或具有
sudo
存取權的使用者身分,移除確保資源不會設為偏好特定 Compute Engine 執行個體的限制:crm resource clear msl_SAPHana_SID_HDBINSTANCE_NUMBER
輸出結果會與下列內容相似:
INFO: Removed migration constraints for msl_SAPHana_ABC_HDB00
遷移先前的主要執行個體
如要遷移 SAP HANA 系統的舊主執行個體,請重複執行前面章節提供的程序。
將 HA 叢集從維護模式中移除:
crm maintenance off
改用現有磁碟
如果磁碟遷移作業失敗,您可以改回使用現有的永久磁碟磁碟區,因為這些磁碟區包含遷移程序開始前的原始資料。
如要將 SAP HANA 資料庫還原至原始狀態,請執行下列步驟:
- 停止託管 SAP HANA 資料庫的 Compute Engine 執行個體。
- 卸除您建立的 Hyperdisk 磁碟區。
- 將現有的 Persistent Disk 磁碟區重新連結至 Compute Engine 執行個體。
- 啟動運算執行個體。
清除所用資源
成功將 SAP HANA 檔案系統遷移至個別磁碟後,請清理與您使用的永久磁碟磁碟區相關的資源。包括磁碟快照和磁碟本身。
如要瞭解如何刪除磁碟快照,請參閱「管理磁碟快照」。
如要刪除 SAP HANA 系統使用的永久磁碟磁區,您可以執行
gcloud compute disks delete
指令:gcloud compute disks delete SOURCE_DISK_NAME --ZONE=ZONE